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 .