Основное преимущество виртуальных машин в том, что вы можете гибко выделять дополнительные ресурсы ВМ, если они ей нужны. Если на виртуальном диске закончилось свободное место, вы можете легко и быстро расширить его. В этой статье мы рассмотрим, как изменить размер диска виртуальной машины в VMware ESXi и затем расширить раздел в гостевой ОС Windows или Ubuntu без остановки или перезагрузки виртуальной машины.
Есть несколько ограничений, которые нужно учитывать, если вы хотите увеличить размер диска виртуальной машины VMware:
- Если у ВМ есть сохраненные снимки (снапшоты), вы не сможете расширить диск. Все снапшоты придется удалить;
- Если На лету можно расширить только диски, подключенные через виртуальный SCSI или NVMe контроллер (если диск подключен через IDE, виртуальную машину придется сначала выключить);
- Расширение не поддерживается для ВМ типа Linked Clone (Vmware Horizont);
- Если в панели ВМ указано предупреждение
‘Virtual Machine disks consolidation is needed’
, выполните консолидацию дисков виртуальной машины ; - Онлайн расширение дисков виртуальных машин (без выключения) поддерживается, если в гостевой ОС установлены VMware Tools , Если VMTools не установлены, после изменения диска появится ошибка:
Task name_x000D_Reconfigure virtual machine_x000D_The attempted operation cannot be performed in the current state (Powered on).
Процесс расширения диска виртуальной машины выполняется в два этапа:
- Сначала нужно увеличить максимальный размер VMDK файла в настройках ВМ на vCenter/ESXi;
- Затем нужно расширить раздела диска в гостевой ОС (мы рассмотрим отдельно Windows и Linux).
Увеличить размер виртуального диска (VMDK) в VMware
Допустим, у вас есть виртуальная машина, которой презентован один виртуальный жесткий диск (vmdk) размером 40 Гб. Вы хотите увеличить данный виртуальный диск до 50 Гб.
- Подключитесь к своему серверу vCenter или отдельному серверу ESXi с помощью vSphere Client;
- Найдите виртуальную машину и откройте ее настройки ( Actions -> Edit Settings );
- Найдите виртуальный диск, который нужно расширить. В этом примере у ВМ есть только один Hard Disk 1 размером 40 Гб. Укажите новый размер диска в этом поле и сохраните настройки. Обратите внимание, что максимальный размер диска, доступный для данного хранилища (VMFS, NFS, vSAN) указан в поле Maximum size; Убедитесь, что на вашем VMFS хранилище достаточно свободного места . Если нужно, вы можете расширить размер VMFS хранилища в VMWare ESXi .
Также вы можете расширить VMDK диск виртуальной машины с помощью командлетов из модуля VMware PowerCLI Установите модуль PowerCLI на свой компьютер (можно установить модуль PowerShell даже на Linux хост ) и подключитесь к vCenter/ESXi:
Connect-VIServer hostname
Чтобы расширить диск ВМ, выполните команду:
Get-HardDisk "VMTest1" | where {$_.Name -eq "hard disk 2"} | Set-HardDisk -CapacityGB 50 -ResizeGuestPartition -Confirm:$false
Вы можете воспользоваться командлетом Invoke-VMScript для запуска команд расширения раздела в гостевой ОС:
Invoke-VMScript -vm VMTest1 -ScriptText "echo select vol c > c:diskpart.txt && echo extend >> c:diskpart.txt && diskpart.exe /s c:diskpart.txt" -GuestUser $guestUser -GuestPassword $guestPass -ScriptType BAT
Не забудьте завершить сессию.
Disconnect-VIserver -Confirm:$false
После того, как вы увеличили виртуальный диска в консоли VMware, нужно расширить раздел в гостевой операционной системе.
Расширить диск в виртуальной машине Windows
Чтобы гостевая Windows увидела дополнительно пространство, нужно запустить консоль управления дисками ( Computer Management-> Storage-> Disk Management ) и выполнить команду Rescan Disk .
Затем выберите раздел, который нужно увеличить и выберите Extend Volume ;
Укажите на сколько Мб нужно расширить выбранный раздел Windows за счет неразмеченного Unallocated пространства (в поле Select the amount of space in MB ).
Нажмите Next -> Finish и проверьте, диск C был успешно расширен.
Вы не сможете расширить ваш диск C:, пока не удалите или не переместите раздел Recovery в конец диска. Мы описали процедуру в статье не активен пункт Расширить том в Windows.
Windows XP и Windows Server 2003 не поддерживают онлайн расширение системного тома C:. Для увеличения системного раздела без перезагрузки можно воспользоваться утилитой ExtPart от Dell .
Чтобы расширить системный дисковый раздел в Windows 2003/XP скопируйте утилиту в гостевую ОС и запустите ее с параметрами:
extpart.exe c: 1020
, где c: — имя раздела который необходимо расширить, 1020 – размер (в Мб), на который нужно расширить диск
Скачать утилиту ExtPart можно здесь (40 Кб).
Также вы можете расширить раздел на диске ВМ в офлайн режиме другими способами:
- Можно загрузить виртуальную машину с любого livecd (например, GParted) и расширить раздел;
- Подключить виртуальный vmdk к другой машине и увеличить раздел уже из нее;
- С помощью утилиты VMware vCenter Converter можно сконвертировать ВМ в режиме переконфигурирования;
- С помощью утилит типа Acronis/ Ghost перенести содержимое виртуального диска на новый диск нужного размера, растянув разделы.
Расширить диск виртуальной машины Linux
Теперь рассмотрим, как расширить диск если в виртуальной машине установлена гостевая ОС семейства Linux.
В первую очередь, нужно чтобы Linux увидела новое место на диске. Чтобы выполнить рескан, выполните команду:
$ echo 1>/sys/class/block/sdd/device/rescan
Чтобы показать доступное место на диске, воспользуйтесь утилитой:
$ sudo cfdisk
В данном примере вижно, что на диске /dev/sda есть свободно место размером 2 Гб. Выберите раздел, который нужно расширить (/dev/sda3 в этом примере) и выберите в меню Resize .
Чтобы применить изменена к разделу, выберите Write .
В моем случае мне нужно расширить диск на виртуальной машине с Ubuntu 22.04 LTS. По умолчанию приустановке в этой версии Ubuntu используются тома LVM :
$ sudo lsblk
Для расширения тома на LVM нужно увеличить PV (Physical Volume):
$ sudo pvresize /dev/sda3
После этого можно расширить логической том (используем все доступно свободное пространство):
$ sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
Теперь нужно расширить файловую систему:
$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
Проверьте свободное место в Linux с помощью команды:
$ df -h
Если у вас не используются LVM тома, можно использовать утилиту parted для расширения разделов в Linux :
$ sudo parted
Выведите сколько неразмеченного пространства свободно на диске:
print free
Видно, что Free Space = 2149MB
Чтобы увеличить раздел /dev/sda3, выполните:
resizepart 3
Укажите новый размер раздела (в данном примере нужно указать размер End из блока Free Space)
End? [21.5GB]? 23.6G
Завершите сеанс parted:
quit
Осталось растянуть файловую систему (для файловых систем ext4, 3 и 2):
$ sudo resize2fs /dev/sda3
Итак, в данной статье мы разобрались в способах расширения виртуального жесткого диска в среде VMWare vSphere с гостевой ОС Windows и Linux. В отдельно статье мы описали, как уменьшить размер виртуального диска в VMware .