'\" t .\" Title: criu .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 07/21/2026 .\" Manual: CRIU Manual .\" Source: criu 4.2.1 .\" Language: English .\" .TH "CRIU" "8" "07/21/2026" "criu 4\&.2\&.1" "CRIU Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * (re)Define some macros .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" toupper - uppercase a string (locale-aware) .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .de toupper .tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ \\$* .tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz .. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" SH-xref - format a cross-reference to an SH section .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .de SH-xref .ie n \{\ .\} .toupper \\$* .el \{\ \\$* .\} .. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" SH - level-one heading that works better for non-TTY output .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .de1 SH .\" put an extra blank line of space above the head in non-TTY output .if t \{\ .sp 1 .\} .sp \\n[PD]u .nr an-level 1 .set-an-margin .nr an-prevailing-indent \\n[IN] .fi .in \\n[an-margin]u .ti 0 .HTML-TAG ".NH \\n[an-level]" .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 \." make the size of the head bigger .ps +3 .ft B .ne (2v + 1u) .ie n \{\ .\" if n (TTY output), use uppercase .toupper \\$* .\} .el \{\ .nr an-break-flag 0 .\" if not n (not TTY), use normal case (not uppercase) \\$1 .in \\n[an-margin]u .ti 0 .\" if not n (not TTY), put a border/line under subheading .sp -.6 \l'\n(.lu' .\} .. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" SS - level-two heading that works better for non-TTY output .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .de1 SS .sp \\n[PD]u .nr an-level 1 .set-an-margin .nr an-prevailing-indent \\n[IN] .fi .in \\n[IN]u .ti \\n[SN]u .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .ps \\n[PS-SS]u \." make the size of the head bigger .ps +2 .ft B .ne (2v + 1u) .if \\n[.$] \&\\$* .. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" BB/EB - put background/screen (filled box) around block of text .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .de BB .if t \{\ .sp -.5 .br .in +2n .ll -2n .gcolor red .di BX .\} .. .de EB .if t \{\ .if "\\$2"adjust-for-leading-newline" \{\ .sp -1 .\} .br .di .in .ll .gcolor .nr BW \\n(.lu-\\n(.i .nr BH \\n(dn+.5v .ne \\n(BHu+.5v .ie "\\$2"adjust-for-leading-newline" \{\ \M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[] .\} .el \{\ \M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[] .\} .in 0 .sp -.5v .nf .BX .in .sp .5v .fi .\} .. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" BM/EM - put colored marker in margin next to block of text .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .de BM .if t \{\ .br .ll -2n .gcolor red .di BX .\} .. .de EM .if t \{\ .br .di .ll .gcolor .nr BH \\n(dn .ne \\n(BHu \M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[] .in 0 .nf .BX .in .fi .\} .. .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" criu \- ایجاد چک‌پوینت و بازیابی در فضای کاربری (checkpoint/restore in userspace) .SH "خلاصه دستور (SYNOPSIS)" .sp \fBcriu\fR \fIcommand\fR [\fIoption\fR \&...] .SH "توضیحات (DESCRIPTION)" .sp ابزار \fBcriu\fR برنامه‌ای برای ایجاد چک‌پوینت و بازیابی برنامه‌های در حال اجرا است. این کار با ذخیره وضعیت آن‌ها در قالب مجموعه‌ای از فایل‌ها (دستور \fBdump\fR را ببینید) و ساخت فرآیندهای معادل از روی آن فایل‌ها (دستور \fBrestore\fR را ببینید) انجام می‌پذیرد. عملیات بازیابی می‌تواند در زمانی دیگر، بر روی سیستمی دیگر، یا هر دو حالت انجام شود. .SH "گزینه‌ها (OPTIONS)" .sp بیشتر فلگ‌های طولانی را می‌توان با پیشوند \fBno\-\fR برای نقیض کردن گزینه به کار برد (برای نمونه: \fB\-\-\display\-stats\fR و \fB\-\-\no\-\display\-stats\fR). .SS "گزینه‌های عمومی (Common options)" .sp گزینه‌های عمومی برای هر \fIدستور\fR قابل اعمال هستند. .PP \fB\-v\fR[\fBv\fR\&...], \fB\-\-\verbosity\fR .RS 4 افزایش میزان خروجی (پُرگویی) نسبت به سطح پیش‌فرض. در حالت گزینه کوتاه، می‌توان از چند \fBv\fR استفاده کرد که هر کدام سطح پُرگویی را یک واحد افزایش می‌دهد. .RE .PP \fB\-v\fR\fInum\fR, \fB\-\-\verbosity=\fR\fInum\fR .RS 4 تنظیم سطح پُرگویی روی \fInum\fR. هرچه مقدار سطح بالاتر باشد، خروجی بیشتری تولید خواهد شد. سطوح زیر در دسترس هستند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-v0\fR بدون خروجی؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-v1\fR فقط خطاها؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-v2\fR موارد فوق به همراه هشدارها (این سطح پیش‌فرض است)؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-v3\fR موارد فوق به همراه پیام‌های اطلاعاتی و برچسب‌های زمانی؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-v4\fR موارد فوق به همراه جزئیات کامل اشکال‌زدایی (debug). .RE .RE .PP \fB\-\-\config\fR \fIfile\fR .RS 4 ارسال یک فایل پیکربندی مشخص به criu. .RE .PP \fB\-\-\no\-\default\-\config\fR .RS 4 غیرفعال‌سازی پردازش و پارس فایل‌های پیکربندی پیش‌فرض. .RE .PP \fB\-\-\pidfile\fR \fIfile\fR .RS 4 نوشتن شناسه فرآیند (pid) وظیفه ریشه، سرویس یا page-server در یک \fIfile\fR. .RE .PP \fB\-o\fR, \fB\-\-\log\-\file\fR \fIfile\fR .RS 4 نوشتن پیام‌های ثبت وقایع (لاگ) درون یک \fIfile\fR. .RE .PP \fB\-\-\display\-\stats\fR .RS 4 در حین عملیات dump و همچنین restore، ابزار \fBcriu\fR آماری مانند زمان مورد نیاز برای dump یا بازیابی فرآیند، یا تعداد صفحات ثبت‌شده یا بازیابی‌شده را جمع‌آوری می‌کند. این اطلاعات همواره در فایل‌های \fBstats-dump\fR و \fBstats-restore\fR ذخیره می‌شوند و با ابزار \fBcrit\fR(1) قابل مشاهده‌اند. گزینه \fB\-\-\display\-\stats\fR این اطلاعات را در انتهای عملیات روی کنسول چاپ می‌کند. .RE .PP \fB\-D\fR, \fB\-\-\images\-\dir\fR \fIpath\fR .RS 4 استفاده از \fIpath\fR به عنوان دایرکتوری پایه برای جستجوی مجموعه‌های فایل‌های تصویر. .RE .PP \fB\-\-\stream\fR .RS 4 ذخیره/بازیابی تصاویر با استفاده از criu-image-streamer. برای راهنمای دقیق استفاده به \m[blue]\fBhttps://github.com/checkpoint-restore/criu-image-streamer\fR\m[] مراجعه فرمایید. .RE .PP \fB\-\-\prev\-\images\-\dir\fR \fIpath\fR .RS 4 استفاده از \fIpath\fR به عنوان دایرکتوری والد برای جستجوی مجموعه‌های فایل‌های تصویر. این گزینه برای dumpهای افزایشی کاربرد دارد. .RE .PP \fB\-W\fR, \fB\-\-\work\-\dir\fR \fIdir\fR .RS 4 استفاده از دایرکتوری \fIdir\fR برای قرار دادن فایل‌های لاگ، pidfileها و داده‌های آماری. در صورت عدم تعیین، \fIpath\fR مربوط به گزینه \fB\-D\fR استفاده خواهد شد. .RE .PP \fB\-\-\close\fR \fIfd\fR .RS 4 بستن توصیف‌گر فایل \fIfd\fR پیش از انجام هر اقدامی. .RE .PP \fB\-L\fR, \fB\-\-\libdir\fR \fIpath\fR .RS 4 مسیر به دایرکتوری پلاگین‌ها. .RE .PP \fB\-\-\enable\-\fs\fR [\fIfs\fR[,\fIfs\fR\&...]] .RS 4 تعیین فهرستی جداشده با کاما از نام سیستم‌های فایلی که باید به‌طور خودکار شناسایی شوند. مقدار \fIall\fR شناسایی خودکار را برای همه سیستم‌های فایل فعال می‌کند. .sp نکته: این گزینه کاملاً ایمن نیست و با مسئولیت خودتان از آن استفاده کنید. شناسایی خودکار مانت سیستم فایل فرض می‌کند نقطه مانت می‌تواند با \fBmount(src, mountpoint, flags, options)\fR بازیابی شود. هنگام استفاده، انتظار می‌رود \fBdump\fR همواره موفق شود، اما در صورت نادرست بودن مفروضات بازیابی، ممکن است \fBrestore\fR با شکست روبرو شود. این گزینه با \fB\-\-\external\fR \fBdev\fR سازگار نیست. .RE .PP \fB\-\-\action\-\script\fR \fIscript\fR .RS 4 افزودن یک اسکریپت اقدام خارجی برای اجرا در مراحلی مشخص. متغیر محیطی \fBCRTOOLS_SCRIPT_ACTION\fR در دسترس اسکریپت خواهد بود تا نوع اقدام در حال اجرا را مشخص کند و مقدار آن می‌تواند یکی از موارد زیر باشد: .PP \fBpre\-dump\fR .RS 4 اجرا پیش از آغاز یک \fBdump\fR .RE .PP \fBpost\-dump\fR .RS 4 اجرا پس از تکمیل یک \fBdump\fR .RE .PP \fBpre\-restore\fR .RS 4 اجرا پیش از آغاز یک \fBrestore\fR .RE .PP \fBpost\-restore\fR .RS 4 اجرا پس از تکمیل یک \fBrestore\fR .RE .PP \fBpre\-resume\fR .RS 4 اجرا در حالتی که تمامی فرآیندها و منابع بازیابی شده‌اند اما تسک‌ها متوقف مانده و منتظر دستور نهایی اجرا هستند. این مرحله نباید ناموفق شود. .RE .PP \fBpost\-resume\fR .RS 4 فراخوانی در پایان کار، هنگامی که همه چیز بازیابی شده و فرآیندها اجرا را از سر گرفته‌اند. .RE .PP \fBnetwork\-lock\fR .RS 4 اجرا برای قفل کردن شبکه در یک فضای نام شبکه هدف .RE .PP \fBnetwork\-unlock\fR .RS 4 اجرا برای باز کردن قفل شبکه در یک فضای نام شبکه هدف .RE .PP \fBsetup\-namespaces\fR .RS 4 اجرا به محض ساخته شدن تسک ریشه همراه با فضاهای نام الزامی. توجه داشته باشید این مرحله زودهنگام بازیابی است که در آن هنوز به جز خود فضاهای نام چیزی بازیابی نشده است. .RE .PP \fBpost\-setup\-namespaces\fR .RS 4 فراخوانی پس از پیکربندی فضاهای نام .RE .PP \fBorphan\-pts\-master\fR .RS 4 فراخوانی پس از باز شدن و رفع قفل pty اصلی (master). این هوک تنها در حالت RPC قابل استفاده است و پیام اعلان حاوی توصیف‌گر فایل مربوط به pty مستر است. .RE .PP \fBquery\-ext\-files\fR .RS 4 فراخوانی پس از متوقف شدن درخت فرآیند و قفل شدن شبکه. این هوک تنها در حالت RPC کاربرد دارد. پاسخ اعلان حاوی شناسه‌های فایلی است که باید به فهرست فایل‌های خارجی اضافه شوند. .RE .RE .PP \fB\-\-\unprivileged\fR .RS 4 این گزینه به \fBcriu\fR اعلام می‌کند که محدودیت‌های ناشی از اجرا به عنوان کاربر غیرریشه را بپذیرد. اجرای برنامه در حالت غیرریشه مستلزم آن است که \fBcriu\fR حداقل دارای قابلیت \fBCAP_SYS_ADMIN\fR یا \fBCAP_CHECKPOINT_RESTORE\fR باشد. برای جزئیات اجرای غیرریشه، بخش \fBNON\-ROOT\fR را مطالعه فرمایید. .RE .PP \fB\-V\fR, \fB\-\-\version\fR .RS 4 چاپ نسخه برنامه و خروج. .RE .PP \fB\-h\fR, \fB\-\-\help\fR .RS 4 چاپ راهنمای دستورات و خروج. .RE .SS "pre\-dump" .sp انجام فرآیند پیش‌تخلیه (pre-dump) که طی آن \fBcriu\fR یک اسنپ‌شات از تغییرات حافظه نسبت به \fBpre\-dump\fR قبلی ثبت می‌کند. توجه داشته باشید که در طول این فرآیند، \fBcriu\fR همچنین کش fsnotify را می‌سازد که فرآیند \fBrestore\fR را تسریع می‌بخشد. دستور \fBpre\-dump\fR حداقل به گزینه \fB\-t\fR نیاز دارد (بخش \fBdump\fR در ادامه را ببینید). علاوه بر این، گزینه‌های \fBpage\-server\fR نیز قابل تعیین هستند. .PP \fB\-\-\track\-\mem\fR .RS 4 فعال‌سازی ردیاب تغییرات حافظه درون کرنل. در صورت عدم ارسال این گزینه، ردیاب حافظه به صورت ضمنی فعال خواهد شد. .RE .PP \fB\-\-\pre\-\dump\-\mode\fR=\fImode\fR .RS 4 دو حالت \fImode\fR برای کارکرد الگوریتم پیش‌تخلیه وجود دارد. حالت \fIsplice\fR مبتنی بر انگل (parasite) است، در حالی که حالت \fIread\fR بر پایه فراخوانی سیستمی process_vm_readv عمل می‌کند. حالت \fIread\fR در مقایسه با حالت \fIsplice\fR زمان انجماد (frozen time) کوتاه‌تر و فشار حافظه کمتری ایجاد می‌نماید. پیش‌فرض حالت \fIsplice\fR است. .RE .SS "dump" .sp انجام عملیات ایجاد چک‌پوینت (checkpoint). .PP \fB\-t\fR, \fB\-\-\tree\fR \fIpid\fR .RS 4 ایجاد چک‌پوینت از کل درخت فرآیند از مبدأ شناسه \fIpid\fR. .RE .PP \fB\-R\fR, \fB\-\-\leave\-\running\fR .RS 4 باقی گذاشتن تسک‌ها در حالت اجرا پس از چک‌پوینت، به جای کشتن آن‌ها. این گزینه خطرناک بوده و تنها در صورتی باید استفاده شود که کاملاً از پیامدهای آن آگاه باشید. .sp توجه داشته باشید اگر تسکی پس از چک‌پوینت به اجرا ادامه دهد، ممکن است اتصالات TCP را تغییر داده، فایل‌ها را حذف کند یا اقدامات خطرناک دیگری انجام دهد. بنابراین \fBcriu\fR نمی‌تواند تضمین کند که عملیات \fBrestore\fR بعدی با موفقیت انجام شود. در اغلب موارد با استفاده از این گزینه، اسنپ‌شات سیستم فایل باید دست‌کم به کمک اسکریپت اقدام \fBpost\-dump\fR تهیه شود. .sp به بیان دیگر، جز در موارد واقعاً ضروری از این گزینه استفاده نکنید. .RE .PP \fB\-s\fR, \fB\-\-\leave\-\stopped\fR .RS 4 باقی گذاشتن تسک‌ها در حالت متوقف‌شده (stopped) پس از چک‌پوینت، به جای کشتن آن‌ها. .RE .PP \fB\-\-\external\fR \fItype\fR\fB[\fR\fIid\fR\fB]:\fR\fIvalue\fR .RS 4 تخلیه نمونه‌ای از یک منبع خارجی. ساختار کلی عبارت است از \fItype\fR منبع، به همراه \fIid\fR منبع (درون براکت) و \fIvalue\fR اختیاری (همراه با دونقطه در ابتدا). انواع منابع پشتیبانی‌شده عبارتند از: \fBmnt\fR, \fBdev\fR, \fBfile\fR, \fBtty\fR, \fBunix\fR. نحو به نوع منبع وابسته است. برای بازیابی منابع خارجی، بسته به نوع منبع از \fB\-\-\external\fR یا \fB\-\-\inherit\-fd\fR استفاده می‌شود. .RE .PP \fB\-\-\external\fR \fBmnt[\fR\fImountpoint\fR\fB]:\fR\fIname\fR .RS 4 تخلیه یک bind mount خارجی با ارجاع \fImountpoint\fR، و ذخیره آن در تصویر تحت شناسه \fIname\fR. .RE .PP \fB\-\-\external\fR \fBmnt[]:\fR\fIflags\fR .RS 4 تخلیه کلیه bind mountهای خارجی با تشخیص خودکار آن‌ها. پرچم‌های اختیاری \fIflags\fR می‌توانند شامل \fBm\fR برای تخلیه مانت‌های master خارجی، یا \fBs\fR برای تخلیه مانت‌های مشترک (shared) خارجی باشند (رفتار پیش‌فرض لغو عملیات در صورت یافتن چنین مانت‌هایی است). در صورت عدم ارائه \fIflags\fR، دونقطه اختیاری است. .RE .PP \fB\-\-\external\fR \fBdev[\fR\fImajor\fR\fB/\fR\fIminor\fR\fB]:\fR\fIname\fR .RS 4 اجازه تخلیه یک فضای نام مانت که دستگاه بلوکی واقعی در آن مانت شده است. دستگاه بلوکی با شماره‌های \fImajor\fR و \fIminor\fR خود شناخته شده و \fBcriu\fR اطلاعات آن را با شناسه \fIname\fR در تصویر ذخیره می‌کند. .RE .PP \fB\-\-\external\fR \fBfile[\fR\fImnt_id\fR\fB:\fR\fIinode\fR\fB]\fR .RS 4 تخلیه یک فایل خارجی، یعنی فایل بازی که از فضای نام مانت جاری قابل تفکیک و دسترسی نیست و بدون این گزینه قابل تخلیه نمی‌باشد. فایل با \fImnt_id\fR (میدانی از \fB/proc/\fR\fIpid\fR\fB/fdinfo/\fR\fIN\fR) و \fIinode\fR (طبق خروجی \fBstat\fR(2)) شناسایی می‌شود. .RE .PP \fB\-\-\external\fR \fBtty[\fR\fIrdev\fR\fB:\fR\fIdev\fR\fB]\fR .RS 4 تخلیه TTY خارجی، شناسایی‌شده با فیلدهای \fBst_rdev\fR و \fBst_dev\fR بازگردانده‌شده از \fBstat\fR(2). .RE .PP \fB\-\-\external\fR \fBunix[\fR\fIid\fR\fB]\fR .RS 4 اعلام به \fBcriu\fR مبنی بر اینکه قطع بودن یک انتهای جفت سوکت UNIX (ساخته‌شده با \fBsocketpair\fR(2)) با شناسه \fIid\fR بلامانع است. .RE .PP \fB\-\-\external\fR \fBnet[\fR\fIinode\fR\fB]:\fR\fIname\fR .RS 4 علامت‌گذاری فضای نام شبکه به عنوان خارجی و عدم گنجاندن آن در چک‌پوینت. برچسب \fIname\fR می‌تواند با \fB\-\-\inherit\-fd\fR در هنگام بازیابی برای تعیین توصیف‌گر فایل فضای نام شبکه از پیش پیکربندی‌شده به کار رود. .RE .PP \fB\-\-\external\fR \fBpid[\fR\fIinode\fR\fB]:\fR\fIname\fR .RS 4 علامت‌گذاری فضای نام PID به عنوان خارجی. این گزینه بعداً می‌تواند برای بازیابی فرآیند درون یک فضای نام PID موجود استفاده شود. برچسب \fIname\fR می‌تواند برای انتساب فضای نام PID دیگر در حین بازیابی به کمک \fB\-\-\inherit\-fd\fR استفاده گردد. .RE .PP \fB\-\-\freeze\-\cgroup\fR .RS 4 استفاده از cgroup freezer برای جمع‌آوری فرآیندها. .RE .PP \fB\-\-\manage\-\cgroups\fR .RS 4 جمع‌آوری cgroupها درون تصویر تا بعداً بازیابی شوند. بدون این گزینه، \fBcriu\fR پیکربندی cgroupهای مرتبط با تسک را ذخیره نمی‌کند. .RE .PP \fB\-\-\cgroup\-\props\fR \fIspec\fR .RS 4 تعیین کنترل‌کننده‌ها و مشخصه‌های آن‌ها برای ذخیره‌سازی درون فایل تصویر. ابزار \fBcriu\fR مشخصاتی پیش‌فرض برای کنترل‌کننده‌های رایج دارد، اما از آنجا که هسته می‌تواند کنترل‌کننده‌های جدید اضافه کند یا مشخصات آن‌ها را تغییر دهد، این گزینه امکان تطابق با کرنل را فراهم می‌سازد. .sp آرگومان \fIspec\fR مشخصات کنترل‌کننده و ویژگی‌ها را در ساختار ساده YAML شرح می‌دهد: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray "c1": - "strategy": "merge" - "properties": ["a", "b"] "c2": - "strategy": "replace" - "properties": ["c", "d"] .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .sp که در آن \fIc1\fR و \fIc2\fR نام کنترل‌کننده‌ها و \fIa\fR، \fIb\fR، \fIc\fR و \fId\fR مشخصات آن‌ها هستند. .sp به فرمت نقل‌قول‌ها، فاصله‌ها و سطرهای جدید توجه کنید. مقدار \fIstrategy\fR تعیین می‌کند در صورتی که کنترل‌کننده از قبل به صورت توکار وجود داشته باشد چه اقدامی صورت گیرد: \fBcriu\fR می‌تواند مقادیر را \fBmerge\fR (ادغام) یا \fBreplace\fR (جایگزین) کند. .sp برای نمونه، خط فرمان برای ساختار فوق چنین خواهد بود: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray --cgroup-props "\"c1\":\n - \"strategy\": \"merge\"\n - \"properties\": [\"a\", \"b\"]\n \"c2\":\n - \"strategy\": \"replace\"\n - \"properties\": [\"c\", \"d\"]" .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .RE .PP \fB\-\-\cgroup\-\props\-\file\fR \fIfile\fR .RS 4 مشابه \fB\-\-\cgroup\-\props\fR، با این تفاوت که مشخصات از فایل \fIfile\fR خوانده می‌شود. .RE .PP \fB\-\-\cgroup\-\dump\-\controller\fR \fIname\fR .RS 4 تخلیه کنترل‌کننده دارای نام \fIname\fR به تنهایی، و نادیده گرفتن هر کنترل‌کننده دیگری که به‌طور خودکار کشف شده است (معمولاً از طریق \fB/proc\fR). این گزینه زمانی مفید است که بخواهید \fBcriu\fR برخی کنترل‌کننده‌ها را نادیده بگیرد. .RE .PP \fB\-\-\cgroup\-\yard\fR \fIpath\fR .RS 4 به جای تلاش برای مانت کردن cgroupها در CRIU، مسیری به دایرکتوری دارای yard از پیش ایجاد شده cgroup ارائه دهید. این گزینه در صورتی که تمایلی به اعطای دسترسی CAP_SYS_ADMIN به CRIU نداشته باشید کاربرد دارد. برای هر مانت cgroup باید دقیقاً یک پوشه وجود داشته باشد. اگر تنها یک کنترل‌کننده در این مانت باشد، نام پوشه همان نام کنترل‌کننده خواهد بود. اگر چندین کنترل‌کننده همراه هم مانت شده باشند، نام پوشه باید آن‌ها را با کاما جدا کند. .sp برای نمونه، اگر \fB/proc/cgroups\fR چنین باشد: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray #subsys_name hierarchy num_cgroups enabled cpu 1 1 1 devices 2 2 1 freezer 2 2 1 .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .sp می‌توانید yard مربوط به cgroup را با دستورات زیر بسازید: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray mkdir private_yard cd private_yard mkdir cpu mount -t cgroup -o cpu none cpu mkdir devices,freezer mount -t cgroup -o devices,freezer none devices,freezer .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .RE .PP \fB\-\-\tcp\-\established\fR .RS 4 ایجاد چک‌پوینت از اتصالات برقرارشده TCP. .RE .PP \fB\-\-\tcp\-\close\fR .RS 4 عدم تخلیه وضعیت یا مسدودسازی اتصالات برقرارشده TCP (از جمله اتصالاتی که برقرار بوده‌اند اما اکنون بسته‌اند). این گزینه زمانی مفید است که قصد بازیابی اتصالات TCP وجود ندارد. .RE .PP \fB\-\-\skip\-\in\-\flight\fR .RS 4 نادیده گرفتن اتصالات در حال برقراری (in-flight) در پروتکل TCP. اگر هر اتصال TCP که هنوز به‌طور کامل برقرار نشده است پیدا شود، \fBcriu\fR این اتصالات را نادیده می‌گیرد و خطا صادر نمی‌کند. انتظار می‌رود پشته TCP در سمت کلاینت اتصال مجدد را مدیریت کند. .RE .PP \fB\-\-\evasive\-\devices\fR .RS 4 استفاده از هر مسیر دیگری به فایل دستگاه در صورتی که مسیر اصلی در دسترس نباشد. .RE .PP \fB\-\-\page\-\server\fR .RS 4 ارسال صفحات حافظه به سرور صفحه (دستور \fBpage\-server\fR را ببینید). .RE .PP \fB\-\-\force\-\irmap\fR .RS 4 اجبار به تحلیل نام‌ها برای دیده‌بان‌های inotify و fsnotify. .RE .PP \fB\-\-\auto\-\dedup\fR .RS 4 حذف داده‌های تکراری قدیمی در تصاویر صفحات مربوط به \fBdump\fR قبلی. این گزینه متضمن حالت \fBdump\fR افزایشی است (دستور \fBpre\-dump\fR را ببینید). .RE .PP \fB\-l\fR, \fB\-\-\file\-\locks\fR .RS 4 تخلیه قفل‌های فایل. لازم است اطمینان حاصل شود که تمام کاربران قفل‌های فایل در dump لحاظ شده‌اند، بنابراین استفاده از این گزینه تنها برای کانتینرهای محصوری امن است که قفل‌های آن‌ها در خارج از درخت فرآیند نگه داشته نشده باشند. .RE .PP \fB\-\-\link\-\remap\fR .RS 4 پیوند زدن مجدد فایل‌های پیوندزدوده‌شده (unlinked) در صورت امکان (سیستم فایل را در حین \fBrestore\fR تغییر می‌دهد). .RE .PP \fB\-\-\timeout\fR \fInumber\fR .RS 4 تنظیم محدودیت زمانی به ثانیه برای جمع‌آوری تسک‌ها در حین عملیات dump. مهلت زمانی پیش‌فرض ۱۰ ثانیه است. .RE .PP \fB\-\-\ghost\-\limit\fR \fIsize\fR .RS 4 تنظیم حداکثر اندازه فایل حذف‌شده جهت نگه‌داری درون تصویر. به صورت پیش‌فرض تا ۱ مگابایت مجاز است. با این گزینه می‌توان از قرار دادن فایل‌های حذف‌شده حجیم درون تصاویر خودداری کرد. آرگومان \fIsize\fR می‌تواند دارای پسوندهای \fBK\fR، \fBM\fR یا \fBG\fR (کیلو، مگا یا گیگابایت) باشد. .RE .PP \fB\-\-\ghost\-\fiemap\fR .RS 4 فعال‌سازی بهینه‌سازی مبتنی بر fiemap ioctl که تعداد فراخوانی‌های سیستمی را هنگام ایجاد چک‌پوینت از فایل‌های روح (ghost) با پراکندگی بالا کاهش می‌دهد. این گزینه به طور پیش‌فرض فعال است و می‌توان با \fB\-\-\no\-\ghost\-\fiemap\fR آن را غیرفعال کرد. در صورت عدم پشتیبانی از fiemap، بازگشت خودکار به SEEK_HOLE/SEEK_DATA انجام می‌شود. .RE .PP \fB\-j\fR, \fB\-\-\shell\-\job\fR .RS 4 اجازه تخلیه جاب‌های خط فرمان (shell jobs). این گزینه ایجاب می‌کند که تسک بازیابی‌شده، شناسه نشست (session) و شناسه گروه فرآیند را از خود \fBcriu\fR به ارث ببرد. همچنین اجازه مهاجرت اتصال تکی tty خارجی را می‌دهد (برای مهاجرت برنامه‌هایی مانند \fBtop\fR). در صورت استفاده در دستور \fBdump\fR، باید در دستور \fBrestore\fR نیز درج گردد. .RE .PP \fB\-\-\cpu\-\cap\fR [\fIcap\fR[,\fIcap\fR\&...]] .RS 4 تعیین قابلیت‌های CPU برای نوشتن در فایل تصویر. آرگومان فهرستی جداشده با کاما از موارد زیر است: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBnone\fR نادیده گرفتن کلی قابلیت‌ها؛ نه تصویری ساخته می‌شود و نه بررسی در حین بازیابی انجام می‌گیرد؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBfpu\fR بررسی سازگاری ماژول FPU؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBins\fR بررسی اینکه آیا CPU از تمام دستورالعمل‌های الزامی پشتیبانی می‌کند یا خیر؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBcpu\fR بررسی تطابق دقیق قابلیت‌های پردازنده؛ .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBall\fR برای تمام موارد فوق. .RE .sp به صورت پیش‌فرض این گزینه روی \fBfpu\fR و \fBins\fR تنظیم است. .RE .PP \fB\-\-\cgroup\-\root\fR [\fIcontroller\fR:]/\fInewroot\fR .RS 4 تغییر ریشه کنترل‌کننده‌ای که قرار است تخلیه شود. به طور پیش‌فرض \fBcriu\fR همه مسیرهای زیر محل تسک‌ها را تخلیه می‌کند. اما اگر یک کانتینر تسک‌هایش را به زیرشاخه cgroup پایین‌تر منتقل کند، دسترسی‌ها روی دایرکتوری‌های بالاتر حفظ نمی‌شود که این گزینه مشکل را رفع می‌کند. .RE .PP \fB\-\-\lazy\-\pages\fR .RS 4 انجام عملیات dump بدون نوشتن مستقیم صفحات حافظه درون فایل‌های تصویر و آماده‌سازی برای پاسخ به درخواست‌های صفحه از طریق شبکه. در این حالت فرض می‌شود دیمن \fBlazy\-pages\fR متصل شده و صفحات را به صورت تنبل به فضای آدرس فرآیند بازیابی‌شده تزریق خواهد کرد. .RE .PP \fB\-\-\file\-\validation\fR [\fImode\fR] .RS 4 تعیین روش اعتبارسنجی فایل‌های باز، تا اطمینان حاصل شود نسخه فایل بازیابی‌شده با نسخه زمان dump یکسان است. .sp حالت \fImode\fR می‌تواند یکی از موارد زیر باشد: .PP \fBfilesize\fR .RS 4 بررسی صریح اندازه فایل در تمامی اوقات. سریع‌ترین و سبک‌ترین بررسی است. .RE .PP \fBbuildid\fR .RS 4 اعتبارسنجی فایل‌های ELF با شناسه build-ID آن‌ها. در صورت عدم دریافت build-ID، روش chksm-first استفاده می‌شود (پیش‌فرض). .RE .RE .PP \fB\-\-\network\-\lock\fR [\fImode\fR] .RS 4 تعیین روش مورد استفاده برای قفل و باز کردن قفل شبکه. قفل کردن باعث دور ریختن بسته‌های TCP بین مرحله dump و restore می‌شود تا از ارسال بسته RST توسط کرنل جلوگیری به عمل آید. .sp حالت \fImode\fR می‌تواند یکی از موارد زیر باشد: .PP \fBiptables\fR .RS 4 استفاده از قوانین iptables برای دور ریختن بسته‌ها (پیش‌فرض). .RE .PP \fBnftables\fR .RS 4 استفاده از قوانین nftables برای دور ریختن بسته‌ها. .RE .PP \fBskip\fR .RS 4 عدم قفل کردن شبکه. اگر از \fB\-\-\tcp\-close\fR استفاده نشود، شبکه باید از خارج قفل شود. .RE .RE .PP \fB\-\-\allow\-\uprobes\fR .RS 4 اجازه dump هنگامی که uprobes vma حضور دارد. در صورت استفاده در dump، این گزینه در زمان بازیابی نیز الزامی است. .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray یک uprobes vma به‌طور خودکار توسط هسته پس از تحریک یک uprobe ایجاد می‌شود. این نگاشت حتی پس از حذف uprobe نیز پاک نمی‌شود. بنابراین حتی اگر فرآیندی در گذشته دارای uprobes بوده و اکنون حذف شده باشد، این گزینه همچنان لازم است زیرا criu راهی برای تشخیص وجود uprobe فعال ندارد. .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray هنگام استفاده از این گزینه در بازیابی، مطمئن شوید که uprobeهای فعال روی فرآیند هنوز فعال باشند؛ در غیر این صورت با رسیدن اجرا به نقطه uprobe، سیگنال SIGTRAP ارسال خواهد شد. .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray برای نمونه، اگر uprobe روی تابع foo از فرآیند p_bar تنظیم شده باشد و دست‌کم یک بار اجرا شود، هسته نگاشت uprobes vma را ایجاد می‌کند. پس از dump اگر uprobe حذف شود، با رسیدن به تابع foo سیگنال SIGTRAP به p_bar ارسال شده و در صورت عدم مدیریت سیگنال، برنامه کرش خواهد کرد. .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .RE .SS "restore" .sp بازیابی فرآیندهایی که قبلاً از آن‌ها چک‌پوینت تهیه شده است. .PP \fB\-\-\inherit\-fd\fR \fBfd[\fR\fIN\fR\fB]:\fR\fIresource\fR .RS 4 به ارث بردن یک توصیف‌گر فایل. این گزینه به \fBcriu\fR امکان می‌دهد از توصیف‌گر فایل از قبل باز \fIN\fR برای بازیابی منبع مشخص‌شده با \fIresource\fR استفاده کند. از این گزینه می‌توان برای بازیابی منابع خارجی تخلیه‌شده با گزینه‌های \fB\-\-\external\fR نوع \fBfile\fR، \fBtty\fR، \fBpid\fR و \fBunix\fR استفاده کرد. .sp آرگومان \fIresource\fR می‌تواند یکی از موارد زیر باشد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBtty[\fR\fIrdev\fR\fB:\fR\fIdev\fR\fB]\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBpipe[\fR\fIinode\fR\fB]\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBsocket[\fR\fIinode\fR*]* .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBfile[\fR\fImnt_id\fR\fB:\fR\fIinode\fR\fB]\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fIpath/to/file\fR .RE .sp توجه داشته باشید براکت‌های مورد استفاده در این آرگومان عینی (literal) بوده و معمولاً باید در شل اسکیپ شوند. .RE .PP \fB\-d\fR, \fB\-\-\restore\-\detached\fR .RS 4 جدا شدن خود \fBcriu\fR (حالت detached) به محض تکمیل عملیات بازیابی. .RE .PP \fB\-s\fR, \fB\-\-\leave\-\stopped\fR .RS 4 باقی گذاشتن تسک‌ها در حالت متوقف‌شده (stopped) پس از بازیابی (به جای از سرگیری اجرای آن‌ها). .RE .PP \fB\-S\fR, \fB\-\-\restore\-\sibling\fR .RS 4 بازیابی تسک ریشه به عنوان یک sibling (هم‌سطح)؛ تنها در ترکیب با \fB\-\-\restore\-\detached\fR معنی دارد. .RE .PP \fB\-\-\log\-\pid\fR .RS 4 نوشتن فایل‌های لاگ جداگانه برای هر pid. .RE .PP \fB\-r\fR, \fB\-\-\root\fR \fIpath\fR .RS 4 تغییر سیستم فایل ریشه به \fIpath\fR (هنگام اجرا درون یک فضای نام مانت). این گزینه برای بازیابی یک فضای نام مانت الزامی است. دایرکتوری \fIpath\fR باید یک نقطه مانت باشد و والد آن نباید روی آن مانت شده باشد. .RE .PP \fB\-\-\external\fR \fItype\fR\fB[\fR\fIid\fR\fB]:\fR\fIvalue\fR .RS 4 بازیابی نمونه‌ای از یک منبع خارجی. ساختار عمومی عبارت است از \fItype\fR منبع، به همراه \fIid\fR منبع (درون براکت) و \fIvalue\fR اختیاری (همراه با دونقطه در ابتدا). انواع منابع پشتیبانی‌شده عبارتند از: \fBmnt\fR, \fBdev\fR, \fBveth\fR, \fBmacvlan\fR. برای بازیابی منابع خارجی در ارتباط با توصیف‌گرهای باز فایل (نظیر آنچه با گزینه‌های \fB\-\-\external\fR نوع \fBfile\fR، \fBtty\fR و \fBunix\fR تخلیه شده‌اند)، باید از گزینه \fB\-\-\inherit\-fd\fR استفاده شود. .RE .PP \fB\-\-\external\fR \fBmnt[\fR\fIname\fR\fB]:\fR\fImountpoint\fR .RS 4 بازیابی یک bind mount خارجی با ارجاع \fIname\fR در تصویر، و bind-mount کردن آن از \fImountpoint\fR میزبان به نقطه مانت مناسب. .RE .PP \fB\-\-\external mnt[]\fR .RS 4 بازیابی کلیه bind mountهای خارجی (تخلیه‌شده به کمک تشخیص خودکار). .RE .PP \fB\-\-\external\fR \fBdev[\fR\fIname\fR\fB]:\fR\fI/dev/path\fR .RS 4 بازیابی یک دستگاه مانت خارجی، مشخص‌شده با شناسه \fIname\fR در تصویر، با استفاده از دستگاه بلوکی موجود \fI/dev/path\fR. .RE .PP \fB\-\-\external\fR \fBveth[\fR\fIinner_dev\fR\fB]:\fR\fIouter_dev\fR\fB@\fR\fIbridge\fR .RS 4 تنظیم نام دستگاه بیرونی VETH (متناظر با \fIinner_dev\fR بازیابی‌شده) به \fIouter_dev\fR. در صورت تعیین \fB@\fR\fIbridge\fR، دستگاه \fIouter_dev\fR به آن بریج متصل می‌شود. در صورت عدم استفاده از گزینه، \fIouter_dev\fR توسط هسته تولید خواهد شد. .RE .PP \fB\-\-\external\fR \fBmacvlan[\fR\fIinner_dev\fR\fB]:\fR\fIouter_dev\fR .RS 4 هنگام بازیابی تصویری حاوی دستگاه MacVLAN، این گزینه باید برای تعیین اینکه \fIinner_dev\fR بازیابی‌شده به کدام \fIouter_dev\fR (یک دستگاه شبکه موجود در فضای نام CRIU) متصل شود استفاده گردد. .RE .PP \fB\-J\fR, \fB\-\-\join\-\ns\fR \fBNS\fR:{\fBPID\fR|\fBNS_FILE\fR}[,\fBEXTRA_OPTS\fR] .RS 4 بازیابی درخت فرآیند درون یک فضای نام موجود. فضای نام می‌تواند در قالب \fIPID\fR یا مسیر \fINS_FILE\fR مشخص شود (مانند: \fB\-\-\join\-ns net:12345\fR یا \fB\-\-\join\-ns net:/foo/bar\fR). مقادیر پشتیبانی‌شده برای \fBNS\fR عبارتند از: \fBipc\fR, \fBnet\fR, \fBtime\fR, \fBuser\fR, و \fButs\fR. این گزینه از پیوستن به فضای نام PID پشتیبانی نمی‌کند، اما این کار با استفاده از \fB\-\-\external\fR و \fB\-\-\inherit\-fd\fR مقدور است. مقدار \fIEXTRA_OPTS\fR اختیاری است و می‌تواند برای تعیین UID و GID برای فضای نام کاربر استفاده شود. .RE .PP \fB\-\-\manage\-\cgroups\fR [\fImode\fR] .RS 4 بازیابی پیکربندی cgroupهای مرتبط با تسک از روی تصویر. کنترل‌کننده‌ها همواره به شیوه خوش‌بینانه بازیابی می‌شوند؛ اگر از قبل در سیستم موجود باشند مجدداً استفاده شده و در غیر این صورت ایجاد خواهند شد. .sp حالت \fImode\fR می‌تواند یکی از موارد زیر باشد: .PP \fBnone\fR .RS 4 عدم بازیابی مشخصه‌های cgroup و الزام به وجود قبلی cgroup در زمان \fBrestore\fR. .RE .PP \fBprops\fR .RS 4 بازیابی مشخصه‌های cgroup و الزام به وجود قبلی cgroup در سیستم. .RE .PP \fBsoft\fR .RS 4 بازیابی مشخصه‌های cgroup تنها در صورتی که cgroup توسط \fBcriu\fR ایجاد شده باشد، در غیر این صورت مشخصات بازیابی نمی‌شوند (پیش‌فرض). .RE .PP \fBfull\fR .RS 4 همواره تمامی cgroupها و مشخصه‌های آن‌ها را بازیابی کن. .RE .PP \fBstrict\fR .RS 4 بازیابی تمام cgroupها و مشخصات آن‌ها از صفر، با الزام به عدم وجود قبلی آن‌ها در سیستم. .RE .PP \fBignore\fR .RS 4 نادیده گرفتن کامل cgroupها و وانمود به عدم وجود آن‌ها. .RE .RE .PP \fB\-\-\cgroup\-\yard\fR \fIpath\fR .RS 4 به جای تلاش برای مانت cgroupها در CRIU، مسیری به دایرکتوری yard مربوط به cgroup که از قبل ساخته شده است ارائه دهید. برای توضیحات تکمیلی بخش \fBdump\fR را ببینید. .RE .PP \fB\-\-\cgroup\-\root\fR [\fIcontroller\fR\fB:\fR]/\fInewroot\fR .RS 4 تغییر cgroup ریشه‌ای که کنترل‌کننده درون آن نصب خواهد شد. عدم ذکر کنترل‌کننده یعنی ریشه برای تمام کنترل‌کننده‌های نامشخص اعمال می‌شود. .RE .PP \fB\-\-\tcp\-\established\fR .RS 4 بازیابی اتصالات برقرارشده TCP که قبلاً تخلیه شده‌اند. این گزینه ایجاب می‌کند که شبکه در فاصله بین \fBdump\fR و \fBrestore\fR قفل شده باشد تا طرف دیگر اتصال صرفاً نوعی تأخیر حس کند. .RE .PP \fB\-\-\tcp\-\close\fR .RS 4 بازیابی سوکت‌های متصل TCP در حالت بسته. .RE .PP \fB\-\-\veth\-\pair\fR \fIIN\fR\fB=\fR\fIOUT\fR .RS 4 تطابق میان نام‌های داخلی و بیرونی دستگاه‌های veth. .RE .PP \fB\-l\fR, \fB\-\-\file\-\locks\fR .RS 4 بازیابی قفل‌های فایل از روی تصویر. .RE .PP \fB\-\-\lsm\-\profile\fR \fItype\fR\fB:\fR\fIname\fR .RS 4 تعیین پروفایل LSM برای استفاده در طول بازیابی. مقدار \fItype\fR می‌تواند \fBapparmor\fR یا \fBselinux\fR باشد. .RE .PP \fB\-\-\lsm\-\mount\-\context\fR \fIcontext\fR .RS 4 تعیین کانتکست مانت جدید در هنگام بازیابی. این گزینه اطلاعات کانتکست مانت موجود را با مقدار تعیین‌شده جایگزین می‌کند. مانت‌های بدون گزینه context= تغییر نخواهند کرد. .sp اگر یک نقطه مانت با گزینه‌ای مانند: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray context="system_u:object_r:container_file_t:s0:c82,c137" .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .sp چک‌پوینت شده باشد، می‌توان آن را با: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray --lsm-mount-context "system_u:object_r:container_file_t:s0:c204,c495" .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .sp تغییر داد تا نقطه مانت با \fIcontext=\fR جدید بازیابی شود. این قابلیت در صورت استفاده از \fBselinux\fR و لزوم تغییر برچسب‌ها در حین بازیابی (مثلاً بازیابی کانتینر درون یک پاد موجود) بسیار مفید است. .RE .PP \fB\-\-\auto\-\dedup\fR .RS 4 به محض بازیابی یک صفحه، آن صفحه از فایل تصویر سوراخ و پاک (punch out) می‌شود. .RE .PP \fB\-j\fR, \fB\-\-\shell\-\job\fR .RS 4 بازیابی جاب‌های خط فرمان (به ارث بردن نشست و شناسه گروه فرآیند از criu). .RE .PP \fB\-\-\cpu\-\cap\fR [\fIcap\fR[,\fIcap\fR\&...]] .RS 4 تعیین قابلیت‌های الزامی CPU روی پردازنده‌ای که فرآیند روی آن در حال بازیابی است. برای نقیض کردن یک قابلیت، پیشوند \fB^\fR به کار می‌رود. این گزینه ایجاب می‌کند که \fB\-\-\cpu\-cap\fR در دستور \fBdump\fR نیز ارسال شده باشد، به جز در مورد \fBfpu\fR. آرگومان \fIcap\fR می‌تواند مقادیر زیر باشد: .PP \fBall\fR .RS 4 الزام به وجود تمامی قابلیت‌ها (پیش‌فرض در صورت ذکر بدون آرگومان، امن‌ترین حالت). .RE .PP \fBcpu\fR .RS 4 الزام به تطابق کامل تمام قابلیت‌های پردازنده موجود در تصویر با پردازنده زمان اجرا. .RE .PP \fBfpu\fR .RS 4 الزام به وجود FPU سازگار (پیش‌فرض در صورت عدم درج گزینه در خط فرمان). .RE .PP \fBins\fR .RS 4 الزام به سازگاری در سطح دستورالعمل‌های پردازنده. .RE .PP \fBnone\fR .RS 4 نادیده گرفتن قابلیت‌ها (خطرناک‌ترین حالت، رفتار وابسته به پیاده‌سازی است). .RE .RE .PP \fB\-\-\weak\-\sysctls\fR .RS 4 نادیده گرفتن بی‌صدا و رد شدن از بازیابی مقادیر sysctl که در سیستم موجود نیستند. این گزینه اجازه بازیابی روی هسته‌های قدیمی‌تر یا پیکربندی‌های بدون برخی گزینه‌ها را می‌دهد. .RE .PP \fB\-\-\lazy\-\pages\fR .RS 4 بازیابی فرآیندها بدون پر کردن کل محتوای حافظه در ابتدای کار. زیرساخت مورد نیاز برای بارگذاری صفحات حافظه به صورت درخواستی یا در پس‌زمینه فراهم می‌شود. نیازمند اجرای دیمن \fBlazy\-pages\fR است. .RE .PP \fB\-\-\file\-\validation\fR [\fImode\fR] .RS 4 تعیین روش مورد استفاده برای اعتبارسنجی فایل‌های باز. مقادیر \fBfilesize\fR یا \fBbuildid\fR هستند. .RE .PP \fB\-\-\skip\-\file\-\rwx\-\check\fR .RS 4 رد کردن بررسی مجوزهای فایل (r/w/x برای u/g/o) هنگام بازیابی. .RE .PP \fB\-\-\allow\-\uprobes\fR .RS 4 الزامی هنگام dump با این گزینه. برای جزئیات به این گزینه در بخش dump مراجعه کنید. .RE .SS "check" .sp بررسی اینکه آیا هسته از ویژگی‌های مورد نیاز \fBcriu\fR برای تخلیه و بازیابی یک درخت فرآیند پشتیبانی می‌کند یا خیر. .sp سه دسته پشتیبانی هسته وجود دارد: دستور \fBcriu check\fR همواره ویژگی‌های دسته ۱ را بررسی می‌کند مگر آنکه \fB\-\-\feature\fR مشخص شده باشد. .PP \fBCategory 1\fR .RS 4 کاملاً الزامی. ویژگی‌هایی مانند پشتیبانی از \fB/proc/PID/map_files\fR، نظارت بر سوکت \fBNETLINK_SOCK_DIAG\fR، \fB/proc/sys/kernel/ns_last_pid\fR و غیره. .RE .PP \fBCategory 2\fR .RS 4 تنها در موارد خاص الزامی است. ویژگی‌هایی مانند ریمپ AIO، \fB/dev/net/tun\fR و مواردی که تنها در صورت استفاده فرآیند از آن‌ها الزامی می‌شوند. .RE .PP \fBCategory 3\fR .RS 4 آزمایشی. ویژگی‌هایی مانند \fBtask-diag\fR که برای مقاصد آزمایشی (بیشتر حین توسعه) به کار می‌روند. .RE .sp اگر هیچ خطا یا هشداری وجود نداشته باشد، \fBcriu\fR عبارت "Looks good." را چاپ کرده و کد خروج آن 0 خواهد بود. .sp فقدان یک ویژگی دسته ۱ باعث چاپ "Does not look good." شده و کد خروج غیرصفر خواهد بود. .sp فقدان ویژگی‌های دسته‌های ۲ و ۳ باعث چاپ "...Looks good but" شده و کد خروج غیرصفر خواهد بود. .sp بدون هیچ گزینه‌ای، \fBcriu check\fR ویژگی‌های دسته ۱ را بررسی می‌کند. با گزینه‌های زیر می‌توان این رفتار را تغییر داد: .PP \fB\-\-\extra\fR .RS 4 بررسی پشتیبانی هسته از ویژگی‌های دسته ۲. .RE .PP \fB\-\-\experimental\fR .RS 4 بررسی پشتیبانی هسته از ویژگی‌های دسته ۳. .RE .PP \fB\-\-\all\fR .RS 4 بررسی پشتیبانی هسته از ویژگی‌های دسته‌های ۱، ۲ و ۳. .RE .PP \fB\-\-\feature\fR \fIname\fR .RS 4 بررسی یک ویژگی مشخص. اگر \fIname\fR برابر با \fBlist\fR باشد، فهرستی از نام‌های معتبر ویژگی‌های هسته چاپ خواهد شد. .RE .SS "page\-server" .sp راه‌اندازی \fBcriu\fR در حالت سرور صفحه (page server mode). .PP \fB\-\-\daemon\fR .RS 4 اجرای سرور صفحه به عنوان دیمن (فرآیند پس‌زمینه). .RE .PP \fB\-\-\status\-\fd\fR .RS 4 نوشتن \e0 در FD و بستن آن به محض آماده شدن page-server برای رسیدگی به درخواست‌ها. این گزینه امکان عدم دیمن‌سازی فرآیند و دریافت کد خروج در انتها را می‌دهد. نباید هم‌زمان با \-\-\daemon استفاده شود. .RE .PP \fB\-\-\address\fR \fIaddress\fR .RS 4 آدرس IP یا نام میزبان page server. .RE .PP \fB\-\-\port\fR \fInumber\fR .RS 4 شماره پورت page server. .RE .PP \fB\-\-\ps\-\socket\fR \fIfd\fR .RS 4 استفاده از توصیف‌گر فایل ارائه‌شده به عنوان سوکت برای اتصالات ورودی (در این حالت address و port نادیده گرفته می‌شوند). برای رهگیری ترافیک یا افزودن رمزنگاری و احراز هویت مناسب است. .RE .PP \fB\-\-\lazy\-\pages\fR .RS 4 ارائه حافظه تخلیه‌شده محلی به یک دیمن راه دور \fBlazy\-pages\fR. در این حالت سرور صفحه امکان درخواست صفحات حافظه به ترتیب تصادفی را می‌دهد. .RE .PP \fB\-\-\tls\-\cacert\fR \fIfile\fR .RS 4 تعیین مسیر فایل گواهی مرجع صدور گواهی (CA) معتمد برای اعتبارسنجی گواهی کلاینت یا سرور در قالب PEM. .RE .PP \fB\-\-\tls\-\cacrl\fR \fIfile\fR .RS 4 تعیین مسیر فایل فهرست ابطال گواهی (CRL) در قالب PEM. .RE .PP \fB\-\-\tls\-\cert\fR \fIfile\fR .RS 4 تعیین مسیر فایل حاوی گواهی X.509 در قالب PEM جهت ارائه به موجودیت راه دور. .RE .PP \fB\-\-\tls\-\key\fR \fIfile\fR .RS 4 تعیین مسیر فایل حاوی کلید خصوصی TLS در قالب PEM. .RE .PP \fB\-\-\tls\fR .RS 4 استفاده از TLS برای برقراری ارتباطات امن راه دور. .RE .SS "lazy\-pages" .sp راه‌اندازی \fBcriu\fR در حالت دیمن lazy-pages. .sp دیمن \fBlazy\-pages\fR مسئولیت مدیریت صفحه‌بندی درخواستی در سطح کاربر برای فرآیندهای بازیابی‌شده را بر عهده دارد. این دیمن اطلاعات لازم برای پر کردن صفحات حافظه را از \fBrestore\fR و دایرکتوری چک‌پوینت دریافت می‌کند و صفحات درخواست‌نشده را در پس‌زمینه تزریق می‌نماید. .SS "exec" .sp اجرای یک فراخوانی سیستمی درون کانتکست تسک مقصد. این قابلیت منسوخ شده است؛ لطفاً به جای آن از \fBCompel\fR استفاده نمایید. .SS "service" .sp راه‌اندازی \fBcriu\fR در حالت دیمن RPC، که در آن \fBcriu\fR روی سوکت به دستورات RPC گوش می‌دهد. این حالت برای مواردی مناسب است که خود دیمن با دسترسی کاربر ارشد (ریشه) اجرا می‌شود اما کلاینت‌ها دسترسی ممتاز ندارند. .SS "dedup" .sp آغاز فرآیند حذف داده‌های تکراری در pagemap، که در آن \fBcriu\fR کلیه فایل‌های pagemap را اسکن کرده و تعداد ورودی‌ها را با استفاده از ارجاعات تصویر والد به حداقل می‌رساند. .SS "cpuinfo dump" .sp واکشی ویژگی‌های پردازنده فعلی و نوشتن آن‌ها در یک فایل تصویر. .SS "cpuinfo check" .sp واکشی ویژگی‌های پردازنده فعلی (پردازنده‌ای که \fBcriu\fR روی آن اجرا می‌شود) و آزمایش سازگاری آن‌ها با موارد موجود در یک فایل تصویر. .SH "فایل‌های پیکربندی (CONFIGURATION FILES)" .sp ابزار \fBCriu\fR از فایل‌های پیکربندی برای پرهیز از درج مکرر گزینه‌ها در خط فرمان پشتیبانی می‌کند. یک فایل پیکربندی مشخص را می‌توان با گزینه "\fB\-\-\config\fR \fIfile\fR" ارسال کرد. اگر فایلی مشخص نشود، فایل‌های پیکربندی پیش‌فرض \fI/etc/criu/default.conf\fR و \fI$HOME/.criu/default.conf\fR (در صورت وجود) پردازش خواهند شد. همچنین اگر متغیر محیطی CRIU_CONFIG_FILE تنظیم شده باشد، پردازش می‌گردد. .sp گزینه‌های ارسال‌شده به CRIU از طریق CLI، RPC یا فایل پیکربندی با ترتیب زیر ارزیابی می‌شوند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} apply_config(/etc/criu/default.conf) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} apply_config($HOME/.criu/default.conf) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} apply_config(CRIU_CONFIG_FILE) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} apply_config(\fB\-\-\config\fR \fIfile\fR) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} apply_config(CLI) یا apply_config(RPC) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} apply_config(RPC configuration file) (تنها در حالت RPC) .RE .sp پردازش فایل‌های پیکربندی پیش‌فرض را می‌توان در صورت نیاز با "\fB\-\-\no\-\default\-\config\fR" غیرفعال کرد. فایل‌های پیکربندی با گزینه‌های خط فرمان ادغام شده و امکان بازنویسی گزینه‌ها را فراهم می‌کنند. .SS "نحو فایل‌های پیکربندی (Configuration file syntax)" .sp کامنت‌ها با علامت '#' پشتیبانی می‌شوند و ادامه خط نادیده گرفته می‌شود. گزینه‌ها همانند گزینه‌های خط فرمان بدون پیشوند '--' هستند (یک گزینه در هر سطر همراه با آرگومان مربوطه که با فاصله جدا شده است). آرگومان‌ها را می‌توان در صورت نیاز درون جفت‌گیومه قرار داد. استفاده از دستورات در فایل پیکربندی مجاز نیست. .sp نمونه‌ای از فایل پیکربندی برای نمایش نحو نگارش: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray $ cat ~/.criu/default.conf tcp-established work-dir "/home/USERNAME/criu/my \"work\" directory" # این یک کامنت است no-restore-sibling # این کامنت دیگری است .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .SS "فایل‌های پیکربندی در حالت RPC (Configuration files in RPC mode)" .sp ابزار \fBcriu\fR نه تنها در حالت CLI بلکه در حالت RPC نیز فایل‌های پیکربندی را بررسی می‌کند. مقادیر فایل پیکربندی ابتدا ارزیابی می‌شوند، بدین معنا که هر گزینه‌ای که از طریق RPC تنظیم شود، تنظیمات فایل پیکربندی را رونویسی خواهد کرد. .sp کلاینت RPC همچنین می‌تواند یک فایل پیکربندی اضافی تعیین کند که پس از گزینه‌های RPC ارزیابی خواهد شد (از طریق "req.opts.config_file = \fI/path/to/file\fR"). مقادیر این فایل بر تمام گزینه‌های دیگر اولویت خواهد داشت. \fBاین کار می‌تواند منجر به رفتارهای ناخواسته در criu شود و تنها باید با احتیاط استفاده گردد.\fR .SH "کاربر غیرریشه (NON\-ROOT)" .sp ابزار \fBcriu\fR می‌تواند به صورت غیرریشه با استفاده از قابلیت \fBCAP_SYS_ADMIN\fR یا با قابلیت \fBCAP_CHECKPOINT_RESTORE\fR (معرفی‌شده در هسته لینوکس 5.9) به کار گرفته شود. داشتن \fBCAP_CHECKPOINT_RESTORE\fR حداقل پیش‌نیاز است. .sp همچنین \fBcriu\fR به قابلیت \fBCAP_SYS_PTRACE\fR یا مقدار 0 در \fB/proc/sys/kernel/yama/ptrace_scope\fR (مستندات \fBptrace\fR(2) را ببینید) نیاز دارد تا بتواند فرآیند را جهت dump متوقف کند. .sp اجرای \fBcriu\fR به عنوان غیرریشه محدودیت‌های متعددی دارد و بسته به فرآیند مد نظر ممکن است امکان‌پذیر نباشد. .sp علاوه بر \fBCAP_CHECKPOINT_RESTORE\fR، می‌توان قابلیت‌های بیشتری برای فعال‌سازی ویژگی‌های تکمیلی به \fBcriu\fR اعطا کرد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBCAP_NET_ADMIN\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBCAP_SYS_CHROOT\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBCAP_SETUID\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBCAP_SYS_RESOURCE\fR .RE .sp توجه داشته باشید برای برخی عملیات، داشتن قابلیت در فضایی به جز فضای نام init (فضای نام ریشه/پیش‌فرض) کافی نیست. برای نمونه جهت خواندن symlinkها در proc/[pid]/map_files، داشتن CAP_CHECKPOINT_RESTORE در فضای نام init الزامی است. .sp صرف‌نظر از قابلیت‌ها، همواره استفاده از "\fB\-\-\unprivileged\fR" برای پذیرش محدودیت‌های \fBcriu\fR در حالت غیرریشه الزامی است. .SH "مثال‌ها (EXAMPLES)" .sp برای ایجاد چک‌پوینت از برنامه‌ای با شناسه فرآیند \fB1234\fR و نوشتن تمام فایل‌های تصویر درون دایرکتوری \fBcheckpoint\fR: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray criu dump -D checkpoint -t 1234 .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .sp برای بازیابی این برنامه همراه با جدا شدن criu: .sp .if n \{\ .RS 4 .\} .fam C .ps -1 .nf .BB lightgray criu restore -d -D checkpoint .EB lightgray .fi .fam .ps +1 .if n \{\ .RE .\} .SH "نویسنده (AUTHOR)" .sp تیم CRIU. .SH "حق نشر (COPYRIGHT)" .sp Copyright (C) 2011-2016, Parallels Holdings, Inc.