Бележки на виртуалния администратор Влияние на моментните снимки върху производителността
Новини, рецензии и бележки за виртуални машини и платформи за виртуализация.
Събота, 21 май 2011 г
Въздействие на моментните снимки върху производителността - 1
Често потребителите се оплакват: "Ако щракна върху "Изтриване на моментна снимка" - всичко просто става!" И за някой всичко наистина се забавя много и някой практически не забелязва, че нещо се случва изобщо. И така, какво се случва с моментните снимки и как те влияят на производителността?
Описание на тестовата среда:
- Windows 2003-R2-SP2 VM (32 бита);
- 1 vCPU
- 2048 MB RAM;
- 5 GB зареждащ диск в "независим" режим - SAN;
- VM конфигурационни файлове и 4 GB диск за измервания на локални дискове (10K RAID1);
- IOmeter (версия 2006.07.27);
- Perfmon измерва четене/запис на PhysicalDisk на интервали от 20 секунди;
- Виртуалните машини са изградени на ESX3.5 и 4.0 за сравнение.
IOmeter е конфигуриран за два теста - с 25ms закъснение и 0ms. И за двата теста се използват следните параметри:
Подробно описание на теста:
- Изтеглете VM;
- Изпълнение на perfmon (операции за четене и запис в секунда (ROPS и WOPS);
- Изтрийте тестовия файл на IOmeter и стартирайте работното натоварване на IOmeter;
- Измерване на IOPS без моментна снимка;
- Спрете IOmeter, изтрийте тестовия файл;
- Създайте моментна снимка (не включвайте памет в моментна снимка);
- Рестартирайте IOmeter след товакак е създадена моментната снимка;
- Измерете IOPS с моментна снимка;
- Изтриване на моментна снимка;
- Измерете IOPS по време на изтриване на моментна снимка;
- Ако моментната снимка не може да бъде изтрита, спрете IOmeter и изчакайте моментната снимка да бъде изтрита;
- Спиране на perfmon;
- Запазване на данни: статистика на VMware в реално време за ROPS и WOPS на ниво хост и VM, статистика на perfmon;
- Прехвърлете всички данни в един голям Excel файл.
VMware е избрала технология за моментни снимки, която е точно обратното на това, което повечето доставчици на съхранение използват. Във VMware всички блокове, които трябва да бъдат записани във VMDK, всъщност се записват в (нарастващ) делта файл с моментна снимка. Самият делта файл се увеличава на блокове от 16MB.
Оригиналният файл на виртуалния диск се замразява и повече не се променя. Поради това приложението за архивиране просто трябва да го копира. В допълнение, връщането към точката на моментна снимка е също толкова просто - делта файлът се изтрива и немодифицираният оригинален диск се размразява.
Но кой редовно се връща към моментни снимки? Повечето от тях са създадени и ангажирани след (архивиращи скриптове)! И тук възниква проблемът, защото за да извършите промените (премахнете моментната снимка), трябва да прочетете целия делта файл (и той може да нарасне до размера на оригиналния диск) и да запишете всички променени блокове във файла на виртуалния диск. Следователно се оказва, че VM започва да се забавя и на практика замръзва, докато моментните снимки се изтриват.
Друг проблем с VMware snapshot commit/delete е къде да се съхраняват данни, които се променят по време на изтриването на моментна снимка? Можете, разбира се, просто да замразите VM, да извършите промените и след това да размразите VM. Но вВ продуктивни среди това е откровено съмнително решение, големите моментни снимки отнемат много време, за да се ангажират. И затова VMware излезе с решение: създайте друга моментна снимка.
Как се изтрива моментна снимка
Да предположим, че имаме виртуална машина с моментна снимка и администраторът е щракнал върху бутона „Изтриване на моментна снимка“. Какво става?
Първо, VMware създава втора моментна снимка, която е дъщерна на тази, която се изтрива. Всички операции по запис, извършени от VM от този момент нататък, преминават към втората моментна снимка. И първата моментна снимка започва да извършва промени в основния диск.
Докато моментната снимка бъде окончателно изтрита, получаваме ситуацията, с която започнахме - VM с моментна снимка. Остава да се надяваме, че снимката ще бъде по-малка по размер от оригиналната. VMware просто повтаря процеса, докато моментната снимка стане достатъчно малка (16MB максимум). След това виртуалната машина се замразява, последната моментна снимка се записва и виртуалната машина се размразява. Тъй като последната моментна снимка беше малка, времето за замразяване на I/O остава приемливо.
Въпреки това, колкото и добре да изглежда, изтриването на моментна снимка може да се провали, ако VM пише много на диска. В този случай втората моментна снимка може да расте по-бързо, отколкото VMware ангажира първата, и в резултат на това моментната снимка расте с всяка итерация, вместо да се свива!
Резултати от теста: Обща производителност при четене/запис при моментна снимка
При първия тест натоварването беше генерирано на ниво 32 ROPS + 32 WOPS едновременно, за да не се претоварва огледалото на 10k SAS дискове. Графиките на производителността бяха почти идентични за ESX3.5 и vSphere, така че просто ще дам графика за ESX3.5: