Vmware не удаляется datastore
Удаление виртуальной машины через vSphare или ESXI интерфейс
Данный метод по удалению виртуальной машины со всеми файлами является самым простым. Его суть заключается в том, что вы будите использовать веб-интерфейс вашего гипервизора. В vCenter переходите в раздел "Hosts and Clusters" и среди списка серверов находите нужный в моем примере, это будет виртуальная машина term82. Щелкаем по нему правым кликом мыши и из контекстного меню выберите пункт "Delete from disk"
- Delete from disk - Полностью удаляет всю виртуальную машину со всеми файлами с ваших датасторов, без возможности ее восстановления штатными средствами
- Remove from Inventory - Удаляет виртуальную машину из видимости "Hosts and Clusters", но сами файлы виртуальной машины будут все еще лежать на вашем датасторе, это используют например при переносе виртуальных машин между серверами vCenter, где файлы сервера просто добавляются в Inventory.
Пункт "Remove from Inventory" вы можете использовать еще при глюке, когда виртуальная машина в списке доступных имеет статус Invalid (Unknown)
Вас еще раз предупредят, что файлы виртуального сервера будут уничтожены, вам нужно подтвердить действие.
То же самое вы можете выполнить и на самом веб-интерфейсе отдельного ESXI хоста. Находите нужную виртуальную машину и так же через контекстное меню вы выбираете пункт "Delete", это более понятная формулировка, чем в vSphere.
Тут так же нужно подтвердить свое действие по удалению.
Как массово удалить виртуальную машину через PowerCLI
После знакомства с командлетами нужно научиться автоматизировать наши задания и посмотреть, как сделать все то же самое, но с большим количеством серверов. Тут есть несколько простых конструкций. Создадим переменную с двумя серверами:
Удостоверимся, что в нее попадают наши два виртуальных сервера и произведем удаление $VMs.
Как видим при удалении переменной $VMs, у нас идет запрос на удаление двух виртуальных серверов, term72 и term73.
То же самое можно сделать имя файл со списком серверов, который так же помещается в переменную. Вам нужно заранее подготовить обычный txt файл, где каждый сервер будет находится на новой строке. Далее есть такой командлет Get-Content. Пишем:
Проверяем, что в переменную $VMs попали сервера из файла.
Далее выполняем команду по удалению виртуалок.
После выполнения команды, если вывести запрос по поиску всех серверов с именем term*, то мы ничего не обнаруживаем.
Если в этот момент посмотреть vCenter, то тут вы увидите массовые задания по удалению.
Так же я могу с вами поделиться полезным скриптом, который проверяет статус виртуальной машины, если она работает, то идет выключение, а уже потом удаление.
$VMs = (Get-Content servers.txt)
$vmObj = Get-vm $vms
foreach($delete in $vmObj) Remove-VM -VM $delete -DeleteFromDisk -Confirm:$false -RunAsync | Out-Null>
13.04.2022
itpro
VMWare
комментария 2
Несколько раз встречался ситуацией, когда NFS хранилище на хосте ESXi становится недоступным / неактивным, а подсвечивается в списке хранилищ хоста серым цветом, хотя на сетевом уровне хранилище остается доступным. Обычно помогает удаление NFS хранилища и повторное его добавление.
Однако случается, что удалить такое неактивное NFS хранилище из конфигурации хоста ESXi не удается с ошибкой:
The resource datastore_nfs02 is in use.Call «HostDatastoreSystem.RemoveDatastore» form object «datastoreSystem-28» on vCenter Server «xxxx» failed.
CannotRemove datastore ‘datastore_name’ because Storage I/O control is enabled on it. Correct it and re-try the operation
Судя по ошибке удалить NFS хранилище не удается из-за включенного компонента управления вводом-выводом хранилища ( Storage I/O control или SIOC). При отключении Storage I/O Control для хранилища появляется другая ошибка:
Какой-то замкнутый круг…
Решение
Чтобы корректно удалить NFS хранилище на хосте VMWare ESXi, необходимо напрямую по SSH подключится серверу (включить SSH можно из интерфейса vSphere так).
Выведем список NFS хранилищ в системе так:
В ESXi 4.x команда аналогичная команда выглядит так:
Чтобы отмонтировать NFS хранилище, выполним
В ESXi 4.x команда такая:
Если хранилище из интерфейса не пропадет, нужно нажать кнопку Refresh в разделе хранилищ хоста ESXi.
Примечание. Эту операции придется выполнить на каждом хосте ESXi, на котором нужно требуется удалить неактивное хранилище.
Предыдущая статья Следующая статья
Уменьшение размера виртуального диска на ESXi
Доступ к данным на VMFS разделе из-под Windows / Linux / ESXi
Сжимаем тонкий (thin) диск в ESXi 5
Резервное копирование и восстановление конфигурации сервера VMWare ESXi
Спасибо, отличный мануал — по нему удалось отмонтировать зависшее неактивное NFS хранилище на VMware ESXi 6.7.
13.04.2022
itpro
VMWare, Виртуализация
комментария 2
Рассмотрим гипотетическую проблему потери или повреждения VMFS хранилища, подключенное к ESXi хосту/vSphere. Например, из-за человеческой ошибки, когда администратор VMware случайно удалил VMFS хранилище, или когда диск/LUN с VMFS был отключен/потерян из-за ошибок на устройстве хранения/резервного копирования. В этой статье мы покажем, как вручную восстановить таблицу разделов на диске, где находилось VMFS хранилище.
Допустим администратор VMware, случайно выбрал Delete вместо Unmount и удалил VMFS хранилище.
В первую очередь, не паникуйте. Не надо пересоздавать VMFS датастору из интерфейса vSphere, и не делайте других действий, которые перезапишут данные старого vmfs разделе на диске (LUN).
Откройте интерфейс клиента vCenter, перейдите в раздел Storage -> Devices и найдите в списке диск (LUN) с ранее подключенным vmfs datastore. Нужно получить полный путь к диску (с идентификатором naa). На моем скриншоте это:
Включите SSH доступ на хосте ESXi, с которого доступен удаленный LUN и подключитесь к нему с помощью ssh клиента (я использую встроенный ssh клиент Windows)
Проверьте осталась ли таблица разделов на этом устройстве:
partedUtil getptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565 Команда вернула, что на указанном диске/LUN есть таблица разделов GPT
Теперь нужно получить начальный и конечный блок раздела удаленного VMFS на диске.
Чтобы вывести суммарную информацию о всех разделах, доступных с ESXi хоста, и найти начальный блок удаленного VMFS раздела, выполните такой скрипт:
В данном примере вывела информацию о нашем удаленном разделе (testVMFS) и мы получили номер начального блока 2048 этого раздела.
Теперь нужно получить конечный блок VMFS раздела на диске:
partedUtil getUsableSectors /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565
В нашем примере это 20971486.
Если эта команда вернет ошибку “Unknown partition table on disk”, нужно руками прописать метку GPT раздела:
partedUtil mklabel /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565 gpt
Теперь нужно узнать GUID таблицы разделов для VMFS. Это всегда AA31E02A400F11DB9590000C2911D1B8.
Вы можете вывести все возможные GUID таблиц разделов с помощью команды:
Итак, мы получили следующие данные:
- LUN ID — naa.60003ff44dc75adc87daa4e08f467565
- Start Block – 2048
- End Block – 2097148
- GPT GUID – AA31E02A400F11DB9590000C2911D1B8
Теперь создайте таблицу разделов на вашем диске используя полученные вами данные:
partedUtil setptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565 gpt "1 2048 20971486 AA31E02A400F11DB9590000C2911D1B8 0"
Еще раз проверим разделы на диске, и убедимся, что теперь на нем виден VMFS раздел:
partedUtil getptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565
Теперь нужно смонтировать данное VMFS хранилище:
vmkfstools -V
esxcli storage core adapter rescan --all
Откройте клиент vSphere, убедитесь что удаленное VMFS хранилище появилось. Смонтируйте его.
На VMFS хранилище сохранились все файлы, в том числе iso образы и файлы виртуальных машин.
13.04.2022
itpro
VMWare
Один комментарий
В рамках миграции данных и виртуальных машин со старого хранилища HP MSA 200 на новую систему хранения Dell EMC Unity (оба подключены через SAN) столкнулся с проблемой при удалении пустого VMFS хранилища в VMWare vSphere. При попытке отключить VMFS хранилище от ESXi хостов появляется ошибка о том, что хранилище используется:
Судя по ошибке ясно, что VMFS хранилище не удаляется, т.к. ESXi хосты или vSphere все еще используют хранилище для записи каких-то данных. Согласно документации VMWare, при удалении LUN из vSphere нужно проверить следующие пункты:
- На VMFS хранилище отсутствуют файлы виртуальных машин, шаблонов; снапшотов и ISO образов (нужно смигрировать ВМ на другое VMFS хранилище, либо выключить и удалить или разрегестрировать в vSphere);
- Для хранилища отключен Storage I/O Control;
- Датастор не входит в Datastore Cluster;
- LUN не используется как RDM устройство;
- VMFS хранилище не используется для хранения данных vSphere HA, Storage DRS, логов, дампов (/vmkdump/), данных vSAN (/vsantraced/), данных для техподдержки (раздел Scratch), файлов подкачки виртуальных машин.
Сами виртуальные машины уже были перемещены на новое хранилище с помощью Storage vMotion. Посмотрим, что еще осталось на VMFS хранилище:
Как вы видите, на хранилище остались каталог logdir (каталог с логами), sdd.sf (каталог с описанием SCSI устройств), dbsData (каталог с данными распределенного виртуального коммутатора) и naa… (метаданные VMFS).
В моем случае на VMFS хранилище все еще хранятся логи ESXi хоста (Scratch Location). В настройках хостов ESXi, которые используют данное хранлище, проверьте не указано ли оно в качестве места хранения логов. Перейдите в раздел Manage -> Settings -> Advanced System Settings. Найдите параметр ScratchConfig.CurrentScratchLocation и если он указывает на ваш VMFS датастор, измените путь к каталогу с логами.
Перезагрузите ESXi хост или перезапустите службу Syslog server на хосте.
Попробуем еще раз отключить хранилище от ESXi. Перейдите в раздел Manage -> Storage -> Storage Device. Найдите в списке ваш LUN, выберите его и нажмите на кнопку Detaches the selected device from the host.
В моем случае опять появилась ошибка:
Detach SCSI LUN The resource is in use.
Я еще довольно долго пытался найти, кто же использует это хранилище и решил, что самый простой способ в моем случае – просто удалить таблицу разделов на VMFS хранилище (конечно нужно выполнять удаление крайне внимательно, убедившись, что вы удаляете именно то хранилище, которое вам нужно).
После удаления раздела можно отключить LUN в vSphere – Unmount Datastore. Ошибка «datastore is in use» не должна появиться.
Выберите ESXi хосты, от которых нужно отключить VMFS хранилище:
Или можно сделать Detach из списка подключенных устройств хранения на хосте. В результате статус подключения изменится на Detached.
После этого vmfs хранилище можно удалить (Delete Datastore) и хранилище пропадет из vSphere.
Обновился я тут недавно с 5.1 на версию esxi 5.5 и появилась необходимость удалить не нужный LUN, но не тут то было. В ответ мне выскочило очень информативное окно с ошибкой: Cannot unmount volume ‘Datastore Name:’ because file system is busy. Correct the problem and retry the operation
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-01
Зайдя через встроенный файловый менеджер, который встроен в ESXi 5.5 я заметил, что появились две непонятные папки, vsantraced и vmkdump, которые явно не принадлежат виртуальным машинам.
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-02
После того как я погуглил, то выяснилось, что размер дампов в новой версии побольше и если места не хватает на локальном датасторе, то esxi размазывает их по lunам.
В тоге для того, чтобы появилась возможность отмантировать datastore вам нужно, выключить лишние процессы и удалить dump файлы, чем мы и займемся.
Удаляем vsantraced
Как рассказал гугл этот процесс vsantraced принадлежит VSAN, если вы им не пользуетесь, то нужно остановить службу. Включаем SSh на любом сервере ESXI. Конектимся к нему.
Стопаем службу командой:
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-03
После чего убираем автозагрузку службы.
chkconfig vsantraced off
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-04
Теперь папка vsantraced легко удалиться.
Если вы все же используете VSAN изменить датастор для хранения можно командой
esxcli vsan trace set -p your_datastore
Удаляем dump.
Теперь нам нужно найти полный путь до дампов вашего datastore. Для этого переходим в volumes.
Как мы видим список всех наших датасторов.
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-05
Выбираем нужный и переходим в него командой
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-05
cd Название вашего датастора
Дальше в папку vmkdump
Смотрим список файлов командой ls. И видим название наших файлов.
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-06
Дальше вводим команду.
vmkfstools -D /vmfs/volumes/…path…/xxxx.dumpfile
И из нее нам нужна концовка номера значения owner, это mac адрес сервера esxi который управляет данными логами.
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-07
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-08
Теперь мы знаем концовку нужного mac, но если у вас как и у меня не один или два хоста поиск его займет время, но есть быстрое решение с помощью PowerCLI. Конектимся к вашему vCenter. Командой:
Connect-VIServer -Server (FQDN вашего сервера)
Если у вас сквозная авторизация и вы имеете права вы сразу подконектитесь в противном случае вылезет форма авторизации.
Дальше вводите команду.
Get-View -ViewType HostSystem -propert name, hardware.systeminfo | select
И выводится список всех mac адресов сетевых карточек.
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-09
После чего как вы выяснили что за хост, подключаемся к нему по ssh и вводим команду удаления dump.
esxcli system coredump file remove --force
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-10
После чего попытавшись снова сделать unmount нужного lun все будет ок.
Cannot unmount volume Datastore Name because file system is busy. Correct the problem and retry the operation-11
Как удалить виртуальную машину через PowerCLI
Чем плохи графические методы, это отсутствием автоматизации и невозможностью массового удаления виртуальных машин. Предположим, что вам нужно бахнуть 50 серверов, сколько времени вы потратите на это и графики, а если вообще нужно выполнить удаленно. Поэтому вы должны использовать оболочку PowerCLI. Он устанавливается в систему отдельно, как это сделать я рассказывал вот тут.
Подключаемся к нашему vCenter серверу или ESXI хосту. Для этого введите в оболочке команду:
Далее есть такой командлет Get-VM, который может вам показать наличие нужных виртуальных машин. Мои виртуальные машины все называются term70-80. Зная это я могу вывести полный список.
Далее для удаления виртуальной машины есть командлет Remove-VM со своими ключами:
- VM - Задает виртуальные машины, которые вы хотите удалить.
- Confirm - Если значение равно $true, это означает, что командлет запрашивает подтверждение перед запуском. Если значение равно $false, командлет запускается без запроса подтверждения пользователя.
- DeletePermanently - Указывает, что вы хотите удалить виртуальные машины не только из инвентаря, но и из хранилища данных.
RunAsync - Указывает, что команда немедленно возвращается, не дожидаясь завершения задачи. В этом режиме выходом командлета является объект Task. Для получения дополнительных сведений о параметре RunAsync запустите «help About_RunAsync» в консоли VMware PowerCLI. - Server - Указывает сервер vCenter Server, на котором вы хотите запустить командлет. Если этому параметру не задано значение, команда выполняется на серверах по умолчанию.
- WhatIf - Указывает, что командлет запускается только для отображения изменений, которые будут внесены, и на самом деле никакие объекты не изменяются.
Давайте теперь для примера удалим виртуальную машину term79, для этого введите:
У вас появится подтверждение на удаление, говорим "Y".
Файлы сервера все также продолжают лежать на датасторе.
Давайте теперь используем ключ -DeletePermanently, это позволит полностью с датасторов удалить виртуальный сервер.
У вас выскочит подтверждение ваших действия, если нажмете "Y", то файлы VM будут полностью удалены.
Если не хотите видеть подтверждения, то воспользуемся ключом -Confirm:$false
В веб интерфейсе вы увидите задание по удалению сервера.
Постановка задачи
В моей инфраструктуре есть система управления виртуализацией VMware vSphere 7 и кластер построенный на базе ESXI 6.5. Недавно я создавал новую отказоустойчивую терминальную ферму HA RDS на базе Windows Server 2016, состоящую из 50 виртуальных машин. RDS ферма работает без проблем и нареканий, поэтому старые виртуальные сервера от фермы на базе Windows Server 2012 R2 я могу смело удалять, но я хочу их удалить разными методами, чтобы напомнить что-то себе и научить чему-то вас.
Читайте также: