Назад | Перейти на главную страницу

Как смонтировать LVM-раздел виртуальной машины на KVM-хосте?

Если я пытаюсь сделать следующее на хосте KVM:

# kpartx -av /dev/VolGroup00/kvm101_img
add map kvm101_img1 : 0 208782 linear /dev/VolGroup00/kvm101_img 63
add map kvm101_img2 : 0 125612235 linear /dev/VolGroup00/kvm101_img 208845
# mount /dev/mapper/kvm101_img1 /mnt

Затем я монтирую раздел / boot. Но я получаю сообщение об ошибке, если наберу следующее:

# mount /dev/mapper/kvm101_img2 /mnt
mount: you must specify the filesystem type

Вот макет fdisk на гостевой машине:

# fdisk -l
Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14        7832    62806117+  8e  Linux LVM

Можно ли найти корневой раздел в гостевой системе и смонтировать его в хост-системе?

Кажется, я наконец понял, как делать то, что мне нужно. Вот что я сделал:

# kpartx -av /dev/VolGroup00/kvm101_img
# vgscan

если имена VolGroup идентичны в гостевой и хост-системе, то вам необходимо переименовать гостевую VolGroup

# vgrename <uuid> VolGroupXX

uuid VolGroups вы можете проверить vgdisplay. Итак, фокус в том, чтобы активировать гостевую VolGroup:

# lvscan
# vgchange -ay VolGroupXX
# lvscan

После этого легко монтируется:

# mount /dev/VolGroupXX/LogVol00 /mnt

Наконец, обратный процесс:

# umount /mnt
# vgchange -an VolGroupXX
# kpartx -dv /dev/VolGroup00/kvm101_img
# pvscan

Последняя команда очищает кеш LVM и удаляет физический том, созданный kpartx, из LVM.

Я рад, что ты понял это для своей ситуации.

В более общем случае гостевой диск может быть в различных форматах, таких как qcow, qcow2 и т. Д., Поэтому вы не сможете работать с ними напрямую. В этом случае вы можете использовать на хосте что-то вроде:

# modprobe nbd
# kvm-nbd -c /dev/nbd0 file.qcow2

Затем вы можете получить доступ к / dev / nbd0 как к необработанному гостевому диску. Чтобы прекратить использование этого устройства, вы должны запустить:

# nbd-client -d /dev/nbd0

Если бы, с другой стороны, гостевой диск был в необработанном формате, вы бы использовали losetup:

# losetup -f file.raw

Это позволит найти и использовать первое доступное устройство цикла (например, / dev / loop0). Чтобы прекратить его использование, выполните:

# losetup -d /dev/loop0

После этого вы сможете выполнить процедуру kpartx / vgscan / lvscan / mount, которую описываете в своем ответе.

вы можете сделать это с помощью guestfish - http://libguestfs.org/guestfish.1.html

Может быть проще просто использовать guestfish из libguestfs пакет, который должен проработать все раздражающие детали вместо того, чтобы пытаться сделать это вручную