VirtualBox: Зменшуємо розмір дискового файлу VDI

VirtualBox – віртуалізація для операційних систем

Недавнім часом я став помічати те, що об’єм моєї віртуальної машини постійно зростає. Начебто на це причин не повинно бути жодних: так як я у ній жодних програм не встановлюю і на диск C:/ нічого не копіюю. Використовую VirtualBox & Windows XP лише для тестових цілей у сфері програмування. Проблема в прицнипі очевидна, адже Microsoft і його файлова система NTFS не навчились й досі ефективно використовувати вільний дисковий простір. Тому, процес дефрагментації дисків для FAT/FAT32/NTFS – це уже як “бутерброд на сніданок” 🙂 Чим частіше ми це будемо виконувати, тим повільніше будемо відчувати втрату продуктивності самої Windows OS. Але для VirtualBox є своє “підводне каміння”: навіть якщо ми і будемо виконувати дефрагментацію віртуальної машини, і файли, що використвуюуться будуть переміщатися у початкові кластери нашого диску, то об’єм VDI диску вуртуальної машини не буде зменшуватися. Так як вільний простір який ми бачимо утилітою дефрагментації – це не показник того, що це місце не використовується. Щоб для системи було зрозуміло, що є вільні кластери які ніким не використовуються – необхідно їх “обнулити”. Тому, давайте розглянемо той випадок, як мені вдалось оптимізувати  VDI файл з 10,5Гб до 4,32Гб.

Спершу давайте запам’ятаємо що у нас було до початку роботи, щоб було з чим порівнювати ефективність цієї публікації 🙂

VirtualBox Manager. Windows XP VM

VirtualBox Manager. Windows XP VM перед процедурою оптимізації

Я на рисунку спеціально червоним виділив об’єм VDI диску. Перед процедурою оптимізації він займав 10,52Гб. А тепер беремось за сам процес:

  1. Завантажуємо нашу гостьову ОС (в моєму випадку це Windows XP) у VirtualBox.
  2. Виконуємо процедуру очистки диску C:, включаємо “Сжимать диск для экономии места”, а також відключаємо “Разрешить индексирование диска для быстрого поиска”. Але якщо Ви працюєте у віртуальній машині досить часто і виконуєте у ній пошук по файлам, то краще не відключати індексування для швидкого пошуку. Ось як це візуально виглядає:

    Windows XP – очистка диска

    Windows XP – очистка диска

  3. Дальше нам необхідно виконати дефрагментацію диску C:. Цей процес бажано зробити 2 рази: але не один за одним, а через перезавантаження гостьової ОС. Тобто, виконали перший раз дефрагментацію – перезавантажили гостьову ОС, потім знову виконали вдруге дефрагментацію. Це дасть змогу добитися максимально-ефективного переміщення даних на початок розділу, щоб ефективно “відрізати” вільне місце, що не буде використовуватися. Якщо все виконали вірно, то маєте побачити ось такий результат:

    Windows XP дефрагментація

    Windows XP дефрагментація

  4. Як я уже писав вище, нам необхідна програма, яка “обнулить” вільні кластери. Я рекомендую SDelete. Якби не було, але саме ця програма знаходиться на сервері Microsoft-а, тому їй можна довіряти 🙂 Запуск цієї програми робимо за допомогою такої команди:

    Цей процес у мене десь зайняв приблизно 15-20хв.
  5. Коли завершиться пункт 4 – виключаємо гостьову ОС. Дальше відкриваємо термінал і запускаємо команду:

    Якщо у Вас VirtualBox програма знаходиться не у /Applications/ – то підкорегуйте cd команду вище. У моєму випадку все виглядало так:

    $ cd /Applications/VirtualBox.app/Contents/MacOS/
    $ ./VBoxManage modifyhd –compact /Volumes/SOFT/WindowsXP.vdi
    0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%

  6. Ось тепер і бажаний результат:
    VirtualBox Manager VDI після оптимізації

    VirtualBox Manager VDI після оптимізації

    Тобто, мені вдалось зменшити розмір VDI файлу із 10.52Гб до 4.32Гб. – це більш як у 2 рази.