Постійний запуск у знімку VMWare поганий для продуктивності?


18

Я розумію, що VMWare KB нахмуриться на тривалі знімки в основному завдяки двом речам (на мій погляд)

  • Зйомка тонн знімків може заповнити сховище даних. Знімки - це просто дельта-файли. Скажімо, у вас 50 Gig VMDK, майже повний, і ви робите знімок. У знімку ви гортаєте кожен шматочок. Ваш дельта-файл також буде близько 50 Гб. Знімок знову, переверніть біти, ще один файл дельти 50 Gig. Вони можуть швидко вийти з-під контролю.

  • Здійснення великих знімків несе ризик. Під час консолідації знімків ви пишете зміни дельти до початкового VMDK. Це вимагає часу і несе ризик, що якщо щось трапиться, ви просто обробили ваш VMDK.

Їх попередження, здається, мають логічний сенс.

З урахуванням цього, чи не властиво погано постійно працювати з моєю машиною зі знімка VMDK? Я хочу зробити своє дерево таким:

  • База
    • Snap1
      • Оснащення 2
      • Ти тут

Знімки 1 і 2 будуть зроблені відразу після встановлення та надання базової системи. Це машини, які я планую часто оновлювати, тому я просто зроблю так, щоб моє дерево виглядало так:

  • База
    • Snap1
      • Ти тут
      • Оснащення 2

Видаліть Snap2 і відтворіть Snap2.

Я не бачу, як це може мати наслідки з наступних причин:

  • Оскільки я просто встановив базове зображення і взяв свої дельти одразу після того, як немає можливості я міг би заповнити сховище даних. Якщо припустимо, що базове зображення становить лише 10 ГБ (на тонкому дисковому диску 50 Гб), навіть якщо моя дельта перегортала кожен біт, максимум мого загального використання може становити 60 ГБ (10 Гб базового VMDK, який заблоковано + 50 ГБ дельта в файл VMDK-знімка). Це передбачає, що я не створюю додаткових знімків.

  • Оскільки мій випадок використання не вимагає консолідації знімків, я не ризикую помилками при консолідації дельта. Коли я повертаюсь до Snap1 і видаляю Snap2, усі дельти, які проживали в Snap2, просто видаляються.

  • Навантаження на сховище точно таке ж, тому я повинен отримувати ті ж IOPS. Я розумію, що деякі файли (в основному системні файли) існуватимуть на оригінальному VMDK, а інші (все після основи) будуть знаходитись у дельті, але я не бачу, як ESXI би не піклувався. Всі файли знаходяться в одній фізичній сховищі даних, тому продуктивність повинна бути еквівалентною посиланням на все в оригінальному VMDK без знімків.

Будь-які думки? ESXI 5.5 з сховищем даних є RAID'd DAS.

У мене немає ліцензії vCenter, тому шаблонування та клонування не входять у стіл.

РЕЗУЛЬТАТИ ТЕСТУВАННЯ

Я рано на сьогодні провела кілька тестів. Ось результати. Існує штрафний показник, але я не впевнений, чому.

Перед знімком: Перед знімком

Після знімка: Після знімків


Не впевнено - з плином часу знімки будуть розходитися все більше і більше. Нарешті, вони будуть по суті різними копіями. Після того, як ви не шкодуєте багато диска, знімаючи їх, перетворіть знімок на абсолютно окремий об'єм. Як? Зазвичай я використовую дд від третього ВМ, але в основному я майже розп'ятий для таких єретичних думок, як це. :-) Але: це буде працювати , і буде ефективно .
петерх

@PeterHorvath - це те, що я люблю чути. Розумні, хакі, ефективні рішення з голими кістками. Якщо ви не заперечуєте, чи могли б ви написати мені те, що ви робите в пастебіні чи щось? Ви разом DDM і знімок?
VM_Storage_Inception

Якщо мені потрібно було це робити частіше, я робив це за сценарієм. Але це не так, і в більшості випадків я не використовую навіть знімки, тому що вони повільні.
петерх

Відповіді:


17

Так, для тривалих знімків є наслідки для продуктивності. Є ще більші наслідки для консолідації дельта VMDK назад у вихідний файл диска. Це може спричинити безвідповідальність в операційній системі вашої VM або іншу небажану поведінку.

VMware має вбудований в vCenter функцію шаблонування та клонування . Для цього вам потрібно ліцензія на vSphere Essentials на суму 600 доларів.

Ви можете створити VM на свій смак, а потім клонувати його до шаблону. Цей шаблон може бути використаний для генерування нових віртуальних машин із зображення «Золотого майстра».

введіть тут опис зображення

Це дозволяє мати "чистий стан", але також створювати довгострокові або постійні VM з цього головного зображення. Знімки не потрібні.


Цікаво, я розберуся в цьому і зрозумію, як це працює. На жаль, у мене немає ліцензії на vCenter, і я б краще не отримав свою організаційну оболонку в розмірі 600 доларів, якщо немає ніяких наслідків для продуктивності знімків, які використовуються в описаному нами способі. Також шаблонування та клонування здається не відрізняється від прийняття OVA та перерозподілу його. Видалення знімків здається набагато швидшим, і я не можу логічно зрозуміти, як би були наслідки для продуктивності, навіть якщо це не "офіційний метод, затверджений VMWare".
VM_Storage_Inception

Щоб відповісти на вашу редакцію, чи можете ви вказати мені статтю чи пояснити, які будуть наслідки для продуктивності? Я не бачу, як можна було б припустити, що я їх використовую, як описую. Крім того, я ніколи не консолідував знімки назад до оригінального VMDK.
VM_Storage_Inception

Я думаю, я намагаюся зрозуміти, чому ви наполягаєте на розробці функції, яка мала використовуватись для короткочасного доступу.
ewwhite

@VM_Storage_Inception - це майже звучить так, ніби ти хочеш підходу бідолахи до неіснуючого менеджера продукту VMWare.
TheCleaner

5
Іноді купувати правильне рішення має сенс. Ви витратили більше зусиль і людино-годин, розглядаючи питання щодо вирішення проблеми, ніж просто платити за ліцензію vSphere Essentials (600 доларів), яка надасть вам підтримуваний варіант шаблону / клонування.
ewwhite

4

Відповідь ewwhite правильна, але просто щоб розширити трохи більше або покарати ефективність, врахуйте наступний сценарій:

Ви створюєте VM. Віртуальне зчитування з vmdk приймає один зчитування фізичного диска одного розміру. Досить прямолінійний.

А тепер уявіть, що ви зробили знімок VM. Тепер, для кожного віртуального читання, ви збираєтесь виконати 2 фізичні читання, одне з базового vmdk та одне з delta vmdk, тому що вам потрібна інформація обох для отримання поточного стану. Ви зараз удвічі читаєте фізичний диск.

За два знімки ви робите три рази читання тощо. Якщо у вас багато знімків, ви можете бачити, як це може бути досить значним покаранням за продуктивність. Це не обов'язково перетворюється на n-кратно більшу продуктивність (через кешування, розділи, які не були змінені тощо), але це не є хорошою практикою.


Я майже впевнений, що знімки використовують таблицю "який блок знаходиться в якому файлі". Таким чином, читання одного блоку призведе до лише одного зчитуваного з відповідного файлу блоку. Звичайно, читання декількох блоків може призвести до доступу до декількох файлів, що означає штраф за переміщення головок дисків, якщо ви не працюєте з SSD, але загальна кількість доступу до блоку диска не повинна змінюватися.
Гунтрам Блом підтримує Моніку

1
Як я це розумію, знімки зберігають лише зміни з оригінального диска. Якщо ви зберігаєте файл A, зробіть знімок, потім знову змініть файл A, на знімок записуються лише зміни цього файлу. Таким чином, вам потрібно прочитати як оригінальний VMDK, так і знімок, щоб отримати весь файл. В іншому випадку кожен знімок буде просто повною копією оригінального диска, якого вони не є.
tfrederick74656

це може бути правильним, але загальна кількість блоків, які потрібно прочитати, залишається однаковою (наприклад, 10 блоків із знімка та 100 з базового диска). ESXi спочатку перевіряє наявні знімки на необхідні блоки, поки вони не закінчаться на правильному знімку (або базовому диску). Може бути незначне покарання, оскільки система, ймовірно, повністю пропустить цю частину знімка, коли знімка взагалі немає. Крім того, тривалий запущений файл знімка, ймовірно, зазнає сильної фрагментації.
Дірк Трілсбек

Віртуальна система зйомки віртуального диска, яка N читає на N знімку, була б дуже дурною реалізацією. Сумніваюсь, що це реалізовано в VMWare. Просту оптимізацію можна зробити, просто створивши файл індексу, який зберігає, в якому дискфілює кожен блок емуляційного накопичувача. Припустимо, у вас віртуальний диск розміром 512 Гб з розміром блоку 4 кБ, вам потрібно лише індекс 64 Мб, щоб постійно визначати, який до 16 файлів віртуального диска містить блок.
Лежать Раян

1
Грунтуючись на відповідях на сервері defaultfault.com/questions/430138, я повинен не погодитися. Я завжди думав про знімки як результат двійкової арифметики, а не просто для збору нових даних. Отже, якщо у вашому базовому VMDK є біти 01010101, ви зробите знімок, а потім змініть ці біти на 10101010, ваша дельта міститиме 11111111 (що вказує на те, що кожен біт у вихідному файлі змінювався, а не нове значення 10101010). Наскільки я згоден з вищезазначеним коментарем, VMDK - це нібито неочищені файли. Де би зберігався індекс? Я ніколи не бачив, щоб це згадувалося в жодних пабах VMWare.
tfrederick74656

0

Знімки VMware ESX призначені для короткочасного використання.

Тривале використання та великий IO може спричинити замерзання VM. Якщо у вас є випадок, коли запис IO більший / швидший, ніж консолідація знімків, ESX заморозить VM для захисту даних. З часом знімки фрагментуються, а ESX робить внутрішню консолідацію, ви можете періодично зависати.

Ви можете виконувати шаблони VM вручну через ssh. Скопіюйте папку VM, що містить vmdk, vmx тощо, у нову одну папку. У файлі vmx нещодавно скопійованого VM змінити UID та MAC-адресу.

У VMware є продукт, пов'язаний клон, це те саме, що ви намагаєтесь зробити. І вони кажуть, що це потенційні проблеми з роботою. На практиці ви через деякий час будете переоблаштовувати VM. https://www.vmware.com/support/ws5/doc/ws_clone_typeofclone.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.