четверг, 26 января 2017 г.

Монтирование vmfs (диска ВМ ESXi) через ssh

Понадобилось сегодня достать из одной старой виртуальной машины с гипервизора VMWare ESXi одну папку. Запускать ВМ нельзя, т.к. сеть там настроена и IP используется другой важной машиной. Запускать без сети, менять IP, запускать с сетью... Было как-то лениво.


Суть процесса такая: смонтировать каталог ВМ с гипервизора на свой комп по ssh, оттуда смонтировать vmdf файл ВМ и уже из него вытащить нужную папку.

Готовим нужные каталоги, на которые будем монтировать "диски":
sudo -i
mkdir mnt
cd mnt
mkdir -p /tmp/mnt/{ssh,vmfs}
В каталог ssh смонтируем папку ВМ по ssh, а в vmfs - нужный раздел нашей ВМ.

Монтируем каталог ВМ по ssh:
sshfs root@10.1.1.1:/vmfs/volumes/datastore1/vm1/ /tmp/mnt/ssh

Монтируем нужный нам vmdk-файл как loopback-устройство:
losetup /dev/loop6 /tmp/mnt/ssh/vm1-flat.vmdk
Монтировать нужно обязательно "*-flat.vmdk" файл.

Теперь нужно посмотреть какой размер сектора и с какого сектора начинается интересующий нас раздел:
fdisk -l /dev/loop6

Disk /dev/loop6: 101 GiB, 108447924224 bytes, 211812352 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa242fc11

Device       Boot   Start       End   Sectors   Size Id Type
/dev/loop6p1 *       2048    411647    409600   200M 83 Linux
/dev/loop6p2       411648   1460223   1048576   512M 82 Linux swap / Solaris
/dev/loop6p3      1460224 211812351 210352128 100,3G 83 Linux
Нас интересует вторая строка - "Units", в конце этой строки указан размер сектора в байтах. Так же нас интересует начальный сектор нужного нам раздела. Этот сектор указан в колонке "Start". Предположим, что нам нужен третий раздел (/dev/loop6p3), начинается он с сектора 1460224.

Далее считаем, на сколько байт от начала диска смещен нужный нам раздел:
echo '512*1460224' | bc
747634688

И монтируем этот раздел как еще одно loopback-устройство:
losetup -o 747634688 /dev/loop5 /dev/loop6
mount -r /dev/loop5 /tmp/mnt/vmfs

Теперь в катал vmfs смонтирован интересующий нас раздел нашей виртуальной машины. Забираем нужные нам файлики/папочки... И отключаем смонтированные "диски":
cd
umount /tmp/mnt/vmfs
losetup -d /dev/loop5
losetup -d /dev/loop6
umount /tmp/mnt/ssh
rm -ri /tmp/mnt
exit


PS: Если при отмонтировании sshfs ругается "target is busy", попробуйте так:
umount -l /tmp/mnt/ssh
PPS: Заметка для себя, чтобы не забыть.





Информация с сайта http://blog.angel2s2.ru/.

Комментариев нет:

Отправить комментарий