راهنمای چگونگی مدیریت Snapshot VMware ها
- 21 خرداد |
- مهسا محمودی راد |
- مجازی سازی مراکز داده

قابلیت Snapshot یکی از بهترین ویژگیهای محیط VMware vSphere است و در عین حال میتواند یکی از بدترین ویژگیهای این محیط نیز باشد. بهترین یا بدترین ویژگی بودن کاملا بستگی به نحوه مدیریت Snapshotها و درک هدف آنها دارد. این قابلیت عملکرد و قابلیت بسیار خوبی را برای مدیران vSphere فراهم مینماید تا State یک Virtual Machine خاص را مدیریت کند. درحالی که Snapshot مفهومی است که اکثر ما با آن آشنا هستیم، بیایید چگونگی نحوه مدیریت آنها و بهترین روشها، مفاهیم، ویژگیها و راههایی را که میتوان از این ویژگی بهطور موثر استفاده کرد را بررسی نماییم.
قابلیت VMware Snapshot چیست؟
بدیهی است که وقتی به اصطلاح Snapshot فکر میکنیم به دوربین یا عکسی فکر میکنیم که لحظهای در زمان را ثبت میکند و وضعیتی که چگونه همهچی در عکس دقیقا همانطور که در لحظه عکسبرداری ظاهر میشد، وجود دارد. ما مینوانیم VMware snapshot را دقیقا به همین شکل در نظر بگیریم. این قابلیت این امکان را فراهم مینماید که وضعیت یک Virtual Machine در حال اجرا را، دقیقا همانطور که در لحظه گرفتن Snapshot وجود داشت، ثبت نماییم. حتی میتواند شامل memory footprint یک virtual machine باشد. همچنین وضعیت virtual hardware و تنظیمات آن را نیز ثبت کند.
مزایای VMware snapshot چیست؟
همانطور که احتمالا میتوانید تصور کنید، VMware snapshot قابلیتهای بسیار خوبی را در زمینه development و سایر موارد مورد استفاده ارائه میدهد. در حقیقت snapshotها از کجا وارد عمل میشود؟ این قابلیت در واقع برای اهداف توسعه(development) و محیط های non-production در نظر گرفته شده است. آنها مخصوصا زمانی که نیاز به deploy کردن code و یا سایر تغییرات را دارید و میخواهید سریعا از تغییرات ایجاد شده rollback نمایید، بسیار مفید هستند. موارد زیر نمونه های بسیار عالی از مواردی هستند که snapshotها میتوانند به ما کمک کنند:
- Code change: deploy کردن کد جدید در سرور development
- Operating system updates: نصب آپدیتهای ویندوز و ….
- Driver installs: تغییر و یا upgrade یک درایور
- Upgrading software: upgrade به ورژن جدید نرمافزار نصب شده
- Adding new software: اضافه کردن نرمافزار جدید به یک سرور
- Forensics: گرفتن یک وضعیت خاص از یک سرور یا کلاینت virtual machine پس از یک attack مخرب مشکوک و یا فعالیتهای دیگر
- Power state: گرفتن یک snapshot، power state (وضعیت روشن یا خاموش بود) یک vm را حفظ میکند.
- Capturing VM settings and hardware: اگر تنظیمات زیادی را تغییر میدهید و احتیاج دارید که در صورت نیاز به محیط قبل از تغییرات بازگردید، میتوانید از snapshot برای گرفتن تنظیمات VM و virtual hardware استفاده کنید.
لازم به ذکر است که snapshotها برای هر یک از موارد استفاده فوق بسیار عالی هستند. سازمان شما ممکن است نیازهای بیشتری داشته باشد که snapshotهای متناسب با موارد نیازتان باید تهیه و استفاده شود. بازگرداندن Snapshot بسیار ساده تر از بازیابی یک نسخه full backup از یک VM به منظور بازیابی نرم افزار، درایورها و یا سایر تغییرات ایجاد شده میباشد.
معماری VMware snapshot
در واقع معماری VMware snapshot چیست و چه چیزی باعث میشود آنها کارکنند و توانایی بازگرداندن تغییرات را داشته باشند؟ snapshot شامل فایلهای زیر که معماری آن را تشکیل میدهد، میباشد:
- -.vmdk و -delta.vmdk : vmdk و vmdk در قلب snapshot وجود دارد و توانایی rollback تغییرات data را دارد. Snapshotها را میتوان برروی snapshotهای دیگر ایجاد کرد که موجب به وجود آمدن یک زنجیره از snapshotها میشود که به تمامی دیسکهای دیگر در زنجیره وابسته هستند.
- .vmsd : فایل vmsd نوعی “ mini database” است که حاوی اطلاعات مربوط به VMware snapshot میباشد. که شامل اطلاعاتی است که ارتباط بین snapshotها و child diskهای موجود در snapshot را تعریف میکند.
- vmsn : فایل vmsn به شما امکان میدهد memory state فعال یک VM را ذخیره کنید. ذخیره memory state ماشین مجازی به شما این امکان را میدهد که از یک vm در حالت روشن snapshot بگیرید که ایجاد آن در این حالت، بیشتر از ایجاد یک snapshot بدون memory state (در حالت خاموش) زمان میبرد.

چگونگی تشخیص snapshot برروی یک virtual machine
درحالی که snapshotها ویژگیها و قابلیتهای بسیار خوبی را در یک development، تست و یا محیطهای دیگر برای نیازهای مختلف ارائه میدهند، شما میخواهید از VMهایی که دارای snapshotهستند مطلع باشید. ما طبق best practiceها این موضوع را بررسی خواهیم کرد. با این حال چگونه میتوانید تشخیص دهید یک VM در حال اجرا دارای snapshot است ؟
وقتی شما به سادگی به یک VM در فهرست vSphere نگاه میکنید، نمیتوانید متوجه شوید که آن ماشین در حال اجرا، دارای snapshot است یا خیر. در عوض باید در مسیر Snapshots- > Manage Snapshot نگاه کنید تا snapshotهارا بتوانید ببینید و فهرست کنید.

بررسی محیط مجازی VMware vSphere به صورت دستی و با استفاده از محیط GUI یا گرافیکی ممکن است ایده آل نباشد به خصوص اگر VMهای زیادی در حال اجرا دارید. استفاده از command-line یا automated برای مدیریت و بررسی snapshotها در محیط VMware روشی بسیار بهتر از محیط GUI در این مورد است. با استفاده از PowerCLI میتوانید تمامی snapshotهای یک یا چندین VMدر حال اجرا را پیدا کنید.
get-vm <vm name> | get-snapshot
اگر میخواهید تمامی snapshotها برروی چندین VM موجود در یک folder را پیدا کنید میتوانید از دستور زیر استفاده نمایید:
get-vm -location <folder name> | get-snapshot | fl
بهترین روش های گرفتن Snapshot
از آنجایی که snapshotها قدرتمند هستند و ویژگیهای بسیار خوبی را ارائه میدهند، آیا میتوانید از آنها هرجا و برای هر نوع کاربری استفاده کرد؟ همینطور best practiceهایی که باید در مورد snapshot بدانید چیست؟ موارد زیادی وجود دارد که باید در رابطه با استفاده از snapshot ها بدانید . این موارد شامل:
- آنها را به عنوان backup در نظر نگیرید و از آنها استفاده نکنید: snapshotها یک کپی مستقل از دیتاهای شما نیستند. آنها به base disk یک VM وابسته هستند. بدون base disk ، snapshotها بیفایده هستند و مجموعه کاملی از دیتای شما نیستند زیرا snapshotها delta disk هستند.
- حداکثر 32 snapshot در هر VM در یک تغییر snapshot پشتیبانی میشود. بهتر است حداکثر بیشتر از 2 یا 3 استفاده نشود. بیش از این تعداد performance را به طور جدی کاهش میدهد.
- همچنین Snapshotها همانطور که در یک VM وجود دارند به رشد خود ادامه میدهند. آنها را نباید بیشتر از 72 ساعت نگهداری کنید. اگر بدون مراقبت رها شوند snapshotها میتوانند به رشد خود ادامه دهند و به طور بالقوه فضای یک LUN را پر کنند.
- راه حل های data protection : راه حلهای حفاظت از داده ها که در snapshotها استفاده میکنید باید فقط تا زمانی که backup کامل میشود، از آنها استفاده شود. این نکته حائز اهمیت است که پس از اتمام عملیات backup، آنها به درستی از روی VM پاک شده باشند.
- آنها از هرگونه تغییر در دیسک های یک VM جلوگیری میکنند. این مورد شامل افزایش اندازه یک virtual disk میشود.
گرفتن snapshot با استفاده از vSphere client
برای ایجاد snapshot میتوان به راحتی از محیط GUI( گرافیکی) و یا PowerCLI استفاده کرد.

با زدن گزینه Take snapshot پنجره زیر پدیدار میشود. در اینجا باید برای snapshot اسم انتخاب نمایید و به صورت کاملا اختیاری توضیحی وارد نمایید. دو گزینه زیر در پایین کادر دیده میشود:
- Include virtual machine’s memory: این گزینه memory footprint را نگهداری میکند.
- Quiesce guest file system (requires VM tools): این گزینه فرآیندی ست که dataهایی که برروی دیسک یک ماشین مجازی یا فیزیکی قرار دارد را به وضعیت مناسب برای پشتیبان گیری درمی آورد.

استفاده از PowerCLI برای ایجاد Snapshot
ایجاد یک snapshot با استفاده از محیط GUI برای یک VM در شکل بالا نشان داده شده است. با این حال اگر بخواهید snapshot در تعداد زیاد مدیریت نمایید، چگونه انجام میدهید؟ اگر بخواهید همزمان از چندین VM ، Snapshot بگیرید چطور انجام میدهید؟ شما نمیتوانید اینکار را با استفاده از محیط GUI انجام دهید.محیط Power CLI ارتباط با vSphere و مدیریت snapshotها را بسیار آسان کرده است. برای ایجاد یک snapshot با استفاده از PowerCLI میتوانید از دستور زیر استفاده نمایید:
Get-vm <vm name> | new-snapshot -Memory -quiesce -name “testmulticlone”
اگر میخواهید براساس نام folder برروی چندین VM ، snapshot بگیرید، میتوانید با استفاده از دستور زیر اینکار را انجام دهید:
get-vm -location “testclone” | new-snapshot -Memory -quiesce -name “testmulticlone”
با استفاده از این دستور، میتوانید برروی چندین vm پشت سرهم، snapshot ایجاد نمایید. این یک راه عالی برای ایجاد یک roll back برای چندین ماشین است که ممکن است شامل این عملیات شده باشند.
قابلیت های Managing(مدیریت)، برگرداندن(Reverting) و پاک کردن snapshotهای گرفته شده
سایر optionهای snapshot که مورد استفاده قرار خواهد گرفت شامل manage snapshot، revert، delete میباشد. وقتی بر روی گزینه manage snapshot کلیک میکنید، نمایی از تمامی snapshotهای گرفته شده را مشاهده خواهید کردکه در آنجا میتوان snapshot مورد نظرتان را که میخواهید حذف یا revert نمایید را، انتخاب نمایید.همچنین میتوانید از quick revert برای بازگشت به آخرین snapshot که برروی یک VM در حال اجرا است، استفاده نمایید. همچنین میتوانید از گزینه delete all snapshot برای حذف تمامی snapshotهای موجود در یک VM استفاده نمایید.
همانطور که در شکل زیر میبینید، vSphere GUI یک رابط گرافیکی ارائه میدهد که امکان مدیریت آسان snapshotهای موجود در یک VM را فراهم مینماید.

چگونه میتوانید یک snapshot خاص را که ممکن است در چندین VM وجود داشته باشد حذف کنید؟ در اسکریپ PowerCLI زیر، میتوانید به راحتی یک snapshot را بااستفاده از اسم آن در یک folder و برروی تمامی vmهای موجود آن جست وجو و حذف نمایید.
عملیات حذف snapshot
قابل ذکر میباشد هنگامی که در VMware vSphere ، snapshotهای یک virtual machine را حذف میکنید، نمیتوانید هیچ عمل دیگری را برروی آن ماشین انجام دهید. به خصوص اگر یک snapshot با حجم زیاد در یک virtual machine دارید، فرآیند حذف آن تا زمانی که delta disk در base disk ادغام شود، ادامه خواهد داشت. این مورد را در نظر داشته باشید که حذف یک snapshot به این معنی است که عملیات backup در این مدت انجام نمیشود و نمیتوانید سایر عملیات virtual machine را همانطور که ذکر شد، انجام دهید. یک virtual machine ممکن است برای مدت کوتاهی در حین حذف snapshot قادر به سرویسدهی نباشد. به چه دلیل؟ به دلیل stun process که مربوط به فرآیند تجمیع (consolidation) میباشد. به دلیل تغییراتی که از delta disk برروی base disk نوشته شده است، stun/freeze رخ میدهد. یک virtual machine تحت load سنگین یا عملیات I/O ممکن است زمان ادغام( consolidation) طولانی تری داشته باشد وtime stun میتواند افزایش یابد. نوعی مکانیسم safety نیز وجود دارد. در ESXi از قبل تعیین میکند که چه مدت زمانی stun طول میکشد و اگر تشخیص دهد که بیش از 15 ثانیه طول میکشد، منتظر Iteration دیگری میماند و این کار را 10 بار تکرار میکند. در تکرار 10ام، virtual machine را برای مدت زمانی که نیاز دارد، stun میکند. این فرایند تغییر کرده است و اگر فرآیند تشخیص دهد که بیش از 15 ثانیه طول میکشد، پس از تکرار 9ام تلاش را متوقف میکند و نمیتواند snapshot را حذف کند.
در واقع Snapshot جایگزین backup نیست
به این موضوع در مطالب قبل تر اشاره کرده بودیم. با این حال سزاوار است مجدد به این موضوع اشاره کنیم زیرا یک مفهوم مهم برای درک snapshot است. در حالی که snapshotها برخی از ویژگیهای” BACKUP-LIKE “را ارائه میدهند. همچنین قابلیت Revert در snapshot نشان دهنده این است که snapshotها backup نیستند.
طبق تعریف یک backup باید یک کپی مستقل از دیتای شما باشد که اجازه دهد خارج از زیر ساخت(infrastructure) یا منبعی(resource) که محافظت میشود ذخیره شود. از آنجایی که یک snapshot به زنجیره snapshot ها وابسته است، پس یک کپی مستقل و کامل از دیتای شما نیست. همچنین خارج از محیط infrastructure ذخیره نمیشوند. این بدین معناست که اگر بخشی از تغییرات snapshot یا به عبارتی بخشی از زنجیره را از دست دهیم، بقیه دیتاها بی ارزش میشوند.
همچنین با این واقعیت که راه حل های مدرن حفاظت از دیتاها از snapshot در فرآیند backupگیری استفاده میکنند گیج نشوید. به چه دلیل؟ عملیات backup از snapshotها استفاده میکنند به این دلیل که عملیات write VM ها از base disk به snapshot disk منتقل شود. با انجام این کار ، عملیات backup میتواند یک کپی از دیتاهای موجود در base disk بگیرد. دیتاهای جدید که در طول عملیات backup نوشته میشوند در delta disk قرار میگیرند و در اجرای عملیات backup بعدی به عنوان بخشی از base disk ذخیره میشود. هنگامی که backup از روی دیتا در base disk کپی میگیرد، snapshot برداشته میشود و base disk با delta disk ادغام میشود. Solutionهای قوی backup مانند NAKIVA Backup & Replication ، پشتیبانگیری در سطح enterprise را ارائه میکنند که کپی های مستقلی از دیتای شما میباشد. NAKIVO قابلیتهای مدرنی را ارئه میدهد که امکان backup موثر و مفید از VMware vSphere را فراهم مینماید. این شامل changed block tracking است که به NAKIVOاجازه میدهد فقط تغییرات را از آخرین نسخه backup کپی کند که بسیار کارآمدتر از کپی کردن تمامی دیتاها میباشد.
برای اطلاعات بیشتر در مورد NAKIVO و دانلود نسخه آزمایشی آن میتوانید از لینک زیر استفاده نمایید.
سخن آخر
قابلیت Snapshot یک ابزار بسیار قدرتمند برای مدیران vSphere میباشد. مسلما Snapshot سریعترین rollback به وضعیت خوب شناخته شدهای که در دسترس است، ارائه میدهد. با این حال گرفتن snapshot قبل از اعمال updateها، ایجاد تغییر در نرم افزارها، Update درایورها وانواع دیگر سناریوهایی که در آن rollback سریع موثر است، موثر و مفید هستند. همانطور که قبلتر ذکر شد، بسیاری از جنبه های VMware snapshot و نحوه استفاده، مدیریت، ایجاد، حذف و automate آن با استفاده از VMware PowerCLI را بررسی کردیم. به خصوص بخاطر داشته باشید که snapshotها backup نیستند. استفاده از یک راه حل enterprise backup یک راه عالی برای محافظت از اطلاعات شما به روش صحیح برای جلوگیری از دست رفتن اطلاعات میباشد.