لینوکس ۳۰۵؛ شب ۲۲: snapshot و backup قابل بازیابی VM
فهرست نوشته
snapshot روی همان disk، backup خارج host نیست. امشب ابتدا backup سرد قابل فهم میگیریم و سپس مرز external snapshot و consistency را بررسی میکنیم.
این جلسه بخشی از دورهٔ لینوکس ۳۰۵ در ۶۰ شب است.
جایگاه در دوره: هدفهای 351.4 آزمون 305-300.
محیط: lab01 با marker در root و disk داده، فضای backup مستقل؛ shutdown پنجرهٔ توقف دارد و data واقعی نداریم.
virsh -c qemu:///system domblklist lab01 --details
virsh -c qemu:///system shutdown lab01
virsh -c qemu:///system domstate lab01
virsh -c qemu:///system dumpxml lab01 --inactive > ~/lpic305/evidence/lab01-backup.xml
فقط بعد از shut off، همهٔ diskهای writable را با مالکیت/مجوز محدود کپی کن؛ seed، XML و NVRAM در شاخهٔ UEFI نیز همراه نسخهٔ درست لازماند. copy سرد مستقل root را در ~/lpic305/images/lab01-cold.qcow2 نگه دار و آن را COLD_IMAGE بنام. فایل مقصد باید جدید و خواندنی فقط برای حساب آزمایشگاه باشد؛ qcow2 میتواند راز guest داشته باشد.
snapshot خارجی#
external snapshot نوشتن را به overlay تازه میبرد و backing chain میسازد. snapshot-create-as با disk-only/atomic و diskspec نیاز به فهرست دقیق همهٔ diskها دارد؛ با disk دادهٔ افزوده تنها vda را ثبت نکن. quiesce به Guest Agent و وضعیت برنامه نیاز دارد و crash-consistent با application-consistent یکسان نیست.
بعد از backup سرد، در یک شاخهٔ دورریختنی lab01 را روشن کن. domblklist --details
باید vda را root، vdb را seed فقطخواندنی و vdc را داده نشان دهد؛ در غیر این
صورت فرمان را با layout واقعی تطبیق بده. مسیر دو overlay زیر باید تازه و ناموجود باشد:
virsh -c qemu:///system snapshot-create-as lab01 external305 \
--disk-only --atomic \
--diskspec vda,snapshot=external,file=/var/lib/libvirt/images/lpic305/lab01-root-external.qcow2 \
--diskspec vdb,snapshot=no \
--diskspec vdc,snapshot=external,file=/var/lib/libvirt/images/lpic305-pool/lab01-data-external.qcow2
virsh -c qemu:///system snapshot-list lab01
virsh -c qemu:///system domblklist lab01 --details
این نمونه بدون --quiesce است و تضمین سازگاری برنامه نمیدهد. بعد از موفقیت، دو
disk writable باید به overlayهای تازه اشاره کنند؛ فایلهای اصلی backing هستند و
پاک نمیشوند. خطای atomic را با حذف دستی فایلها یا تکرار روی همان مسیر نادیده نگیر؛
ابتدا وضعیت واقعی را بررسی کن.
blockcommit/pivot و blockpull ممکن است chain زنده را تغییر دهند. برای بازگشت همین شاخه، مهمان را کامل خاموش کن و با XML و کپیهای backup سرد نمونهٔ مستقلی بساز؛ تغییرات بعد از snapshot در آن backup نیستند. قبل هر پاکسازی، وابستگی active و inactive XML را بررسی کن. snapshot metadata بهتنهایی دادهٔ همهٔ diskها نیست.
restore واقعی#
در Clone خاموش و network isolated، از copy مستقل diskها و XML دارای UUID/MAC جدید یک domain بازیابیشده بساز. UUID/MAC تکراری را در شبکهٔ مشترک روشن نکن؛ guest hostname، machine-id و کلیدهایش هم باید متناسب شوند.
آزمون: boot، login، marker root و marker disk داده را ببین. داشتن فایل backup بدون boot/دادهٔ صحیح، نتیجهٔ restore موفق نیست.
بازگشت: domain اصلی را فقط از disk اصلی سالم روشن کن؛ object بازیابی را shutdown و جدا نگه دار. backup را با رمزگذاری و retention خارج host ذخیره کن.
منبع: snapshot XML ، backup API ، virsh block/snapshot .