Як встановити LVM-розділ віртуальної машини на хості KVM?


11

Якщо я намагаюся зробити наступне на хості 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

тоді я встановлюю / завантажую розділ. Але я отримую помилку, якщо потім наберіть наступне:

# 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

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


Я вважаю, що ваша посилання на kvm101_img2 - це помилка друку. Натомість це має бути _img1, правда?
joechip

_img1 правильно монтується з вищевказаним методом, але _img1 - це / boot розділ, еквівалентний / dev / hda1 для гостя. Проблема полягала в тому, що я не зміг встановити _img2, що містить / dev / hda2 Linux LVM. Цей макет розділів за замовчуванням для інсталятора CentOS.
Evolver

Ну добре, мене викинули посиланням на КВМ. Тоді в цьому питанні немає нічого конкретного KVM, це просто одна структура LVM всередині іншої.
joechip

Відповіді:


14

Здається, я нарешті з’ясував, як робити потрібні мені речі. Ось що я зробив:

# 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.


Можливо, вам доведеться відредагувати fstab гостя, щоб потім використовувати VolGroupXX замість VolGroup00.
joechip

4

Я радий, що ти зрозумів це для своєї ситуації.

У більш загальному випадку гостьовий диск може бути в різних форматах, таких як 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, яку ви описуєте у своїй відповіді.


2

ви можете це зробити, використовуючи guestfish - http://libguestfs.org/guestfish.1.html


Дякую за пропозицію, але, на жаль, я не зміг навіть встановити риби: я витратив години на гуглінг та дослідження - все марно, це не працює :( Можливо, є ще один спосіб монтажу Linux-розділу? Мені не потрібно все-в- один інструмент для монтажу всього, лише LVM.
Evolver

1
спробуйте бігти qemu-img info /path/to/image. якщо те, що ви отримуєте у вікні Type, не є "RAW", тоді немає жодної можливості ОС встановити це зображення як розділ, оскільки воно відформатоване як віртуальний диск, специфічний для qemu. Ось чим займається гостьова риба, це не просто простий інструмент для монтажу
dyasny

1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.