Проверка того, сколько места действительно доступно для вашей виртуальной машины Hyper-V

Опубликовано: 16 Апреля, 2023
Проверка того, сколько места действительно доступно для вашей виртуальной машины Hyper-V

Когда вы создаете новую виртуальную машину или новый виртуальный жесткий диск в Hyper-V, по умолчанию Hyper-V использует тонкую подготовку. Это здорово, если ваша цель — сэкономить место для хранения, но одним из недостатков является то, что вы можете легко в конечном итоге выделить физическое хранилище. Иногда я ловил себя на том, что собираюсь выполнить какое-то действие внутри виртуальной машины, но мне интересно, достаточно ли физического пространства для выполнения действия.

Одно из очевидных решений этой проблемы — взглянуть на хост-сервер или массив хранения и посмотреть, сколько места осталось. Однако также можно проверить доступное хранилище, даже не выходя из виртуальной машины. Это состоит из нескольких шагов.

Шаг 1. Определите, какой хост используется

Чтобы немного упростить ситуацию, я собираюсь предположить, что виртуальные машины организации находятся во внутренней памяти на нескольких хостах. Конечно, в реальной жизни так будет не всегда, но технику, которую я собираюсь вам показать, можно легко адаптировать к другим ситуациям.

Таким образом, первый шаг — выяснить, на каком хосте работает виртуальная машина. Когда вы устанавливаете ОС Windows на виртуальную машину Hyper-V, Hyper-V встраивает имя хоста в реестр гостевой операционной системы. Используется следующее расположение: HKLMSOFTWAREMicrosoftVirtual MachineGuestParameters.

Один из способов получить это имя хоста — записать его в переменную PowerShell. Вот несколько команд для этого:

$VMHost = (get-item "HKLM:SOFTWAREMicrosoftVirtual MachineGuestParameters").GetValue("HostName")

Если вы посмотрите на рисунок ниже, то увидите, что переменная $VMHost теперь содержит имя хоста, на котором находится виртуальная машина.

Шаг 2: Подключитесь к хосту

Вторым шагом в этом процессе является подключение к хосту. Для этого вам понадобится действительный набор учетных данных для хоста. Вы можете сопоставить эти учетные данные с переменной с помощью следующей команды:

$Cred=Получить учетные данные

Для подключения к узлу необходимо использовать командлет New-PSSession для создания сеанса, а затем использовать командлет Enter-PSSession для входа в сеанс. При этом вы можете использовать переменную $Cred и переменную $VMHost, созданную на предыдущем шаге. Вот команды:

New-PSSession -ComputerName $VMHost -Credential $Cred Enter-PSSession -ID <идентификатор сеанса>

Если эти команды не срабатывают, убедитесь, что WinRM включен на узле и что виртуальная машина подключена к DNS-серверу, который может разрешать доменное имя узла. Вы можете увидеть, как выглядит процесс подключения на следующем рисунке.

Шаг 3. Найдите путь к хранилищу ВМ

Третий шаг в этом процессе — выяснить путь к виртуальному жесткому диску виртуальной машины. Поскольку мы установили сеанс с хостом Hyper-V, мы можем использовать командлеты уровня хоста. Существует довольно много разных способов определить путь к хранилищу виртуальной машины, но я покажу вам метод, который мне нравится использовать.

Этот конкретный метод состоит из двух команд. Единственное, что вам нужно будет знать, это имя виртуальной машины. В моем случае виртуальная машина называется Win10-1803, поэтому вы увидите ссылку на виртуальную машину на снимке экрана.

Итак, с учетом сказанного, вот команды:

$VMPath = Get-VM <имя виртуальной машины> | Select-Object -ExpandProperty Жесткие диски $VMPath.Path

Вы можете увидеть вывод команды на следующем рисунке.

Шаг 4: Определите доступное пространство

Следующим шагом в этом процессе является простая проверка доступного места. К сожалению, вы не можете просто ввести Get-ChildItem и ожидать, что он покажет каталог и оставшееся пространство, как использовалась старая команда DIR. Вместо этого вы можете использовать следующие команды:

$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='F:'" | Select-Object * $disk.Size/1GB $disk.FreeSpace/1GB

Эта команда сопоставляет физический диск (в данном случае F) с переменной $Disk. Затем мы можем просмотреть общий размер диска и количество оставшегося свободного места. Обратите внимание, что я добавил /1GB к последним двум командам. Это приводит к тому, что дисковое пространство отображается в гигабайтах, а не в байтах. Вы можете увидеть, как это выглядит на следующем рисунке:

Шаг 5: Сравните

Если вам интересно, как физическое пространство хоста соотносится со свободным пространством виртуальной машины, все, что вам нужно сделать, это выйти из сеанса PowerShell (с помощью командлета Exit-PSSession), а затем повторить команды, показанные в предыдущем разделе.. Обязательно замените букву диска, на которую вы ссылались ранее, буквами дисков, используемыми в вашей виртуальной машине. Например, если вы посмотрите на следующий рисунок, вы увидите, что, поскольку я работаю внутри виртуальной машины, я использую C: в качестве буквы диска.

Таким образом, в этом случае моя виртуальная машина даже близко не использует пространство для хранения, доступное на хосте. Виртуальной машине было выделено около 32 ГБ дискового пространства, и осталось около 17 ГБ. С другой стороны, хост имеет в общей сложности 2469 ГБ дискового пространства на томе, где находится виртуальная машина, и 1556 ГБ свободного места. Следовательно, эта виртуальная машина не рискует исчерпать дисковое пространство хоста.

Место для хранения виртуальной машины Hyper-V: несколько способов проверить

Как упоминалось ранее, иногда гораздо практичнее просто проверить консоль хоста или, возможно, использовать инструмент мониторинга, чтобы увидеть, сколько места для хранения осталось на хосте. Однако, если вы работаете внутри виртуальной машины, можно проверить базовое пространство на физическом диске, даже не выходя из виртуальной машины.