Динамическое изменение размеров дисков виртуальных машин доступно, начиная с версии Hyper-V в Windows Server 2012 R2. Функция Online VHDX Resize позволяет вам увеличить или уменьшить размер vhdx диска виртуальной машины онлайн (без остановки ВМ). В этой статье мы рассмотрим, как увеличить или уменьшить (сжать) размер диска виртуальной машины в Hyper-V, запущенном в Windows 10 или Windows Server 2016 (инструкции применима для всех поддерживаемых версий Hyper-V, в том числе бесплатного Hyper-V Server).
Содержание:
- Увеличиваем размер виртуальный VHDX диска в Hyper-V
- Как сжать виртуальный VHDX диск в Hyper-V?
- Изменить размер виртуального диска Hyper-V с помощью PowerShell
Основные возможности и ограничений Online VHDX Resize в Hyper-V:
- Вы можете изменить размер виртуального диска Hyper-V любого типа: фиксированного, динамического, и дифференциального.
- Вы можете изменить размер VHDX диска (в том числе системного диска гостевой ОС) на-лету. Останавливать виртуальную машину не нужно;
- VHDX диск должен быть подключен к ВМ через виртуальный SCSI контролер (не поддерживается онлайн расширение дисков на IDE контроллере, такую ВМ придется выключить для изменения размера диска);
- Online VHDX Resize работает как на первом, так и втором поколении виртуальных машин Hyper-V;
- В качестве гостевой ОС может выступать, как Windows, так и Linux;
- Поддерживается как расширение виртуальных дисков (extend), так и их сжатие (shrink);
- Вы можете изменить размер vhdx диска из графической консоли Hyper-V, PowerShell или Windows Admin Center;
- Не поддерживается изменение размера общих VHDX файлов или VHD Set (VHDS/AVHDX) дисков, используемых в гостевых кластерах;
- Нельзя изменить размер виртуального диска, для которого создан снапшот (например при резервном копировании).
Увеличиваем размер виртуальный VHDX диска в Hyper-V
Рассмотрим, как увеличить размер виртуального VHDX диска с помощью консоли Hyper-V Manager.
- В менеджере виртуальных машин Hyper-V выберите виртуальную машину, перейдите в ее настройки (Settings) -> SCSI Controller;
- Выберите нужный виртуальный диск и нажмите кнопку Edit;
Если кнопка Edit неактивна, и внизу указано Edit is not available because checkpoint exist for this virtual machine, нужно удалить снапшоты. Возможно необходимо отключить Production Checkpoint в свойствах ВМ.
- В запустившемся мастере выберите пункт Expand;
- Укажите новый размер виртуального жесткого диска (в нашем примере мы расширим диск до 170 Гб);
- Теперь нужно подключится к гостевой ОС, диск которой был расширен. Рассмотрим, как увеличить диск в гостевой ОС Windows. Откройте консоль диспетчера управления дисками Disk Manager. На диске должна появиться дополнительная неразмеченная область 43 Гб (Unallocated);
- Щелкните по разделу, который нужно растянуть и выберите Extend Volume (можно расширить только раздел, находящийся слева от неразмеченной области). Укажите на сколько нужно расширить этот раздел за счет неразмеченного места (подробнее процедура расширения описана здесь);
- После выполнения процедуры Extend, размер диска будет увеличен.
В гостевой Linux можно расширить диск с помощью утилиты Parted.
Как сжать виртуальный VHDX диск в Hyper-V?
Рассмотрим теперь как уменьшить размер виртуального vhdx диска на Hyper-V.
- Перед тем как сжать виртуального диска из консоли Hyper-V, необходимо внутри гостевой ОС уменьшить размер логического раздела на диске, освободить часть места, преобразовав его в неразмеченную область. Для этого внутри гостевой ОС откройте диспетчер управления дисков, выберите нужный раздел и выберите пункт Shrink Volume (Сжать том);
Примечание. Пункт Shrink Volume будет доступен только в том случае, если на диске есть свободное место.
- Укажите на сколько нужно уменьшить размер раздела (в нашем примере, мы указали 50 Гб);
- После уменьшения размера раздела в гостевой ОС, нужно открыть консоль Hyper-V и перейти в настройки виртуального диска. Нажмите кнопку Edit;
- В мастере Edit Virtual Hard Disk выберите пункт Shrink, затем укажите новый размер vhdx файла. Обратите внимание, что вы не можете сделать размер диска меньше, чем размер данных на нем. В нашем случае можно уменьшить диск с 40 до 31 Гб.
Прежде чем уменьшать размер VHDX файла, попробуйте дефрагментировать его с помощью оптимизации Hyper-V. Выберите пункт Compact в предыдущей форме. Либо для оптимизации и дефрагментации динамического диска Hyper-V можно использовать команду PowerShell:
Optimize-VHD -Path 'D:Hyper-Vfs01.vhdx'
- Готово
Изменить размер виртуального диска Hyper-V с помощью PowerShell
Можно изменить размер VHDX диска с помощью PowerShell. Для этого используется командлет Resize-VHD (не путать с
Resize-VirtualDisk
, который относится к командлетам модуля управления дисками Storage).
Примечание. В современных версиях Hyper-V для изменения размера виртуального диска с помощью командлета Resize-VHD не обязательно выключать виртуальную машину.
Сначала нужно получить полный путь к VHDX диску виртуальной машины:
Get-VM -VMName fs01 | Select-Object VMId | Get-VHD
Здесь же можно увидеть реальный размер VHDX файла на диске (FileSize) и максимальный размер, который он может занять (Size).
MinimumSize – это минимальный размер VHDX диска, до которого можно уменьшить файл виртуального диска.
Чтобы увеличить размер VHDX диска нужно указать его новый размер:
Resize-VHD -Path 'C:VMfs01Virtual Hard Disksfs01.vhdx' -SizeBytes 50Gb
Если вы указали размер виртуального диска меньше, чем он занимает на диске, появится ошибка:
Resize-VHD : Failed to resize the virtual disk
.
Вам осталось расширить диск в гостевой ОС.
Можно сделать это удаленно через PowerShell Remoting. Подключитесь к виртуальной машины с помощью Invoke-Command или Enter-PSSession (по сети или через PowerShell Direct)
Enter-PSSession -ComputerName fs01
Получим информацию о том, на сколько можно расширить раздел и расширим его до максимального размера:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
Если нужно уменьшить размер виртуального диска до минимально-возможного, выполните:
Resize-VHD -Path 'C:VMfs01Virtual Hard Disksfs01.vhdx' -ToMinimumSize
Данная команда уменьшила максимальный размер VHDX файла на 6 Гб.
Инструкции по изменению размера виртуальных дисков в других гипервизорах доступны по ссылкам: KVM, VMWare.
В этой статье рассказывается, как изменить размер раздела VHD / VHDX без диспетчера Hyper-V, изменить размер виртуального раздела с физического компьютера.
Относится к: Windows 10, Windows 8, Windows 7, Windows Server 2019, Windows Server 2016, Windows Server 2012 (Р2), Windows Server 2008 (Р2), Windows Server 2003 (Р2).
Содержание:
- Подготовка перед изменением размера виртуального раздела VHD / VHDX
- Как изменить размер виртуального диска VHD / VHDX без диспетчера Hyper-V
- Как изменить размер жесткого диска VHD / VHDX без Hyper-V
То же самое с физическим жестким диском, вы можете изменить размер виртуальных разделов для виртуальной машины Hyper-V без потери данных. Изменить размер раздела очень просто, установив NIUBI Partition Editor Hyper-V VM, но возможно ли изменить размер раздела VHD / VHDX без Hyper-V? Ответ да, эта статья представляет подробные шаги для изменить размер виртуального раздела VHD / VHDX и диска без Hyper-V.
Подготовка перед изменением размера виртуального раздела VHD / VHDX
Перед началом изменения размера виртуальных разделов необходимо сделать две вещи:
1. Удалите все контрольные точки, связанные с VHD или VHDX, размер которых вы хотите изменить. В противном случае вы получите сообщение об ошибке ниже и не сможете загрузиться в Hyper-V Manager после изменения размера виртуальных разделов.
Как показано в сообщении об ошибке «Несоответствие идентифицированного родительского виртуального жесткого диска и разностного диска.»
Это легко понять, размер разделов после изменения размера отличается от размера в Checkpoint.
2. Завершите работу гостевой виртуальной машины и закройте Hyper-V Manager или другие приложения, использующие этот VHD или VHDX. В противном случае вы получите сообщение об ошибке «Процесс не может получить доступ к файлу, поскольку он используется другим процессом».
Как изменить размер виртуального диска VHD / VHDX без диспетчера Hyper-V
Шаг 1: Откройте Управление дисками in физический компьютер. (Правый клик Windows пометьте слева внизу или нажмите Windows и R клавиши вместе, введите diskmgmt.msc и нажмите Enter.)
Шаг 2: Нажмите Действие меню> Присоединить виртуальный жесткий диск
Шаг 3: Нажмите Приложения выберите файл VHD / VHDX и затем нажмите OK, чтобы продолжить.
Затем этот виртуальный диск прилагается. Как видно на скриншоте, значок диска 2 отличается от двух других физических жестких дисков.
Шаг 4: Скачать и установить NIUBI Partition Editor на физический сервер или персональный компьютер. То же самое с управлением дисками, вы увидите все разделы физического и виртуального диска в NIUBI Partition Editor, В виртуальном диске 2 диск K является системным разделом в VHD / VHDX.
Шаг 5: Щелкните правой кнопкой мыши диск M: и выберите «Изменить размер / переместить объем«, тянуть левая граница направо во всплывающем окне или введите сумму в поле «Ранее не размеченное пространство«напрямую. Тогда диск D будет сжат, а с левой стороны от него будет оставлено нераспределенное пространство.
Шаг 6: Щелкните правой кнопкой мыши диск K: и снова выберите «Изменить размер/переместить том», во всплывающем окне перетащите правая граница вправо, чтобы объединить это нераспределенное пространство. Затем диск K расширяется в виртуальном режиме.
Шаг 7: Нажмите Apply в левом верхнем углу, чтобы вступить в силу. (Размеры разделов не изменятся до щелчка Apply подтвердить.)
Пока в любом разделе есть свободное неиспользуемое пространство, вы можете уменьшить его, чтобы развернуть еще один на то же виртуальный диск. После изменения размера виртуальных разделов не забудьте отсоединить VHD, в противном случае, когда вы включите эту виртуальную машину в Hyper-V, вы получите ошибку «Процесс не может получить доступ к файлу, поскольку он используется другим процессом.»
Как изменить размер виртуального жесткого диска VHD / VHDX без диспетчера Hyper-V
Виртуальный диск VHD / VHDX лучше, чем физический жесткий диск с фиксированным размером, и его размер можно быстро и легко изменить. Для выполнения этой задачи вы можете использовать диспетчер Hyper-V или PowerShell без Hyper-V.
Примечание: перед расширением виртуального диска с помощью PowerShell вы также должны закрыть гостевую виртуальную машину и удалить все связанные контрольные точки.
Как изменить размер / расширить VHD / VHDX диск без Hyper-V:
- Откройте PowerShell с правами администратора на панели быстрого запуска, в меню Пуск или в другом месте на вашем физическом компьютере.
- Тип Resize-VHD -Path ‘E: hyperv.vhdx’ -SizeBytes 500 ГБ
Объяснение:
- ‘E: hyperv.vhdx’ означает абсолютный путь и имя файла .vhd / .vhdx с кавычками.
- 500 ГБ означает расширение этого виртуального жесткого диска до 500 ГБ, не добавляя 500 ГБ.
После расширения виртуального диска дополнительное пространство будет показано как Не распределен на конецзатем беги NIUBI Partition Editor и объединить нераспределенное пространство с другими разделами. Следуйте инструкциям в видео:
- Чтобы расширить любой смежный раздел, просто щелкните его правой кнопкой мыши, чтобы запустить «Изменить размер/переместить том», а затем перетащите границу, чтобы объединить нераспределенное пространство.
- Чтобы расширить несмежный раздел с Нераспределенным пространством, вам нужно переместить Нераспределенное пространство, чтобы оно было смежным с обеих сторон.
Помимо изменения размера раздела физического и виртуального диска, NIUBI Partition Editor помогает делать много других операций.
СКАЧАТЬ
Обновлено 13.08.2016
Всем привет сегодня я хочу вам рассказать, о очень полезной функции которой к сожалению нет у VMware ESXI 5.5, а есть у Hyper-V начиная с Windows Server 2012. Это функция уменьшения размера виртуального диска. Сделано очень удобно, так как это может спасти администратора виртуализации он неправильно спланированной инфраструктуры виртуальной машины.
Как уменьшить виртуальный диск hyper v
Напомню, что VMware тоже давал некоторые методы по уменьшению vmdk файлов, но там это делалось не очень удобно через конвертер. В MS как ни странно данный процесс сделали в виде удобного мастера.
Итак как же уменьшить виртуальный диск hyper v, для этого логинимся в свою виртуальную машину, у меня на ней установлен Windows Server 2012 R2, но это не принципиально. Вам нужно зайти в оснастку Управление дисками.
Выбираем диск который следует уменьшить, щелкаем по нему правым кликом и нужна нажать Сжать.
Задаете размер сжимаемого пространства и жмете сжать.
в итоге у вас появится не размеченное пространство на вашем локальном диске, за счет него мы и уменьшим диск hyper-v.
Теперь выключаем виртуальную машину и заходим в ее свойства.
Выбираем нужный виртуальный диск, и запускаем пункт правка.
Откроется мастер изменения виртуального жесткого диска
Как видите, тут тоже есть функция Сжать, она то и позволит в hyper-v уменьшить размер диска, жмем далее.
Мастер вам подскажет до какого минимума можно сжать диск.
Готово.
Осталось только проверить, запускаем виртуалку и открываем Мой компьютер. И как видите, все успешно сжалось.
Как увеличить виртуальный диск hyper v
Для увеличения виртуального жесткого диска, следует в мастере изменения виртуального жесткого диска, выбрать пункт развернуть, перевод конечно очень корявый. Так, что увеличить диск hyper v, ни чуть не сложнее.
Уменьшить с помощью Powershell
давайте тоже самое проделаем из командной строки сильного языка:) Первым делом у нас есть виртуальная машина dc1, давайте ее закинем в переменную и посмотрим ее свойства.
$vm = Get-VM -Name DC1
Get-VHD -VMId $vm.VMId
Мы будем рассматривать вот такие вот значения
- File Size > по сути это нынешний размер файла VHD. Отображает, сколько реально используется.
- Size > нынешний размер виртуального диска. Если VHD динамический, то вам отобразят максимальный размер, до которого он может увеличиться
- Minimum Size > отображает до какого размера можно уменьшить VHD.
Имеем динамически расширяемый VHD — размером 40Gb, из которых занято > 20Gb. Как видите свободное пространство имеется, но оно практически одинаково с минимальным, и уменьшить диск, не выйдет.
Как и в графическом варианте, виртуальная машина должна быть потушена.
$vm.State
$vm | Stop-VM -Force
Берем и монтируем данный виртуальный диск к нашей системе на физическом компьютере, ее еще называют родительской. Посмотрим свойства данного виртуального диска
Mount-VHD -Path $vm.HardDrives.Path -Passthru | Get-Disk
Запоминаем номер диска и поглядим все разделы на нем с помощью команды
Get-Partition -DiskNumber 3
Нас интересует раздел, имеющий букву диска. Уменьшим его до 30Gb и проверим:
Resize-Partition -DriveLetter E -Size 30GB
Get-Partition -DriveLetter E
Как видите команда прошла успешно, давайте отмантируем данный VHD:
Dismount-VHD -Path $vm.HardDrives.Path
И уменьшим его до минимально значения:
Resize-VHD -VMId $vm.HardDrives.Path -ToMinimumSize
Все мы с вами уменьшили VHD виртуальный диск на Hyper-V.
Материал сайта pyatilistnik.org
Уменьшить размер диска Hyper V можно через диспетчер виртуальных машин и с помощью Powershell. Оба варианта мы покажем на примерах.
В Hyper V возможно уменьшить тип диска VHDX, относящийся ко второму поколению виртуальных машин (Generation 2). Тип VHD уменьшить нельзя. Если вы не уверены в типе винчестера его можно проверить в свойстве виртуальной машины — этот способ показан на скриншоте ниже. Если вы используете VHD можно либо конвертировать тип в VHDX либо скопировать содержимое при создании нового диска Hyper V.
Разницы в сжатии динамических и фиксированных устройств нет.
Перед уменьшением диска Hyper V нужно зайти в саму виртуальную машину где этот файл подключен и открыть диспетчер управления дисками:
Аналогично увеличению диска Hyper V нужно выбрать тот, размер которого необходимо уменьшить. Если есть не используемые разделы, то можно их удалить — эффект тот же. Если таких разделов нет, то нужно в выплывающем меню выбрать «Сжать том…» (Shrink). После нажатия кнопки пойдет расчет места, которое возможно освободить:
В новом окне нужно выбрать размер, который будет вычтен из выбранного диска. «Доступное для сжатия пространство» — максимальный размер, на который мы можем уменьшить раздел. Изначально я попробовал уменьшить на 1 Гб, но в дальнейшем Hyper V отказался уменьшать диск на такое пространство. С уменьшением на 10 ГБ проблем с Hyper V не было. Под «отказался» я имею виду, что не появлялась возможность уменьшения в диспетчере Hyper V. Какой минимальный размер для сжатия точно сказать не могу, но как я и написал при 10 Гб работает нормально.
После завершения процесса сжатия у нас появится неразмеченная область, выделяющиеся черным цветом — это та часть, которая будет убрана в дальнейшем через диспетчер Hyper V. Выключать виртуальную машину не обязательно, но я бы рекомендовал это сделать что бы избежать возможных проблем.
Теперь нужно зайти в настройки виртуальной машины гипервизора:
В открытом окне выбрать виртуальный жесткий диск который вы сжимали и нажмите кнопку редактирования. Тут же мы можем увидеть тип диска, который вы используете VHD или VHDX.
В первом окне ничего нельзя изменить, так как мы открывали конкретный VHDX файл, а не из диспетчера управления дисками Hyper V. Открываем следующее окно, где увидим возможность Hyper V уменьшения размера диска (Сжатие/Shrink). Выбираем ее:
Уменьшить виртуальный диск Hyper V можно на тот размер, на который мы освободили внутренний раздел машины:
На последнем окне еще раз убеждаемся, что введенные данные верны и подтверждаем их:
Виртуальный диск Hyper V уменьшен.
Уменьшение диска Hyper V в Powershell
Первое что нужно сделать это узнать имя виртуальной машины Hyper V для сжатия диска:
Get-VM
Моя виртуальная машина называется Win10 и на примерах вам нужно изменить ее имя на свое. Нам нужно проверить, что файл виртуального винчестера имеет тип VHDX, возможности уменьшения VHD нет:
Get-VMHardDiskDrive -VMName 'Win10' | select Path
Далее включаем виртуальную машину:
Start-VM -Name 'Win10'
Подключимся к операционной системе виртуальной машины. Если вы подключаетесь с хоста гипервизора проблем быть не должно, но возможно потребуется настроить средства для удаленных команд Powershell.
Enter-PSSession -VMName 'Win10'
Либо можно запустить консоль Powershell с самой виртуальной машины.
Сейчас нам нужно уменьшить раздел внутри виртуальной машины что бы в последующем это место убрать через возможности гипервизора. Уменьшить можно и через diskpart, но описывается вариант с Powershell. Нужно выбрать раздел, с которого будет убираться место:
Get-Partition
Конечно не стоит уменьшать размер загрузочного раздела или системного до минимального размера.
Далее нам нужно узнать насколько возможно уменьшить раздел. В этой команде я передаю только букву раздела:
Get-PartitionSupportedSize -DriveLetter C
Если команда запущена не под администратором, то вы увидите ошибку:
Get-PartitionSupportedSize: клиенту не удалось получить доступ к ресурсу CIM.
Если важно увидеть размер в гигабайтах, то можно сделать так:
Get-PartitionSupportedSize -DriveLetter C | % {$_.SizeMin/1GB;$_.SizeMax/1GB}
Если нужно изменить данные на MB или TB просто замените соответствующие буквы.
В этой команде мы указываем конечный размер раздела, а не сколько хотим от него отнять. В случае работы с интерфейсом возможность уменьшения VHDX в диспетчере гипервизора не была активна при неразмеченном пространстве в 1GB. Эта ситуация исправилась при 10GB.
Можно указывать и другую единицу измерения:
Resize-Partition -DriverLetter C -Size 20GB
Виртуальную машину можно оставить включенной, но я бы рекомендовал выключить:
Stop-VM -VMName 'Win10'
Этой командой мы увидим, на сколько мы можем уменьшить диск Hyper V. Я использую конвейер что бы не прописывать путь к файлу VHDX:
Get-VMHardDiskDrive -VMName 'Win10' | Get-VHD
Команда ниже в Hyper V уменьшает размер диска. Я вставил изначально значение, но можно использовать и варианты с примеров выше:
Get-VMHardDiskDrive -VMName 'Win10' | Resize-VHD -SizeBytes 22119727616
Убедимся что диск виртуальной машины Hyper V уменьшен:
Get-VMHardDiskDrive -VMName 'Win10' | Get-VHD
…
Теги:
#powershell
#hyper-v
В этой небольшой статье я покажу, как можно использовать PowerShell для сжатия и оптимизации VHD и VHDX файлов виртуальных машин. Все примеры будут выполнятся на компьютере с Windows 10 с установленной ролью Hyper-V.
Полный список командлетов PowerShell для работы с VHD файлами можно вывести так:
Get-Command -Noun VHD* -Module Hyper-V
Командлет Convert-VHD используется для смены формата виртуального диска (с VHD на VHDX и обратно), типа диска (фиксированный, динамический или разностный) и размера блока файла.
Следующая команда запустит процесс преобразования VHD файла в формат VHDX
Convert-VHD -Path 'D:Hyper-VVirtual Hard Disksnano2.vhd' -DestinationPath 'D:Hyper-VVirtual Hard Disksnano2.vhdx'
У командлета Convert-VHD есть несколько полезных ключей. Например, BlockSizeBytes используется для изменения размера блока, DeleteSource для удаления исходного файла после окончания конвертации, и VHDType для указания типа виртуального диска (фиксированный, динамический или разностный).
Следует помнить, что процесс конвертации выполняется в офлайн режиме (виртуальная машина, использующая данный диск должна быть выключена).
Командлет Optimize-VHD используется для оптимизации места на диске, используемого файлом динамического виртуального жесткого диска. При запуске этого командлета выполняется сжатие VHD файла.
Optimize-VHD -Path 'D:Hyper-VVirtual Hard Diskssrv1e.vhd'
Согласно справке, командлет не только высвобождает неиспользуемые блоки, но и перестраивает блоки для более эффективного использования дискового пространства, что также уменьшает размер VHD/VHDX файлов. В том случае, если оптимизация не требуется, команда может завершиться без изменения размера файла на диске. Параметр Mode можно использовать для изменения режима сжатия (по умолчанию используется режим Full для VHD файлов и Quick для VHDX дисков).
Командлет Resize-VHD используется для сжатия VHDX файлов или увеличения размеров дисков VHD и VHDX. Операция уменьшения размера не будет выполнена, если указан размер, меньший значения параметра MinimumSize.
Get-VHD -Path 'D:Hyper-VVirtual Hard Diskssrv1e.vhd'
Ключ ToMinimumSize можно использовать для автоматического уменьшения размера VHDX диска до минимально допустимого значения.
Resize-VHD -Path 'D:Hyper-VVirtual Hard Diskssrv1.vhdx' -ToMinimumSize