Стискаємо тонкий (thin) диск в ESXi 5

Тонкі (thin) диски VMWare дозволяють істотно заощадити місце на файлової системі VMFS сховища при створенні віртуальної машині. Такі vmdk диски при створенні практично не займають місце на файлову систему і поступово розростаються до максимального розміру в міру накопичення інформації. Однак основна проблема при використанні thin диски полягає в тому, що вони з часом розростаються навіть в тому випадку, якщо ви звільнили місце всередині гостьової операційної системи.

Примітка. При видаленні даних в ОС Windows (і Linux це також стосується) система не заповнює освоїти місце нулями, а просто позначає області як віддалені в метаданих розділу (їх можна використовувати для запису). Виходить, що ESXi сервер не може самостійно визначити які з відданих їй блоків насправді вільні

Стандартного засоби стиснення тонких дисків в ESXi немає, а сама система віртуалізації нічого не знає про особливості зберігання даних всередині гостьової ОС.

У цій статті ми опишемо простий спосіб стиснення тонкого vmdk диска в ESXi.

  1. На першому етапі необхідно допомогти Гіпервізор, заповнивши весь вільний місце на дисках всередині гостьової ОС нулямі.Обнуліть вільні блоки в Windows можна за допомогою утиліти Марка Русиновича SDelete (на момент написання статті остання доступна версія SDelete v1.61, якщо ви використовуєте більш ранню версію SDelete , майте на увазі, в ній можуть використовуватися трохи інші параметри). Завантажити SDelete можна тут: http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx.Распакуйте архів на диск, відкрийте командний рядок (природно, з правами адміністратора) і виконайте наступну команду
    Sdelete -z c:

    В даному випадку c: - це віртуальний тонкий vmdk диск, який ми плануємо стиснути.

    У Linux цю операцію можна виконати з допомогу dd

    dd if = / dev / zero bs = 64k of = zero.temp; rm zero.temp
  2. Вимикаємо гостьову ОС (Shutdown).Примітка. Стиснути диск можна і за допомогою міграції віртуальної машини на інше сховище (Storage VMotion). Однак зазначимо, що даний спосіб не є універсальним і працює тільки при дотриманні певних умов.
  3. Підключаємося до ESXi сервера по SSH під root-ом (не забудьте включити службу SSH і дозволити вхідний трафік на файервол ESXi). Переходимо в каталог c файлами віртуальної машини:
    cd vmfs / volumes / storage1 / vm1

    де storage1 - ім'я сховища, а vm1 - каталог, в якому зберігаються файли з vmdk дисками віртуальної машини

  4. Виведемо "повний" розмір віртуального диска.
    ls -lh * .vmdk

    "Реальний" розмір віртуального диска, який він займає на файлову систему можна дізнатися так:

    du -h * .vmdk

    Як ви бачите, thin диск займає на сховище 33 Гб (максимальний його розмір 40 Гб). Причому всередині гостьової ОС Windows зайнято всього 15 Гб.

  5. Стискаємо vmdk диск за допомогою vmkfstools. Команда стиснення диска thin буде виглядати так:
    vmkfstools --punchzero /vmfs/volumes/storage1/vm1/vm1.vmdk

    Процедура стиснення в нашому прикладі зайняла близько 5 хвилин (швидкість від розміру диска і швидкості і завантаженості сховища і мережі SAN). Після закінчення процедури стиснення перевіримо поточний розмір vmdk файлу.

    Як ви бачите vmdk диск стиснувся до 15 Гб!

Примітка. Якщо дисків кілька, дану процедуру необхідно виконати для кожного.

На щастя розширити віртуальний диск набагато простіше 🙂