Использую windows server 2008r2 с ролью Hyper-V. Гостевая система - Ubuntu 12.04 LTC. Он расположен на динамическом виртуальном жестком диске.
Я хочу сжать этот VHD (реальный размер 50 ГБ, на диске 360 ГБ). Но я не могу этого сделать, потому что файловая система Ubuntu не NTFS. Что мне нужно (gparted, sdelete, ...) для решения этой проблемы?
Основная проблема в том, что файловая система не NTFS, а ext4.
Ответ:
1) Скачать systemrescuecd
2) Добавьте этот .iso в квест ОС Ubuntu
3) Запустите эту виртуальную машину
4) Используйте zerofree
zerofree /dev/sda1
5) Выключите эту виртуальную машину
6) Используйте диспетчер Hyper-V (Правка -> дефрагментация)
Этот vhd был 360 Гб. Сейчас 70 гб.
Выключите виртуальную машину, сделайте резервную копию VHD и запустите другую виртуальную машину (я использую SystemRescueCD поскольку он маленький и быстрый), для которого доступен раздел ext4, то есть HD для SysRescue (но не монтируйте его!). На виртуальной машине SysRescue запустите 'нулевой'в разделе ext4, выключите эту виртуальную машину, а затем используйте веб-сайт администрирования для сжатия VHD.
Я могу подтвердить: zerofree работает над сжатием файлов виртуальных дисков
НО: вам не нужно использовать аварийные компакт-диски или монтировать VHDX на другой виртуальной машине:
sudo apt-get install zerofree
Загрузитесь в безопасном режиме, затем запустите:
zerofree /dev/sda1
После этого мы должны начать оптимизацию файла виртуального диска. На сервере, на котором размещен файл VHDX, создайте следующий файл ShrinkVhdx.ps1:
[CmdletBinding()]
Param(
$VHDFiles
)
#Find the disks
foreach($VHD in $VHDFiles){
Write-Verbose "Working on $VHD, please wait"
Write-Verbose "Current size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB"
Mount-VHD -Path $VHD -NoDriveLetter -ReadOnly
Optimize-VHD -Path $VHD -Mode Full
Write-Verbose "Optimize size $([math]::truncate($(Get-VHD -Path $VHD).FileSize/ 1GB)) GB"
Dismount-VHD -Path $VHD
Write-Verbose ""
}
А теперь запустите файл и наслаждайтесь освободившимся дисковым пространством :-)
ShrinkVhdx.ps1 .\hdd1.vhdx
1) Скачать systemrescuecd
2) Добавьте этот .iso в квест ОС Ubuntu
3) Запустите эту виртуальную машину
4) Используйте zerofree
zerofree / dev / sda1
5) Выключите эту виртуальную машину
6) Используйте диспетчер Hyper-V (Правка -> дефрагментация)
Процесс кажется
а именно
sudo apt-get install secure-delete
sudo sfill -llz .
Это создает файл с именем oooooooo.ooo
наполненный 0
с. Думаю, вам следует повторить команду sfill на всех разделах.
Обратите внимание, что это тоже не быстро, это займет часы, если не дни.
Я действительно пытался запустить Systemrescuecd на машине 2-го поколения. Но это не сработало, поэтому я создал новую машину 1-го поколения и добавил к ней VHDX. systemrescuecd запущен. Никаких операций не делал. Удалена машина 1-го поколения и снова вставлен VHDX в исходную машину. Тогда Ubuntu вообще не запускалась. Только Grub-меню.
Смотрите мой пост здесь: Hyper-V Ubuntu vhdx scsi ide
Так что помните об этом и сделайте резервную копию (в этот раз я этого не сделал) ...
Вы можете сделать это, проверив некоторые параметры в следующих файлах: / sys / block // queue / discard_granularity / sys / block // queue / discard_max_bytes, если любой из них имеет значение 0, это, вероятно, не поддерживается вашей конфигурацией оборудования + программного обеспечения.
Вот полное руководство по этому поводу: http://www.1337admin.org/uncategorized/compacting-virtual-disks-on-generation-2-linux-hyper-v-2012-r2-vms/