نام (NAME)
criu - ایجاد
چکپوینت و
بازیابی در
فضای
کاربری (checkpoint/restore in
userspace)
خلاصه
دستور (SYNOPSIS)
criu command [option ...]
توضیحات
(DESCRIPTION)
ابزار criu
برنامهای
برای ایجاد
چکپوینت و
بازیابی
برنامههای
در حال اجرا
است. این کار
با ذخیره
وضعیت
آنها در
قالب
مجموعهای
از فایلها
(دستور dump را
ببینید) و
ساخت
فرآیندهای
معادل از
روی آن
فایلها
(دستور restore را
ببینید)
انجام
میپذیرد.
عملیات
بازیابی
میتواند
در زمانی
دیگر، بر
روی سیستمی
دیگر، یا هر
دو حالت
انجام شود.
گزینهها
(OPTIONS)
بیشتر
فلگهای
طولانی را
میتوان با
پیشوند no-
برای نقیض
کردن گزینه
به کار برد
(برای نمونه:
--isplay-stats و --0-isplay-stats).
گزینههای
عمومی (Common options)
گزینههای
عمومی برای
هر دستور
قابل اعمال
هستند.
-v[v...], --
افزایش
میزان
خروجی
(پُرگویی)
نسبت به سطح
پیشفرض. در
حالت گزینه
کوتاه،
میتوان از
چند v
استفاده
کرد که هر
کدام سطح
پُرگویی را
یک واحد
افزایش
میدهد.
-vnum, --
تنظیم
سطح
پُرگویی
روی
num. هرچه
مقدار سطح
بالاتر
باشد،
خروجی
بیشتری
تولید
خواهد شد.
سطوح زیر
در دسترس
هستند:
•-v0 بدون
خروجی؛
•-v1 فقط
خطاها؛
•-v2
موارد فوق
به همراه
هشدارها
(این سطح
پیشفرض
است)؛
•-v3
موارد فوق
به همراه
پیامهای
اطلاعاتی و
برچسبهای
زمانی؛
•-v4
موارد فوق
به همراه
جزئیات
کامل
اشکالزدایی
(debug).
--onfig file
ارسال یک
فایل
پیکربندی
مشخص به criu.
--0-efault-onfig
غیرفعالسازی
پردازش و
پارس
فایلهای
پیکربندی
پیشفرض.
--idfile
file
نوشتن
شناسه
فرآیند (pid)
وظیفه
ریشه،
سرویس یا page-server
در یک file.
-o, --
نوشتن
پیامهای
ثبت وقایع
(لاگ) درون یک
file.
--isplay-ats
در حین
عملیات dump و
همچنین restore،
ابزار
criu
آماری
مانند زمان
مورد نیاز
برای dump یا
بازیابی
فرآیند، یا
تعداد
صفحات
ثبتشده یا
بازیابیشده
را
جمعآوری
میکند. این
اطلاعات
همواره در
فایلهای
stats-dump و
stats-restore
ذخیره
میشوند و
با ابزار
crit(1)
قابل
مشاهدهاند.
گزینه
--isplay-ats
این
اطلاعات را
در انتهای
عملیات روی
کنسول چاپ
میکند.
-D, --images-ir path
استفاده
از path به
عنوان
دایرکتوری
پایه برای
جستجوی
مجموعههای
فایلهای
تصویر.
--ream
--rev-images-ir
path
استفاده
از path به
عنوان
دایرکتوری
والد برای
جستجوی
مجموعههای
فایلهای
تصویر. این
گزینه برای
dumpهای
افزایشی
کاربرد
دارد.
-W, --216
استفاده
از
دایرکتوری
dir برای قرار
دادن
فایلهای
لاگ، pidfileها و
دادههای
آماری. در
صورت عدم
تعیین، path
مربوط به
گزینه -D
استفاده
خواهد شد.
--lose fd
بستن
توصیفگر
فایل fd پیش
از انجام هر
اقدامی.
-L, --r path
مسیر به
دایرکتوری
پلاگینها.
--\nable-
تعیین
فهرستی
جداشده با
کاما از نام
سیستمهای
فایلی که
باید
بهطور
خودکار
شناسایی
شوند. مقدار
all شناسایی
خودکار را
برای همه
سیستمهای
فایل فعال
میکند.
نکته: این
گزینه
کاملاً
ایمن نیست و
با مسئولیت
خودتان از
آن استفاده
کنید.
شناسایی
خودکار
مانت سیستم
فایل فرض
میکند
نقطه مانت
میتواند
با mount(src, mountpoint, flags, options)
بازیابی
شود. هنگام
استفاده،
انتظار
میرود dump
همواره
موفق شود،
اما در صورت
نادرست
بودن
مفروضات
بازیابی،
ممکن است restore
با شکست
روبرو شود.
این گزینه
با --\xternal dev
سازگار
نیست.
--ction-ript script
افزودن
یک اسکریپت
اقدام
خارجی برای
اجرا در
مراحلی
مشخص. متغیر
محیطی
CRTOOLS_SCRIPT_ACTION
در دسترس
اسکریپت
خواهد بود
تا نوع
اقدام در
حال اجرا را
مشخص کند و
مقدار آن
میتواند
یکی از
موارد زیر
باشد:
pre-dump
اجرا پیش
از آغاز یک
dump
post-dump
اجرا پس
از تکمیل یک
dump
pre-restore
اجرا پیش
از آغاز یک
restore
post-restore
اجرا پس
از تکمیل یک
restore
pre-resume
اجرا در
حالتی که
تمامی
فرآیندها و
منابع
بازیابی
شدهاند
اما تسکها
متوقف
مانده و
منتظر
دستور
نهایی اجرا
هستند. این
مرحله
نباید
ناموفق
شود.
post-resume
فراخوانی
در پایان
کار،
هنگامی که
همه چیز
بازیابی
شده و
فرآیندها
اجرا را از
سر
گرفتهاند.
network-lock
اجرا
برای قفل
کردن شبکه
در یک فضای
نام شبکه
هدف
network-unlock
اجرا
برای باز
کردن قفل
شبکه در یک
فضای نام
شبکه هدف
setup-namespaces
اجرا به
محض ساخته
شدن تسک
ریشه همراه
با فضاهای
نام الزامی.
توجه داشته
باشید این
مرحله
زودهنگام
بازیابی
است که در آن
هنوز به جز
خود فضاهای
نام چیزی
بازیابی
نشده است.
post-setup-namespaces
فراخوانی
پس از
پیکربندی
فضاهای
نام
orphan-pts-master
فراخوانی
پس از باز
شدن و رفع
قفل pty اصلی (master).
این هوک
تنها در
حالت RPC قابل
استفاده
است و پیام
اعلان حاوی
توصیفگر
فایل مربوط
به pty مستر
است.
query-ext-files
فراخوانی
پس از متوقف
شدن درخت
فرآیند و
قفل شدن
شبکه. این
هوک تنها در
حالت RPC
کاربرد
دارد. پاسخ
اعلان حاوی
شناسههای
فایلی است
که باید به
فهرست
فایلهای
خارجی
اضافه
شوند.
--nprivileged
این
گزینه به criu
اعلام
میکند که
محدودیتهای
ناشی از
اجرا به
عنوان
کاربر
غیرریشه را
بپذیرد.
اجرای
برنامه در
حالت
غیرریشه
مستلزم آن
است که criu
حداقل
دارای
قابلیت CAP_SYS_ADMIN
یا CAP_CHECKPOINT_RESTORE
باشد. برای
جزئیات
اجرای
غیرریشه،
بخش NON-ROOT را
مطالعه
فرمایید.
-V, --
چاپ نسخه
برنامه و
خروج.
-h, --
چاپ
راهنمای
دستورات و
خروج.
pre-dump
انجام
فرآیند
پیشتخلیه
(pre-dump) که طی آن criu
یک
اسنپشات
از تغییرات
حافظه نسبت
به pre-dump قبلی
ثبت میکند.
توجه داشته
باشید که در
طول این
فرآیند، criu
همچنین کش fsnotify
را میسازد
که فرآیند
restore را تسریع
میبخشد.
دستور pre-dump
حداقل به
گزینه -t
نیاز دارد
(بخش dump در
ادامه را
ببینید).
علاوه بر
این،
گزینههای
page-server نیز قابل
تعیین
هستند.
--rack-m
فعالسازی
ردیاب
تغییرات
حافظه درون
کرنل. در
صورت عدم
ارسال این
گزینه،
ردیاب
حافظه به
صورت ضمنی
فعال خواهد
شد.
--re-ump-de=mode
دو حالت
mode برای
کارکرد
الگوریتم
پیشتخلیه
وجود دارد.
حالت splice
مبتنی بر
انگل (parasite) است،
در حالی که
حالت read بر
پایه
فراخوانی
سیستمی process_vm_readv
عمل میکند.
حالت read در
مقایسه با
حالت splice
زمان
انجماد (frozen time)
کوتاهتر و
فشار حافظه
کمتری
ایجاد
مینماید.
پیشفرض
حالت splice است.
dump
انجام
عملیات
ایجاد
چکپوینت
(checkpoint).
-t, --ree pid
ایجاد
چکپوینت
از کل درخت
فرآیند از
مبدأ شناسه
pid.
-R, ---unning
باقی
گذاشتن
تسکها در
حالت اجرا
پس از
چکپوینت،
به جای کشتن
آنها. این
گزینه
خطرناک
بوده و تنها
در صورتی
باید
استفاده
شود که
کاملاً از
پیامدهای
آن آگاه
باشید.
توجه
داشته
باشید اگر
تسکی پس از
چکپوینت
به اجرا
ادامه دهد،
ممکن است
اتصالات TCP
را تغییر
داده،
فایلها را
حذف کند یا
اقدامات
خطرناک
دیگری
انجام دهد.
بنابراین criu
نمیتواند
تضمین کند
که عملیات
restore بعدی با
موفقیت
انجام شود.
در اغلب
موارد با
استفاده از
این گزینه،
اسنپشات
سیستم فایل
باید
دستکم به
کمک
اسکریپت
اقدام post-dump
تهیه شود.
به بیان
دیگر، جز در
موارد
واقعاً
ضروری از
این گزینه
استفاده
نکنید.
-s, ---opped
باقی
گذاشتن
تسکها در
حالت
متوقفشده
(stopped) پس از
چکپوینت،
به جای کشتن
آنها.
--\xternal
type[id]:value
تخلیه
نمونهای
از یک منبع
خارجی.
ساختار کلی
عبارت است
از type منبع،
به همراه id
منبع (درون
براکت) و value
اختیاری
(همراه با
دونقطه در
ابتدا).
انواع
منابع
پشتیبانیشده
عبارتند از:
mnt, dev, file, tty, unix.
نحو به نوع
منبع
وابسته است.
برای
بازیابی
منابع
خارجی،
بسته به نوع
منبع از --\xternal
یا --inherit-fd
استفاده
میشود.
--\xternal
mnt[mountpoint]:name
تخلیه یک
bind mount خارجی با
ارجاع mountpoint، و
ذخیره آن در
تصویر تحت
شناسه name.
--\xternal mnt[]:flags
تخلیه
کلیه bind mountهای
خارجی با
تشخیص
خودکار
آنها.
پرچمهای
اختیاری flags
میتوانند
شامل m برای
تخلیه
مانتهای master
خارجی، یا s
برای تخلیه
مانتهای
مشترک (shared)
خارجی
باشند
(رفتار
پیشفرض
لغو عملیات
در صورت
یافتن چنین
مانتهایی
است). در صورت
عدم ارائه
flags، دونقطه
اختیاری
است.
--\xternal
dev[major/minor]:name
اجازه
تخلیه یک
فضای نام
مانت که
دستگاه
بلوکی
واقعی در آن
مانت شده
است. دستگاه
بلوکی با
شمارههای
major و minor خود
شناخته شده
و criu اطلاعات
آن را با
شناسه name در
تصویر
ذخیره
میکند.
--\xternal
file[mnt_id:inode]
تخلیه یک
فایل
خارجی،
یعنی فایل
بازی که از
فضای نام
مانت جاری
قابل تفکیک
و دسترسی
نیست و بدون
این گزینه
قابل تخلیه
نمیباشد.
فایل با
mnt_id
(میدانی از
/proc/pid/fdinfo/N) و
inode
(طبق خروجی
stat(2)) شناسایی
میشود.
--\xternal
tty[rdev:dev]
تخلیه TTY
خارجی،
شناساییشده
با فیلدهای
st_rdev و
st_dev
بازگرداندهشده
از
stat(2).
--\xternal unix[id]
اعلام به
criu مبنی بر
اینکه قطع
بودن یک
انتهای جفت
سوکت UNIX
(ساختهشده
با
socketpair(2)) با
شناسه
id
بلامانع
است.
--\xternal net[inode]:name
علامتگذاری
فضای نام
شبکه به
عنوان
خارجی و عدم
گنجاندن آن
در
چکپوینت.
برچسب name
میتواند
با --inherit-fd در
هنگام
بازیابی
برای تعیین
توصیفگر
فایل فضای
نام شبکه از
پیش
پیکربندیشده
به کار رود.
--\xternal pid[inode]:name
علامتگذاری
فضای نام PID به
عنوان
خارجی. این
گزینه
بعداً
میتواند
برای
بازیابی
فرآیند
درون یک
فضای نام PID
موجود
استفاده
شود. برچسب name
میتواند
برای
انتساب
فضای نام PID
دیگر در حین
بازیابی به
کمک --inherit-fd
استفاده
گردد.
--
استفاده
از cgroup freezer برای
جمعآوری
فرآیندها.
--nage-groups
جمعآوری
cgroupها درون
تصویر تا
بعداً
بازیابی
شوند. بدون
این گزینه،
criu پیکربندی
cgroupهای مرتبط
با تسک را
ذخیره
نمیکند.
--group-rops
spec
تعیین
کنترلکنندهها
و
مشخصههای
آنها برای
ذخیرهسازی
درون فایل
تصویر.
ابزار
criu
مشخصاتی
پیشفرض
برای
کنترلکنندههای
رایج دارد،
اما از آنجا
که هسته
میتواند
کنترلکنندههای
جدید اضافه
کند یا
مشخصات
آنها را
تغییر دهد،
این گزینه
امکان
تطابق با
کرنل را
فراهم
میسازد.
آرگومان
spec مشخصات
کنترلکننده
و ویژگیها
را در
ساختار
ساده YAML شرح
میدهد:
"c1":
- "strategy": "merge"
- "properties": ["a", "b"]
"c2":
- "strategy": "replace"
- "properties": ["c", "d"]
که در آن c1
و c2 نام
کنترلکنندهها
و a، b، c و d
مشخصات
آنها
هستند.
به فرمت
نقلقولها،
فاصلهها و
سطرهای
جدید توجه
کنید. مقدار
strategy تعیین
میکند در
صورتی که
کنترلکننده
از قبل به
صورت توکار
وجود داشته
باشد چه
اقدامی
صورت گیرد:
criu میتواند
مقادیر را
merge (ادغام) یا
replace (جایگزین)
کند.
برای
نمونه، خط
فرمان برای
ساختار فوق
چنین خواهد
بود:
--group-rops-
مشابه
--group-rops،
با این
تفاوت که
مشخصات از
فایل file
خوانده
میشود.
--group-ump-ontroller name
تخلیه
کنترلکننده
دارای نام name
به تنهایی،
و نادیده
گرفتن هر
کنترلکننده
دیگری که
بهطور
خودکار کشف
شده است
(معمولاً از
طریق /proc). این
گزینه
زمانی مفید
است که
بخواهید criu
برخی
کنترلکنندهها
را نادیده
بگیرد.
--group-yard path
به جای
تلاش برای
مانت کردن
cgroupها در CRIU،
مسیری به
دایرکتوری
دارای yard از
پیش ایجاد
شده cgroup ارائه
دهید. این
گزینه در
صورتی که
تمایلی به
اعطای
دسترسی CAP_SYS_ADMIN
به CRIU نداشته
باشید
کاربرد
دارد. برای
هر مانت cgroup
باید
دقیقاً یک
پوشه وجود
داشته باشد.
اگر تنها یک
کنترلکننده
در این مانت
باشد، نام
پوشه همان
نام
کنترلکننده
خواهد بود.
اگر چندین
کنترلکننده
همراه هم
مانت شده
باشند، نام
پوشه باید
آنها را با
کاما جدا
کند.
برای
نمونه، اگر
/proc/cgroups چنین
باشد:
#subsys_name hierarchy num_cgroups enabled
cpu 1 1 1
devices 2 2 1
freezer 2 2 1
میتوانید
yard مربوط به cgroup
را با
دستورات
زیر
بسازید:
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
--cp-\stablished
ایجاد
چکپوینت
از اتصالات
برقرارشده
TCP.
--cp-lose
عدم
تخلیه
وضعیت یا
مسدودسازی
اتصالات
برقرارشده TCP
(از جمله
اتصالاتی
که برقرار
بودهاند
اما اکنون
بستهاند).
این گزینه
زمانی مفید
است که قصد
بازیابی
اتصالات TCP
وجود
ندارد.
--ip-in-
نادیده
گرفتن
اتصالات در
حال
برقراری (in-flight)
در پروتکل TCP.
اگر هر
اتصال TCP که
هنوز
بهطور
کامل
برقرار
نشده است
پیدا شود، criu
این
اتصالات را
نادیده
میگیرد و
خطا صادر
نمیکند.
انتظار
میرود
پشته TCP در سمت
کلاینت
اتصال مجدد
را مدیریت
کند.
--\vasive-evices
استفاده
از هر مسیر
دیگری به
فایل
دستگاه در
صورتی که
مسیر اصلی
در دسترس
نباشد.
--age-rver
ارسال
صفحات
حافظه به
سرور صفحه
(دستور page-server را
ببینید).
--
اجبار به
تحلیل
نامها
برای
دیدهبانهای
inotify و fsnotify.
--uto-edup
حذف
دادههای
تکراری
قدیمی در
تصاویر
صفحات
مربوط به dump
قبلی. این
گزینه
متضمن حالت
dump افزایشی
است (دستور
pre-dump را
ببینید).
-l, --
تخلیه
قفلهای
فایل. لازم
است
اطمینان
حاصل شود که
تمام
کاربران
قفلهای
فایل در dump
لحاظ
شدهاند،
بنابراین
استفاده از
این گزینه
تنها برای
کانتینرهای
محصوری امن
است که
قفلهای
آنها در
خارج از
درخت
فرآیند نگه
داشته نشده
باشند.
--
پیوند
زدن مجدد
فایلهای
پیوندزدودهشده
(unlinked) در صورت
امکان
(سیستم فایل
را در حین restore
تغییر
میدهد).
--imeout number
تنظیم
محدودیت
زمانی به
ثانیه برای
جمعآوری
تسکها در
حین عملیات
dump. مهلت
زمانی
پیشفرض ۱۰
ثانیه است.
--ost-t size
تنظیم
حداکثر
اندازه
فایل
حذفشده
جهت
نگهداری
درون تصویر.
به صورت
پیشفرض تا
۱ مگابایت
مجاز است. با
این گزینه
میتوان از
قرار دادن
فایلهای
حذفشده
حجیم درون
تصاویر
خودداری
کرد.
آرگومان size
میتواند
دارای
پسوندهای
K، M یا G
(کیلو، مگا
یا
گیگابایت)
باشد.
--ost-
فعالسازی
بهینهسازی
مبتنی بر fiemap ioctl
که تعداد
فراخوانیهای
سیستمی را
هنگام
ایجاد
چکپوینت
از
فایلهای
روح (ghost) با
پراکندگی
بالا کاهش
میدهد. این
گزینه به
طور
پیشفرض
فعال است و
میتوان با
--0-ost-
-j, --ell-job
اجازه
تخلیه
جابهای خط
فرمان (shell jobs).
این گزینه
ایجاب
میکند که
تسک
بازیابیشده،
شناسه نشست
(session) و شناسه
گروه
فرآیند را
از خود criu به
ارث ببرد.
همچنین
اجازه
مهاجرت
اتصال تکی tty
خارجی را
میدهد
(برای
مهاجرت
برنامههایی
مانند top). در
صورت
استفاده در
دستور dump،
باید در
دستور restore
نیز درج
گردد.
--pu-ap [cap[,cap...]]
تعیین
قابلیتهای
CPU برای نوشتن
در فایل
تصویر.
آرگومان
فهرستی
جداشده با
کاما از
موارد زیر
است:
•none
نادیده
گرفتن کلی
قابلیتها؛
نه تصویری
ساخته
میشود و نه
بررسی در
حین
بازیابی
انجام
میگیرد؛
•fpu
بررسی
سازگاری
ماژول FPU؛
•ins
بررسی
اینکه آیا CPU
از تمام
دستورالعملهای
الزامی
پشتیبانی
میکند یا
خیر؛
•cpu
بررسی
تطابق دقیق
قابلیتهای
پردازنده؛
•all برای
تمام موارد
فوق.
به صورت
پیشفرض
این گزینه
روی fpu و ins
تنظیم است.
--group-oot [controller:]/newroot
تغییر
ریشه
کنترلکنندهای
که قرار است
تخلیه شود.
به طور
پیشفرض criu
همه
مسیرهای
زیر محل
تسکها را
تخلیه
میکند. اما
اگر یک
کانتینر
تسکهایش
را به
زیرشاخه cgroup
پایینتر
منتقل کند،
دسترسیها
روی
دایرکتوریهای
بالاتر حفظ
نمیشود که
این گزینه
مشکل را رفع
میکند.
--ges
انجام
عملیات dump
بدون نوشتن
مستقیم
صفحات
حافظه درون
فایلهای
تصویر و
آمادهسازی
برای پاسخ
به
درخواستهای
صفحه از
طریق شبکه.
در این حالت
فرض میشود
دیمن lazy-pages
متصل شده و
صفحات را به
صورت تنبل
به فضای
آدرس
فرآیند
بازیابیشده
تزریق
خواهد کرد.
--
تعیین
روش
اعتبارسنجی
فایلهای
باز، تا
اطمینان
حاصل شود
نسخه فایل
بازیابیشده
با نسخه
زمان dump یکسان
است.
حالت mode
میتواند
یکی از
موارد زیر
باشد:
filesize
بررسی
صریح
اندازه
فایل در
تمامی
اوقات.
سریعترین
و سبکترین
بررسی است.
buildid
اعتبارسنجی
فایلهای ELF
با شناسه build-ID
آنها. در
صورت عدم
دریافت build-ID،
روش chksm-first
استفاده
میشود
(پیشفرض).
--0twork-de]
تعیین
روش مورد
استفاده
برای قفل و
باز کردن
قفل شبکه.
قفل کردن
باعث دور
ریختن
بستههای TCP
بین مرحله dump
و restore میشود
تا از ارسال
بسته RST توسط
کرنل
جلوگیری به
عمل آید.
حالت mode
میتواند
یکی از
موارد زیر
باشد:
iptables
استفاده
از قوانین iptables
برای دور
ریختن
بستهها
(پیشفرض).
nftables
استفاده
از قوانین nftables
برای دور
ریختن
بستهها.
skip
عدم قفل
کردن شبکه.
اگر از --cp-close
استفاده
نشود، شبکه
باید از
خارج قفل
شود.
--llow-probes
اجازه dump
هنگامی که uprobes vma
حضور دارد.
در صورت
استفاده در
dump، این گزینه
در زمان
بازیابی
نیز الزامی
است.
یک uprobes vma بهطور خودکار توسط هسته پس از تحریک یک uprobe ایجاد
میشود. این نگاشت حتی پس از حذف uprobe نیز پاک نمیشود. بنابراین حتی اگر
فرآیندی در گذشته دارای uprobes بوده و اکنون حذف شده باشد، این گزینه
همچنان لازم است زیرا criu راهی برای تشخیص وجود uprobe فعال ندارد.
هنگام استفاده از این گزینه در بازیابی، مطمئن شوید که uprobeهای فعال روی فرآیند
هنوز فعال باشند؛ در غیر این صورت با رسیدن اجرا به نقطه uprobe، سیگنال
SIGTRAP ارسال خواهد شد.
برای نمونه، اگر uprobe روی تابع foo از فرآیند p_bar تنظیم شده باشد و دستکم
یک بار اجرا شود، هسته نگاشت uprobes vma را ایجاد میکند. پس از dump اگر uprobe
حذف شود، با رسیدن به تابع foo سیگنال SIGTRAP به p_bar ارسال شده و در صورت
عدم مدیریت سیگنال، برنامه کرش خواهد کرد.
restore
بازیابی
فرآیندهایی
که قبلاً از
آنها
چکپوینت
تهیه شده
است.
--inherit-fd fd[N]:resource
به ارث
بردن یک
توصیفگر
فایل. این
گزینه به
criu
امکان
میدهد از
توصیفگر
فایل از قبل
باز
N برای
بازیابی
منبع
مشخصشده
با
resource
استفاده
کند. از این
گزینه
میتوان
برای
بازیابی
منابع
خارجی
تخلیهشده
با
گزینههای
--\xternal نوع
file،
tty،
pid و
unix
استفاده
کرد.
آرگومان
resource
میتواند
یکی از
موارد زیر
باشد:
•tty[rdev:dev]
•pipe[inode]
•socket[inode*]*
•file[mnt_id:inode]
•path/to/file
توجه
داشته
باشید
براکتهای
مورد
استفاده در
این
آرگومان
عینی (literal) بوده
و معمولاً
باید در شل
اسکیپ
شوند.
-d, --estore-etached
جدا شدن
خود criu (حالت
detached) به محض
تکمیل
عملیات
بازیابی.
-s, ---opped
باقی
گذاشتن
تسکها در
حالت
متوقفشده
(stopped) پس از
بازیابی (به
جای از
سرگیری
اجرای
آنها).
-S, --estore-bling
بازیابی
تسک ریشه به
عنوان یک sibling
(همسطح)؛
تنها در
ترکیب با
--estore-etached معنی
دارد.
--
نوشتن
فایلهای
لاگ
جداگانه
برای هر pid.
-r, --oot path
تغییر
سیستم فایل
ریشه به path
(هنگام اجرا
درون یک
فضای نام
مانت). این
گزینه برای
بازیابی یک
فضای نام
مانت
الزامی است.
دایرکتوری
path باید یک
نقطه مانت
باشد و والد
آن نباید
روی آن مانت
شده باشد.
--\xternal
type[id]:value
بازیابی
نمونهای
از یک منبع
خارجی.
ساختار
عمومی
عبارت است
از type منبع،
به همراه id
منبع (درون
براکت) و value
اختیاری
(همراه با
دونقطه در
ابتدا).
انواع
منابع
پشتیبانیشده
عبارتند از:
mnt, dev, veth, macvlan.
برای
بازیابی
منابع
خارجی در
ارتباط با
توصیفگرهای
باز فایل
(نظیر آنچه
با
گزینههای
--\xternal نوع file، tty
و unix تخلیه
شدهاند)،
باید از
گزینه --inherit-fd
استفاده
شود.
--\xternal
mnt[name]:mountpoint
بازیابی
یک bind mount خارجی
با ارجاع name
در تصویر، و
bind-mount کردن آن از
mountpoint میزبان
به نقطه
مانت
مناسب.
--\xternal mnt[]
بازیابی
کلیه bind mountهای
خارجی
(تخلیهشده
به کمک
تشخیص
خودکار).
--\xternal
dev[name]:/dev/path
بازیابی
یک دستگاه
مانت
خارجی،
مشخصشده
با شناسه name
در تصویر،
با استفاده
از دستگاه
بلوکی
موجود /dev/path.
--\xternal
veth[inner_dev]:outer_dev@bridge
تنظیم
نام دستگاه
بیرونی VETH
(متناظر با
inner_dev
بازیابیشده)
به outer_dev. در
صورت تعیین
@bridge، دستگاه
outer_dev به آن
بریج متصل
میشود. در
صورت عدم
استفاده از
گزینه، outer_dev
توسط هسته
تولید
خواهد شد.
--\xternal
macvlan[inner_dev]:outer_dev
هنگام
بازیابی
تصویری
حاوی
دستگاه MacVLAN،
این گزینه
باید برای
تعیین
اینکه inner_dev
بازیابیشده
به کدام outer_dev
(یک دستگاه
شبکه موجود
در فضای نام
CRIU) متصل شود
استفاده
گردد.
-J, --join-0
NS:{PID|NS_FILE}[,EXTRA_OPTS]
بازیابی
درخت
فرآیند
درون یک
فضای نام
موجود. فضای
نام
میتواند
در قالب PID یا
مسیر NS_FILE
مشخص شود
(مانند: --join-ns net:12345
یا --join-ns net:/foo/bar).
مقادیر
پشتیبانیشده
برای NS
عبارتند از:
ipc, net, time, user, و uts.
این گزینه
از پیوستن
به فضای نام PID
پشتیبانی
نمیکند،
اما این کار
با استفاده
از --\xternal و --inherit-fd
مقدور است.
مقدار EXTRA_OPTS
اختیاری
است و
میتواند
برای تعیین UID
و GID برای فضای
نام کاربر
استفاده
شود.
--nage-groups [mode]
بازیابی
پیکربندی
cgroupهای مرتبط
با تسک از
روی تصویر.
کنترلکنندهها
همواره به
شیوه
خوشبینانه
بازیابی
میشوند؛
اگر از قبل
در سیستم
موجود
باشند
مجدداً
استفاده
شده و در غیر
این صورت
ایجاد
خواهند شد.
حالت mode
میتواند
یکی از
موارد زیر
باشد:
none
عدم
بازیابی
مشخصههای
cgroup و الزام به
وجود قبلی cgroup
در زمان restore.
props
بازیابی
مشخصههای
cgroup و الزام به
وجود قبلی cgroup
در سیستم.
soft
بازیابی
مشخصههای
cgroup تنها در
صورتی که cgroup
توسط criu
ایجاد شده
باشد، در
غیر این
صورت
مشخصات
بازیابی
نمیشوند
(پیشفرض).
full
همواره
تمامی cgroupها و
مشخصههای
آنها را
بازیابی
کن.
strict
بازیابی
تمام cgroupها و
مشخصات
آنها از
صفر، با
الزام به
عدم وجود
قبلی آنها
در سیستم.
ignore
نادیده
گرفتن کامل
cgroupها و
وانمود به
عدم وجود
آنها.
--group-yard path
به جای
تلاش برای
مانت cgroupها در
CRIU، مسیری به
دایرکتوری yard
مربوط به cgroup
که از قبل
ساخته شده
است ارائه
دهید. برای
توضیحات
تکمیلی بخش
dump را
ببینید.
--group-oot [controller:]/newroot
تغییر cgroup
ریشهای که
کنترلکننده
درون آن نصب
خواهد شد.
عدم ذکر
کنترلکننده
یعنی ریشه
برای تمام
کنترلکنندههای
نامشخص
اعمال
میشود.
--cp-\stablished
بازیابی
اتصالات
برقرارشده TCP
که قبلاً
تخلیه
شدهاند.
این گزینه
ایجاب
میکند که
شبکه در
فاصله بین dump
و restore قفل شده
باشد تا طرف
دیگر اتصال
صرفاً نوعی
تأخیر حس
کند.
--cp-lose
بازیابی
سوکتهای
متصل TCP در
حالت بسته.
--
تطابق
میان
نامهای
داخلی و
بیرونی
دستگاههای
veth.
-l, --
بازیابی
قفلهای
فایل از روی
تصویر.
--
تعیین
پروفایل LSM
برای
استفاده در
طول
بازیابی.
مقدار type
میتواند
apparmor یا selinux
باشد.
--
تعیین
کانتکست
مانت جدید
در هنگام
بازیابی.
این گزینه
اطلاعات
کانتکست
مانت موجود
را با مقدار
تعیینشده
جایگزین
میکند.
مانتهای
بدون گزینه
context= تغییر
نخواهند
کرد.
اگر یک
نقطه مانت
با
گزینهای
مانند:
context="system_u:object_r:container_file_t:s0:c82,c137"
چکپوینت
شده باشد،
میتوان آن
را با:
--lsm-mount-context "system_u:object_r:container_file_t:s0:c204,c495"
تغییر داد
تا نقطه
مانت با context=
جدید
بازیابی
شود. این
قابلیت در
صورت
استفاده از
selinux و لزوم
تغییر
برچسبها
در حین
بازیابی
(مثلاً
بازیابی
کانتینر
درون یک پاد
موجود)
بسیار مفید
است.
--uto-edup
به محض
بازیابی یک
صفحه، آن
صفحه از
فایل تصویر
سوراخ و پاک
(punch out) میشود.
-j, --ell-job
بازیابی
جابهای خط
فرمان (به
ارث بردن
نشست و
شناسه گروه
فرآیند از criu).
--pu-ap [cap[,cap...]]
تعیین
قابلیتهای
الزامی CPU روی
پردازندهای
که فرآیند
روی آن در
حال
بازیابی
است. برای
نقیض کردن
یک قابلیت،
پیشوند
^ به
کار میرود.
این گزینه
ایجاب
میکند که
--pu-cap در دستور
dump نیز ارسال
شده باشد،
به جز در
مورد
fpu.
آرگومان
cap
میتواند
مقادیر زیر
باشد:
all
الزام به
وجود تمامی
قابلیتها
(پیشفرض در
صورت ذکر
بدون
آرگومان،
امنترین
حالت).
cpu
الزام به
تطابق کامل
تمام
قابلیتهای
پردازنده
موجود در
تصویر با
پردازنده
زمان اجرا.
fpu
الزام به
وجود FPU
سازگار
(پیشفرض در
صورت عدم
درج گزینه
در خط
فرمان).
ins
الزام به
سازگاری در
سطح
دستورالعملهای
پردازنده.
none
نادیده
گرفتن
قابلیتها
(خطرناکترین
حالت،
رفتار
وابسته به
پیادهسازی
است).
--192
نادیده
گرفتن
بیصدا و رد
شدن از
بازیابی
مقادیر sysctl که
در سیستم
موجود
نیستند. این
گزینه
اجازه
بازیابی
روی
هستههای
قدیمیتر
یا
پیکربندیهای
بدون برخی
گزینهها
را میدهد.
--ges
بازیابی
فرآیندها
بدون پر
کردن کل
محتوای
حافظه در
ابتدای کار.
زیرساخت
مورد نیاز
برای
بارگذاری
صفحات
حافظه به
صورت
درخواستی
یا در
پسزمینه
فراهم
میشود.
نیازمند
اجرای دیمن
lazy-pages است.
--
تعیین
روش مورد
استفاده
برای
اعتبارسنجی
فایلهای
باز. مقادیر
filesize یا buildid
هستند.
--ip-
رد کردن
بررسی
مجوزهای
فایل (r/w/x برای
u/g/o) هنگام
بازیابی.
--llow-probes
الزامی
هنگام dump با
این گزینه.
برای
جزئیات به
این گزینه
در بخش dump
مراجعه
کنید.
check
بررسی
اینکه آیا
هسته از
ویژگیهای
مورد نیاز
criu برای
تخلیه و
بازیابی یک
درخت
فرآیند
پشتیبانی
میکند یا
خیر.
سه دسته
پشتیبانی
هسته وجود
دارد: دستور
criu check همواره
ویژگیهای
دسته ۱ را
بررسی
میکند مگر
آنکه --
Category 1
کاملاً
الزامی.
ویژگیهایی
مانند
پشتیبانی
از /proc/PID/map_files،
نظارت بر
سوکت NETLINK_SOCK_DIAG،
/proc/sys/kernel/ns_last_pid و
غیره.
Category 2
تنها در
موارد خاص
الزامی است.
ویژگیهایی
مانند ریمپ
AIO، /dev/net/tun و
مواردی که
تنها در
صورت
استفاده
فرآیند از
آنها
الزامی
میشوند.
Category 3
آزمایشی.
ویژگیهایی
مانند task-diag که
برای مقاصد
آزمایشی
(بیشتر حین
توسعه) به
کار
میروند.
اگر هیچ
خطا یا
هشداری
وجود
نداشته
باشد، criu
عبارت "Looks good."
را چاپ کرده
و کد خروج آن
0 خواهد بود.
فقدان یک
ویژگی دسته
۱ باعث چاپ
"Does not look good." شده و
کد خروج
غیرصفر
خواهد بود.
فقدان
ویژگیهای
دستههای ۲
و ۳ باعث چاپ
"...Looks good but" شده و
کد خروج
غیرصفر
خواهد بود.
بدون هیچ
گزینهای،
criu check
ویژگیهای
دسته ۱ را
بررسی
میکند. با
گزینههای
زیر
میتوان
این رفتار
را تغییر
داد:
--\xtra
بررسی
پشتیبانی
هسته از
ویژگیهای
دسته ۲.
--\xperimental
بررسی
پشتیبانی
هسته از
ویژگیهای
دسته ۳.
--ll
بررسی
پشتیبانی
هسته از
ویژگیهای
دستههای
۱، ۲ و ۳.
--
بررسی یک
ویژگی مشخص.
اگر name برابر
با list باشد،
فهرستی از
نامهای
معتبر
ویژگیهای
هسته چاپ
خواهد شد.
page-server
راهاندازی
criu در حالت
سرور صفحه (page
server mode).
--aemon
اجرای
سرور صفحه
به عنوان
دیمن
(فرآیند
پسزمینه).
--atus-
نوشتن \0
در FD و بستن آن
به محض
آماده شدن page-server
برای
رسیدگی به
درخواستها.
این گزینه
امکان عدم
دیمنسازی
فرآیند و
دریافت کد
خروج در
انتها را
میدهد.
نباید
همزمان با
--aemon استفاده
شود.
--ddress address
آدرس IP یا
نام میزبان page
server.
--ort
number
شماره
پورت page server.
--s-cket
fd
استفاده
از
توصیفگر
فایل
ارائهشده
به عنوان
سوکت برای
اتصالات
ورودی (در
این حالت address و
port نادیده
گرفته
میشوند).
برای
رهگیری
ترافیک یا
افزودن
رمزنگاری و
احراز هویت
مناسب است.
--ges
ارائه
حافظه
تخلیهشده
محلی به یک
دیمن راه
دور lazy-pages. در
این حالت
سرور صفحه
امکان
درخواست
صفحات
حافظه به
ترتیب
تصادفی را
میدهد.
--ls-acert file
تعیین
مسیر فایل
گواهی مرجع
صدور گواهی (CA)
معتمد برای
اعتبارسنجی
گواهی
کلاینت یا
سرور در
قالب PEM.
--ls-acrl file
تعیین
مسیر فایل
فهرست
ابطال
گواهی (CRL) در
قالب PEM.
--ls-ert file
تعیین
مسیر فایل
حاوی گواهی
X.509 در قالب PEM
جهت ارائه
به موجودیت
راه دور.
--ls-y file
تعیین
مسیر فایل
حاوی کلید
خصوصی TLS در
قالب PEM.
--ls
استفاده
از TLS برای
برقراری
ارتباطات
امن راه
دور.
lazy-pages
راهاندازی
criu در حالت
دیمن lazy-pages.
دیمن lazy-pages
مسئولیت
مدیریت
صفحهبندی
درخواستی
در سطح
کاربر برای
فرآیندهای
بازیابیشده
را بر عهده
دارد. این
دیمن
اطلاعات
لازم برای
پر کردن
صفحات
حافظه را از
restore و
دایرکتوری
چکپوینت
دریافت
میکند و
صفحات
درخواستنشده
را در
پسزمینه
تزریق
مینماید.
exec
اجرای یک
فراخوانی
سیستمی
درون
کانتکست
تسک مقصد.
این قابلیت
منسوخ شده
است؛ لطفاً
به جای آن از
Compel استفاده
نمایید.
service
راهاندازی
criu در حالت
دیمن RPC، که
در آن criu روی
سوکت به
دستورات RPC
گوش میدهد.
این حالت
برای
مواردی
مناسب است
که خود دیمن
با دسترسی
کاربر ارشد
(ریشه) اجرا
میشود اما
کلاینتها
دسترسی
ممتاز
ندارند.
dedup
آغاز
فرآیند حذف
دادههای
تکراری در
pagemap، که در آن
criu کلیه
فایلهای pagemap
را اسکن
کرده و
تعداد
ورودیها
را با
استفاده از
ارجاعات
تصویر والد
به حداقل
میرساند.
cpuinfo dump
واکشی
ویژگیهای
پردازنده
فعلی و
نوشتن
آنها در یک
فایل
تصویر.
cpuinfo check
واکشی
ویژگیهای
پردازنده
فعلی
(پردازندهای
که criu روی آن
اجرا
میشود) و
آزمایش
سازگاری
آنها با
موارد
موجود در یک
فایل
تصویر.
فایلهای
پیکربندی
(CONFIGURATION FILES)
ابزار Criu
از
فایلهای
پیکربندی
برای پرهیز
از درج مکرر
گزینهها
در خط فرمان
پشتیبانی
میکند. یک
فایل
پیکربندی
مشخص را
میتوان با
گزینه "--onfig
file" ارسال
کرد. اگر
فایلی مشخص
نشود،
فایلهای
پیکربندی
پیشفرض
/etc/criu/default.conf و $HOME/.criu/default.conf
(در صورت
وجود)
پردازش
خواهند شد.
همچنین اگر
متغیر
محیطی CRIU_CONFIG_FILE
تنظیم شده
باشد،
پردازش
میگردد.
گزینههای
ارسالشده
به CRIU از طریق
CLI، RPC یا فایل
پیکربندی
با ترتیب
زیر
ارزیابی
میشوند:
•apply_config(/etc/criu/default.conf)
•apply_config($HOME/.criu/default.conf)
•apply_config(CRIU_CONFIG_FILE)
•apply_config(--onfig file)
•apply_config(CLI) یا
apply_config(RPC)
•apply_config(RPC configuration file)
(تنها در
حالت RPC)
پردازش
فایلهای
پیکربندی
پیشفرض را
میتوان در
صورت نیاز
با "--0-efault-onfig"
غیرفعال
کرد.
فایلهای
پیکربندی
با
گزینههای
خط فرمان
ادغام شده و
امکان
بازنویسی
گزینهها
را فراهم
میکنند.
نحو
فایلهای
پیکربندی
(Configuration file syntax)
کامنتها
با علامت '#'
پشتیبانی
میشوند و
ادامه خط
نادیده
گرفته
میشود.
گزینهها
همانند
گزینههای
خط فرمان
بدون
پیشوند '--'
هستند (یک
گزینه در هر
سطر همراه
با آرگومان
مربوطه که
با فاصله
جدا شده است).
آرگومانها
را میتوان
در صورت
نیاز درون
جفتگیومه
قرار داد.
استفاده از
دستورات در
فایل
پیکربندی
مجاز نیست.
نمونهای
از فایل
پیکربندی
برای نمایش
نحو نگارش:
$ cat ~/.criu/default.conf
tcp-established
work-dir "/home/USERNAME/criu/my
# این یک کامنت است
no-restore-sibling # این کامنت دیگری است
فایلهای
پیکربندی
در حالت RPC (Configuration files
in RPC mode)
ابزار criu
نه تنها در
حالت CLI بلکه
در حالت RPC
نیز
فایلهای
پیکربندی
را بررسی
میکند.
مقادیر
فایل
پیکربندی
ابتدا
ارزیابی
میشوند،
بدین معنا
که هر
گزینهای
که از طریق RPC
تنظیم شود،
تنظیمات
فایل
پیکربندی
را رونویسی
خواهد کرد.
کلاینت RPC
همچنین
میتواند
یک فایل
پیکربندی
اضافی
تعیین کند
که پس از
گزینههای RPC
ارزیابی
خواهد شد (از
طریق "req.opts.config_file =
/path/to/file").
مقادیر این
فایل بر
تمام
گزینههای
دیگر
اولویت
خواهد داشت.
این کار
میتواند
منجر به
رفتارهای
ناخواسته
در criu شود و
تنها باید
با احتیاط
استفاده
گردد.
کاربر
غیرریشه (NON-ROOT)
ابزار criu
میتواند
به صورت
غیرریشه با
استفاده از
قابلیت CAP_SYS_ADMIN
یا با
قابلیت
CAP_CHECKPOINT_RESTORE
(معرفیشده
در هسته
لینوکس 5.9) به
کار گرفته
شود. داشتن
CAP_CHECKPOINT_RESTORE حداقل
پیشنیاز
است.
همچنین criu
به قابلیت
CAP_SYS_PTRACE یا
مقدار 0 در
/proc/sys/kernel/yama/ptrace_scope
(مستندات ptrace(2)
را ببینید)
نیاز دارد
تا بتواند
فرآیند را
جهت dump متوقف
کند.
اجرای criu
به عنوان
غیرریشه
محدودیتهای
متعددی
دارد و بسته
به فرآیند
مد نظر ممکن
است
امکانپذیر
نباشد.
علاوه بر
CAP_CHECKPOINT_RESTORE،
میتوان
قابلیتهای
بیشتری
برای
فعالسازی
ویژگیهای
تکمیلی به
criu اعطا کرد:
•CAP_NET_ADMIN
•CAP_SYS_CHROOT
•CAP_SETUID
•CAP_SYS_RESOURCE
توجه
داشته
باشید برای
برخی
عملیات،
داشتن
قابلیت در
فضایی به جز
فضای نام init
(فضای نام
ریشه/پیشفرض)
کافی نیست.
برای نمونه
جهت خواندن
symlinkها در proc/[pid]/map_files،
داشتن CAP_CHECKPOINT_RESTORE
در فضای نام
init الزامی
است.
صرفنظر
از
قابلیتها،
همواره
استفاده از
"--nprivileged" برای
پذیرش
محدودیتهای
criu در حالت
غیرریشه
الزامی
است.
مثالها (EXAMPLES)
برای
ایجاد
چکپوینت
از
برنامهای
با شناسه
فرآیند 1234 و
نوشتن تمام
فایلهای
تصویر درون
دایرکتوری
checkpoint:
criu dump -D checkpoint -t 1234
برای
بازیابی
این برنامه
همراه با
جدا شدن criu:
criu restore -d -D checkpoint
نویسنده (AUTHOR)
تیم CRIU.
حق نشر (COPYRIGHT)
Copyright (C) 2011-2016, Parallels Holdings, Inc.