پایان دوره زمانی است که بتوانی یک محیط تازه بسازی، خرابی محدود را تشخیص بدهی و داده را برگردانی. امشب نتیجهٔ شصت جلسه را در یک تحویل کوچک و قابل تکرار جمع می‌کنیم.

این جلسه بخشی از دورهٔ لینوکس ۳۰۵ در ۶۰ شب است.

جایگاه در دوره: هدف‌های 351.1، 351.2، 351.3، 351.4، 351.5، 352.1، 352.2، 352.3، 352.4، 353.1، 353.2، 353.3، 353.4 آزمون 305-300.

محیط: فقط Cloneهای دوره و دادهٔ ساختگی؛ VMهای Xen، LXD، Docker و Vagrant لازم نیست هم‌زمان روشن باشند. پروژهٔ نهایی به حساب cloud پولی نیاز ندارد.

تحویل چه چیزی است؟#

یک VM با libvirt و cloud-init، یک system container در LXD و یک برنامهٔ HTTP دارای image خودت در Docker تحویل بده. برای هرکدام نسخه، هویت، شبکه، سقف resource، روش ورود و محل داده را ثبت کن. نقش برنامه و مسیر درخواست را روی کاغذ رسم کن؛ صرف روشن بودن سه object کافی نیست.

بخششاهد پذیرش
VMboot، ورود key-only، XML و disk مستقل، marker داده
LXDconfig مؤثر profile، محدودیت، شبکه و restore روی نام تازه
Dockerdigest image، UID غیرroot، probe HTTP و volume مستقل
provisioningtemplate Packer و seed قابل بازتولید، خروجی تازهٔ آزموده‌شده
آزمایشگاه تکراریVagrantfile و اجرای دوبارهٔ provisioner بدون خرابی config

راهنمای ساخت دوباره را برای کسی بنویس که VM آمادهٔ تو را ندارد. مقادیر واقعی checksum و version را نگه دار؛ password، private key، token و state حساس وارد تحویل عمومی نشوند.

سه خرابی کنترل‌شده#

روی guest دورریختنی، NIC برنامه را از شبکهٔ درست جدا کن؛ روی container تازه، mount را readonly کن؛ و روی cloud-init نمونهٔ تازه، YAML نامعتبر بده. هر بار فقط یک متغیر تغییر کند. پیش‌بینی، مشاهده و اصلاح را ثبت کن: آیا خطا از route، permission یا config است؟ افزایش timeout و اعطای اختیار کامل توضیح علت نیست.

برای بازگشت، config قبلی همان NIC، mount یا seed را استفاده کن. پس از اصلاح، آزمون مثبت و منفی بگیر: درخواست مجاز جواب دهد و دسترسی بیرونی که در طرح مجاز نیست همچنان رد شود. اصل VM یا volume داده را برای این آزمایش خراب نکن.

بازیابی را واقعاً اجرا کن#

backup سرد همهٔ diskها و XML را در مقصد خصوصی جدا نگه دار. VM بازیابی‌شده با هویت مناسب و شبکهٔ isolated بوت شود؛ marker root و disk داده را بخوان. در LXD، root و custom volume را جدا restore کن؛ در Docker نیز archive داده را در volume جدید آزمون کن. checksum درست، جای آزمون boot و محتوا را نمی‌گیرد.

migration را فقط با دو host سازگار اجرا کن؛ در غیر این صورت پیش‌نیاز و محدودیت را «طراحی‌شده» گزارش بده. شکست مبهم انتقال باید قبل روشن کردن دوبارهٔ source، از نظر اجرای مقصد و مالکیت disk بررسی شود.

مرور آزمون با شکاف‌های روشن#

برای هر هدف جدول راهنما، یک تعریف، یک فرمان/فایل و یک failure قابل توضیح بنویس. Xen را با Dom0/DomU و xl، QEMU را با acceleration/monitor/Agent، libvirt را با URI/XML/network/storage و container را با namespace/cgroup/capability مرور کن. در deployment، فرق Packer، Terraform، cloud-init و Vagrant را از روی artifact و lifecycle توضیح بده.

به هر بخش یکی از وضعیت‌های «مطالعه‌شده»، «اجراشده» یا «تأییدشده» بده. خواندن template برابر build موفق نیست و توضیح معماری cloud برابر استقرار OpenStack نیست. بخش آزموده‌نشده را با برنامهٔ مشخص تکمیل کن؛ تعداد ابزار نصب‌شده معیار پایان دوره نیست.

منبع: اهداف رسمی LPIC-305 ، backup در libvirt ، backup در LXD ، volumeهای Docker .