Удалить мертвый datastore из vcenter

Автор George, Сегодня в 01:17

« назад - далее »

George

Как полностью удалить «мертвый» (Inaccessible) iSCSI/NFS датастор из vCenter 7 / 8

Часто возникает ситуация, когда СХД уже отключена, а в vCenter остается недоступный датастор. При этом кнопка Delete или Unmount неактивна (серая), а стандартное удаление блокируется.

Ниже собраны все варианты решения этой проблемы — от простых к радикальным.



Вариант 1. Удаление через vSphere API (PowerCLI)
Если датастор завис в состоянии Ghost/Orphaned, стандартный командлет
Код: bash
Remove-Datastore
падает с ошибкой пустого параметра VMHost. Нужно вызвать удаление объекта напрямую через API vCenter.

1. Откройте PowerCLI и подключитесь к vCenter:
Код: bash
Connect-VIServer -Server <IP_или_FQDN_vCenter>

2. Получите системный объект датастора:
Код: bash
$ds = Get-Datastore -Name "ИМЯ_ДАТАСТОРА" | Get-View
(Проверьте себя, выполнив
Код: bash
$ds.Name
— должно отобразиться имя датастора).[/i]

3. Принудительно уничтожьте объект в инвентаре:
Код: bash
$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. Перейдите в самый её конец, нажмите пробел и допишите:
Код: bash
rw init=/bin/bash
5. Нажмите F10 (или Ctrl+X). Система загрузится в консоль со встроенным root.
6. Введите команду:
Код: bash
passwd
и задайте новый сложный пароль.
7. Примените изменения командой принудительной перезагрузки:
Код: bash
reboot -f



Вариант 4. Радикальный: Удаление напрямую из базы данных vCenter (vPostgres)
Если vCenter намертво заблокировал объект, его можно вычистить из таблиц СУБД.

1. Сделайте снапшот vCenter перед началом работы с БД!
2. Подключитесь к vCenter по SSH под пользователем root. Если открылся vCenter Appliance Shell, перейдите в нормальный шелл командой
Код: bash
shell
.
3. Узнайте текущий пароль от встроенной базы данных:
Код: bash
cat /etc/vmware-vpx/vcdb.properties
Скопируйте значение из строки password = ...

4. Подключитесь к базе данных:
Код: bash
/opt/vmware/vpostgres/current/bin/psql -U postgres -d VCDB
(Вставьте скопированный пароль при запросе).

5. Найдите внутренний числовой ID вашего мертвого датастора:
Код: bash
SELECT id, name FROM vpx_entity WHERE name = 'ИМЯ_ДАТАСТОРА';
Запомните число из колонки id (например, 123).

6. Выполните последовательное удаление связей из таблиц (замените ХХХ на ваш ID):
Код: bash
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 (это не прервет работу запущенных на хостах виртуальных машин):
Код: bash
service-control --restart vmware-vpxd

После перезапуска службы (2-3 минуты) датастор полностью исчезнет из vCenter.
  •  

🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.