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

Доступ к разделам тома LVM

Предположим, у вас есть том LVM / dev / vg0 / mylv. Вы представили его как виртуальный диск виртуальной или эмулированной гостевой системе. Во время установки гостевая система видит его как / dev / sda, разбивает его на / dev / sda {1,2,5,6} и завершает установку. Теперь в какой-то момент вам нужно получить доступ к этим файловым системам из хост-системы, не запуская гостевую систему. fdisk прекрасно видит эти разделы:

# fdisk -l /dev/vg0/mylv
           Device Boot      Start         End      Blocks   Id  System
/dev/vg0/mylv1            2048      684031      340992   83  Linux
/dev/vg0/mylv2          686078    20969471    10141697    5  Extended
/dev/vg0/mylv5          686080     8290303     3802112   83  Linux
/dev/vg0/mylv6         8292352    11980799     1844224   83  Linux

Однако таких устройств, как / dev / vg0 / mylv1, на самом деле не существует. Я предполагаю, что, поскольку они находятся внутри LV, ОС по умолчанию не распознает этот тип вложенности. Могу ли я как-нибудь настроить Linux так, чтобы появился / dev / vg0 / mylv1 или его эквивалент и, таким образом, стал монтируемым в хост-системе?

Я понимаю, что это возможно с qemu-nbd, и при необходимости воспользуюсь этим. Однако я надеялся на что-то более прямое, если возможно, а не на моделирование сетевого блочного устройства и его подключение.

Я считаю, что инструмент, который вы ищете, kpartx.

Общая процедура:

  1. Перечислить разделы в образе диска:

    kpartx -l /dev/vg0/mylv
    
  2. Добавьте разделы в device-mapper:

    kpartx -a /dev/vg0/mylv
    
  3. Смонтируйте интересующий раздел:

    mount -o ro /dev/mapper/loop0p5 /mnt
    

Вы можете получить доступ к разделенным файловым системам через петлю, используя смещения. Умножьте начало сектора на размер сектора.

mkdir /mnt/mylv{1,5,6}
mount -o ro,loop,offset=$((512*2048)) /dev/vg0/mylv /mnt/mylv1
mount -o ro,loop,offset=$((512*686080)) /dev/vg0/mylv /mnt/mylv5
mount -o ro,loop,offset=$((512*8292352)) /dev/vg0/mylv /mnt/mylv6