Введение
Наш любимый ESX(i) использует файловую систему VMFS, для размещения на ней виртуальных машин.
Все хорошо, кроме одного - для нее не существует обслуживающих утилит. Никаких undelete, unformat и т.п. Мораль - не делать бекапы еще более опасно, чем обычно.
Вот один из примеров проблемы и шаманства с решением -
Пропал VMFS раздел - что делать?
Но проблемы бывают разные. Не очень давно по почте ко мне обращались со схожими вопросами сразу несколько человек: ESX выключился (некорректно, обычно по пропаже питания), после включения VMFS на месте, а вот файлы виртуальных машин заблокированы. Притом заблокированы так, что не то что включить - скопировать(!) не дают.
Перебрав все известные мне способы попиннать по колесам, я развел руками и посоветовал обратиться в поддержку.
В одном случае обратились - и проблема быстро была решена, путем внесения правок в структуру файловой системы.
(кстати, для тех кто не имеет привычки обращаться в поддержку - у VMware
первая линия стала русскоязычной, а продукты VMware без поддержки не продаются - так что обращаемся резко, решительно в случае странных проблем.)
А во втором случае поддержки не было, и нужда заставила найти выход :-)
По результатам изысканий и успешного выколупования данных со мной поделились ранее мне незнакомой утилитой vmfs-tools
из состава лайв сд. Эта утилита позволяет подмонтировать раздел VMFS к другой операционной системе.
Запустив ESX сервер с этого live cd данные с VMFS тома удалось вытянуть.
Монтирование VMFS из под Linux
Разумеется, мне стало интересно, и я поигрался с этой утилитой.
На локальном диске тестового ESX располагается очень нужная мне виртуальная машина (рис.1).
|
Рис.1. ВМ на локальном диске ESX |
Скачал ISO этого live cd, загрузил с него свой тестовый ESX, и вот что увидел (рис.2):
|
Рис.2. Свежезагрузившийся Live CD |
Так как видеть только командную строку лично мне достаточно грустно - я порадовался :-)
Итак, моя задача - получить доступ к разделу VMFS. Посмотрим информацию по разделам соответствующей утилитой - она единственная в местном трее (рис. 3)
|
Рис.3. Просмотр информации об имеющихся разделах |
|
Следующий шаг - подмонтировать этот раздел.Создадим каталог - точку монтирования, у меня это будет каталог vmfs в корне (рис. 4).
|
Рис.4. Раздел vmfs создан (слева), и пуст(справа) |
Я не большой любитель командной строки, поэтому воспользовался Midnight Commander.
Но к командной строке обратиться все таки придется - откроем терминал и воспользуемся командой "vmfs":
root@PartedMagic:~# vmfs /dev/sda5 /vmfs |
Здесь выполнена данная команда, первым параметром на вход ей передан путь к диску с VMFS (здесь это локальный диск сервера), вторым - точка монтирования (ранее мною созданная папка vmfs в корне диска).
И - вуаля (рис.5).
|
Рис.5. Данные с тома VMFS доступны из под Linux |
Сравните правую часть рис.5 с рис.1.
Монтирование осуществляется в read-only режиме - для вытаскивания данных более чем достаточно.
Недолгое гугление нашло мне еще одну ссылку по использованию этой утилиты - из под Ubuntu -
Using linux vmfs-tools package to access virtual machines. Там немного другие названия и использование - то ли разные версии с описываемым live cd, то ли что.
Однако на этом мои опыты не закончились.
Монтирование VMFS из под Windows, в том числе
Я вспомнил, что ранее встречал упоминание о каком-то java-драйвере под vmfs. Года три назад я даже пробовал его в деле - но не заработало. Решил попробовать еще раз.
Я нашел его тут -
Open Source VMFS Driver.
Эта штука позволяет получить доступ к разделу VMFS с сервера Windows/Linux/Mac OS, где достаточно установленной Java.
Вооружившись Microsoft iSCSI Initiator, я подключился со своего ноутбука к iSCSI LUN с VMFS. Таким образом, в Дистпетчере Дисков я увидел еще один диск (рис.6).
|
Рис.6. Диск с VMFS, подмонтированный к Windows XP |
Следующий шаг -
загрузить непосредственно драйвер (и поставить Java если ее еще нет).
После этих действий проверяем работоспособность утилиты получением хелпа по ней:
C:\Program Files\Java\jre6\bin>;java -jar D:\vmfs_r95\fvmfs.jar
VMFSTools (C) by fluid Operations (v0.9.8.18 r95 / 2010-01-25_15-57-35)
http://www.fluidops.com
Arguments:
VMFSVolume info
VMFSVolume dir path
VMFSVolume dirall path
VMFSVolume cat path
VMFSVolume fileinfo path
VMFSVolume filecopy path [newname position size]
VMFSVolume filedump path position size
VMFSVolume showheartbeats
VMFSVolume webdav [host port]
VMFSVolume can be any mounted VMFS volume, or a volume reachable by SSH/SFTP.
Multiple VMFS extents can be specified using a comma-separated list.
Examples:
\\sambaserver\luns\bigdisk dir /Linux_VMs
ssh://root:passwd@linuxhost/mnt/vmfslun fileinfo /disks/SwapDisk-flat.vmdk
\\.\PhysicalDrive3,\\.\PhysicalDrive4 filecopy /Windows-Template/W2008.vmdk x:\recover\W2008.vmdk
C:\Program Files\Java\jre6\bin>;
|
Таким образом, надо выполнить команду
java -jar D:\vmfs_r95\fvmfs.jar |
передав ей первым параметром путь к диску с vmfs, а вторым - действие.
Я путь ей буду передавать как путь к диску Windows.
Для начала - получим информацию о разделе:
C:\Program Files\Java\jre6\bin>java -jar D:\vmfs_r95\fvmfs.jar \\.\PhysicalDrive1 info
VMFSTools (C) by fluid Operations (v0.9.8.18 r95 / 2010-01-25_15-57-35)
http://www.fluidops.com
VMFS label = iSCSI_LUN_1_main
VMFS creation date = Fri Jul 24 23:08:51 MSD 2009
VMFS capacity = 14.50 GB
VMFS UUID = 4ba75d25-3be4b8df-c372-000c29e78205
VMFS block size = 1.00 MB
VMFS version = 3.33
VMFS # of FD/PB/SB = 30720 / 14600 / 3968
VMFS volume type =
VMFS volume UUID = 4ba75d25-28b9a16d-2f81-000c29e78205
VMFS volume size = 14.50 GB
VMFS volume ver = 4
C:\Program Files\Java\jre6\bin> |
Вот когда это у меня получилось - я обрадовался. Вау, работает! :-)
Затем получим список содержимого:
C:\Program Files\Java\jre6\bin>java -jar D:\vmfs_r95\fvmfs.jar \\.\PhysicalDrive1 dir /
VMFSTools (C) by fluid Operations (v0.9.8.18 r95 / 2010-01-25_15-57-35)
http://www.fluidops.com
10/20/10 05:19:19 (dir) /.dvsData
07/24/09 23:08:51 163а840 /.fbb.sf
07/24/09 23:08:51 63а143а936 /.fdc.sf
07/24/09 23:08:51 60а817а408 /.pbc.sf
07/24/09 23:08:52 260а374а528 /.sbc.sf
07/24/09 23:08:52 4а194а304 /.vh.sf
02/02/11 19:27:13 (dir) /File_Server_Win2008_1
10/01/10 13:18:34 (dir) /main_win2003_template
C:\Program Files\Java\jre6\bin> |
Все так и есть - если заглянуть из интерфейса vSphere, увидим все то же самое (рис. 7).
|
Рис.7. Просмотр содержимого раздела VMFS средствами vSphere |
Следующий шаг - получение доступа к данным. Не вопрос:
C:\Program Files\Java\jre6\bin>java -jar D:\vmfs_r95\fvmfs.jar \\.\PhysicalDrive1 filecopy
/File_Server_Win2008_1/File_Server_Win2008.vmdk
VMFSTools (C) by fluid Operations (v0.9.8.18 r95 / 2010-01-25_15-57-35)
http://www.fluidops.com
Size = 626.00 Bytes
Copied 626 bytes in 0s throughput was 39 KB/s
C:\Program Files\Java\jre6\bin>java -jar D:\vmfs_r95\fvmfs.jar \\.\PhysicalDrive1 filecopy
/File_Server_Win2008_1/File_Server_Win2008-flat.vmdk
VMFSTools (C) by fluid Operations (v0.9.8.18 r95 / 2010-01-25_15-57-35)
http://www.fluidops.com
Size = 10.00 GB
Copying file -- bytes left=10663493632 throughput=29393 KB/s ETA=362s ... тут типа прогресс бар, но я сделал монтаж ...
C:\Program Files\Java\jre6\bin> |
Здесь не совсем монтирование раздела - здесь команда выгрузки конкретного файла.
Получаем наши vmdk(рис.8)
|
Рис.8. Бекап удался |
Насчет "бекап удался" я слегка соврал - на середине процесса копирование оборвалось - но я не стал разбираться пока, разовая это проблема или нет.
Напоследок расшарим подмонтированный VMFS:
C:\Program Files\Java\jre6\bin>java -jar D:\vmfs_r95\fvmfs.jar \\.\PhysicalDrive1 webdav
VMFSTools (C) by fluid Operations (v0.9.8.18 r95 / 2010-01-25_15-57-35)
http://www.fluidops.com
*** Serving WebDAV/HTTP at http://localhost:50080/vmfs
log4j:WARN No appenders could be found for logger (org.mortbay.log).
log4j:WARN Please initialize the log4j system properly. |
К сожалению, подключить к Windows как сетевой диск мне не удалось, хотя в хелпе написано что можно; а вот браузером зашлось нормально(рис.9,10).
|
Рис.9. Просмотр содержимого vmfs раздела через браузер, корень раздела |
|
Рис.10. Просмотр содержимого vmfs раздела через браузер, каталог ВМ |
В общем, за сегодня я значительно прокачал свои навыки неклассических доступов к разделам VMFS.
Мне будет интересно ознакомиться с вашим опытом, буде таковой воспоследствует.