Бележки на виртуалния администратор Влияние на моментните снимки върху производителността

Новини, рецензии и бележки за виртуални машини и платформи за виртуализация.

Събота, 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 за сравнение.
Обръщам внимание на факта, че както конфигурационните файлове, така и дискът за измерване се намират на локални дискове, т.е. всички файлове със снимки също ще бъдат разположени на локални дискове. Тъй като дискът за зареждане на VM е в независим режим, моментната снимка не се прилага към него и респ. няма ефект върху производителността.

IOmeter е конфигуриран за два теста - с 25ms закъснение и 0ms. И за двата теста се използват следните параметри:

Подробно описание на теста:

  1. Изтеглете VM;
  2. Изпълнение на perfmon (операции за четене и запис в секунда (ROPS и WOPS);
  3. Изтрийте тестовия файл на IOmeter и стартирайте работното натоварване на IOmeter;
  4. Измерване на IOPS без моментна снимка;
  5. Спрете IOmeter, изтрийте тестовия файл;
  6. Създайте моментна снимка (не включвайте памет в моментна снимка);
  7. Рестартирайте IOmeter след товакак е създадена моментната снимка;
  8. Измерете IOPS с моментна снимка;
  9. Изтриване на моментна снимка;
  10. Измерете IOPS по време на изтриване на моментна снимка;
  11. Ако моментната снимка не може да бъде изтрита, спрете IOmeter и изчакайте моментната снимка да бъде изтрита;
  12. Спиране на perfmon;
  13. Запазване на данни: статистика на VMware в реално време за ROPS и WOPS на ниво хост и VM, статистика на perfmon;
  14. Прехвърлете всички данни в един голям Excel файл.
Как работят моментните снимки на VMware

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: