Тонкі (thin) диски VMWare дозволяють істотно заощадити місце на файлової системі VMFS сховища при створенні віртуальної машині. Такі vmdk диски при створенні практично не займають місце на файлову систему і поступово розростаються до максимального розміру в міру накопичення інформації. Однак основна проблема при використанні thin диски полягає в тому, що вони з часом розростаються навіть в тому випадку, якщо ви звільнили місце всередині гостьової операційної системи.
Примітка. При видаленні даних в ОС Windows (і Linux це також стосується) система не заповнює освоїти місце нулями, а просто позначає області як віддалені в метаданих розділу (їх можна використовувати для запису). Виходить, що ESXi сервер не може самостійно визначити які з відданих їй блоків насправді вільніСтандартного засоби стиснення тонких дисків в ESXi немає, а сама система віртуалізації нічого не знає про особливості зберігання даних всередині гостьової ОС.
У цій статті ми опишемо простий спосіб стиснення тонкого vmdk диска в ESXi.
- На першому етапі необхідно допомогти Гіпервізор, заповнивши весь вільний місце на дисках всередині гостьової ОС нулямі.Обнуліть вільні блоки в 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
- Вимикаємо гостьову ОС (Shutdown).Примітка. Стиснути диск можна і за допомогою міграції віртуальної машини на інше сховище (Storage VMotion). Однак зазначимо, що даний спосіб не є універсальним і працює тільки при дотриманні певних умов.
- Підключаємося до ESXi сервера по SSH під root-ом (не забудьте включити службу SSH і дозволити вхідний трафік на файервол ESXi). Переходимо в каталог c файлами віртуальної машини:
cd vmfs / volumes / storage1 / vm1
де storage1 - ім'я сховища, а vm1 - каталог, в якому зберігаються файли з vmdk дисками віртуальної машини
- Виведемо "повний" розмір віртуального диска.
ls -lh * .vmdk
"Реальний" розмір віртуального диска, який він займає на файлову систему можна дізнатися так:
du -h * .vmdk
Як ви бачите, thin диск займає на сховище 33 Гб (максимальний його розмір 40 Гб). Причому всередині гостьової ОС Windows зайнято всього 15 Гб.
- Стискаємо vmdk диск за допомогою vmkfstools. Команда стиснення диска thin буде виглядати так:
vmkfstools --punchzero /vmfs/volumes/storage1/vm1/vm1.vmdk
Процедура стиснення в нашому прикладі зайняла близько 5 хвилин (швидкість від розміру диска і швидкості і завантаженості сховища і мережі SAN). Після закінчення процедури стиснення перевіримо поточний розмір vmdk файлу.
Як ви бачите vmdk диск стиснувся до 15 Гб!
На щастя розширити віртуальний диск набагато простіше 🙂