Как полностью удалить «мертвый» (Inaccessible) iSCSI/NFS датастор из vCenter 7 / 8
Часто возникает ситуация, когда СХД уже отключена, а в vCenter остается недоступный датастор. При этом кнопка Delete или Unmount неактивна (серая), а стандартное удаление блокируется.
Ниже собраны все варианты решения этой проблемы — от простых к радикальным.
Вариант 1. Удаление через vSphere API (PowerCLI)
Если датастор завис в состоянии Ghost/Orphaned, стандартный командлет Remove-Datastore падает с ошибкой пустого параметра VMHost. Нужно вызвать удаление объекта напрямую через API vCenter.
1. Откройте PowerCLI и подключитесь к vCenter:
Connect-VIServer -Server <IP_или_FQDN_vCenter>
2. Получите системный объект датастора:
$ds = Get-Datastore -Name "ИМЯ_ДАТАСТОРА" | Get-View(Проверьте себя, выполнив $ds.Name — должно отобразиться имя датастора).[/i]
3. Принудительно уничтожьте объект в инвентаре:
$ds.Destroy_Task()Через 10-15 секунд обновите веб-интерфейс vSphere Client. Если выдает ошибку «A specified parameter was not correct: datastore» или «The operation is not supported on the object», переходите к Варианту 2 или 4.
Вариант 2. Очистка старых iSCSI-таргетов на хостах ESXi
vCenter часто блокирует удаление, потому что программный iSCSI-адаптер на хостах всё ещё пытается достучаться до старого IQN/IP адреса СХД.
1. В vSphere Client выберите каждый хост, который ранее видел этот датастор.
2. Перейдите в Configure -> Storage -> Storage Adapters.
3. Выберите ваш iSCSI адаптер (обычно vmhba64).
4. Внизу перейдите на вкладки Static Targets и Dynamic Targets.
5. Найдите IQN или IP-адрес старой СХД и нажмите Remove.
6. Выполните Rescan Storage на хостах. После этого датастор либо исчезнет, либо кнопка Delete станет активной.
Вариант 3. Что делать, если забыли пароль root от SSH vCenter (Сброс через GRUB)
Если для дальнейших действий нужен SSH, но пароль root утерян, сбросьте его через загрузчик:
1. ОБЯЗАТЕЛЬНО сделайте снапшот ВМ vCenter!
2. Перезагрузите vCenter и в веб-консоли на экране загрузки Photon OS (GRUB) нажмите клавишу e.
3. Найдите строку, начинающуюся со слова linux.
4. Перейдите в самый её конец, нажмите пробел и допишите: rw init=/bin/bash5. Нажмите F10 (или Ctrl+X). Система загрузится в консоль со встроенным root.
6. Введите команду: passwd и задайте новый сложный пароль.
7. Примените изменения командой принудительной перезагрузки: reboot -f
Вариант 4. Радикальный: Удаление напрямую из базы данных vCenter (vPostgres)
Если vCenter намертво заблокировал объект, его можно вычистить из таблиц СУБД.
1. Сделайте снапшот vCenter перед началом работы с БД!
2. Подключитесь к vCenter по SSH под пользователем root. Если открылся vCenter Appliance Shell, перейдите в нормальный шелл командой shell.
3. Узнайте текущий пароль от встроенной базы данных:
cat /etc/vmware-vpx/vcdb.propertiesСкопируйте значение из строки password = ...
4. Подключитесь к базе данных:
/opt/vmware/vpostgres/current/bin/psql -U postgres -d VCDB(Вставьте скопированный пароль при запросе).
5. Найдите внутренний числовой ID вашего мертвого датастора:
SELECT id, name FROM vpx_entity WHERE name = 'ИМЯ_ДАТАСТОРА';Запомните число из колонки id (например, 123).
6. Выполните последовательное удаление связей из таблиц (замените ХХХ на ваш ID):
DELETE FROM vpx_ds_assignment WHERE ds_id = XXX;
DELETE FROM vpx_datastore WHERE id = XXX;
DELETE FROM vpx_entity WHERE id = XXX;
COMMIT;
\q
7. Чтобы интерфейс применил изменения, перезапустите службу инвентаря vCenter (это не прервет работу запущенных на хостах виртуальных машин):
service-control --restart vmware-vpxd
После перезапуска службы (2-3 минуты) датастор полностью исчезнет из vCenter.