วิธีการเมาท์พาร์ติชัน 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 ไม่มีอะไรที่เฉพาะเจาะจงเกี่ยวกับคำถามนี้จาก KVM มันเป็นเพียงโครงสร้าง LVM เดียวภายในอีกโครงสร้างหนึ่ง
joechip

คำตอบ:


14

ดูเหมือนว่าในที่สุดฉันก็รู้วิธีการทำสิ่งที่ฉันต้องการ นี่คือสิ่งที่ฉันทำ:

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

ถ้าชื่อ VolGroup เหมือนกันใน guest และระบบโฮสต์คุณจะต้องเปลี่ยนชื่อแขก 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


ขอบคุณสำหรับคำแนะนำ แต่น่าเสียดายที่ฉันไม่สามารถติดตั้ง guestfish: ฉันใช้เวลาหลายชั่วโมงในการตรวจสอบและ googling - ไร้ประโยชน์ทั้งหมดใช้งานไม่ได้ :( อาจมีวิธีอื่นในการติดตั้งพาร์ติชัน linux หรือไม่ฉันไม่จำเป็นต้องใช้ทั้งหมด เครื่องมือหนึ่งสำหรับติดตั้งทุกอย่างเพียง LVM
Evolver

1
qemu-img info /path/to/imageพยายามที่จะเรียก หากสิ่งที่คุณได้รับในกล่องชนิดไม่ใช่ "RAW" จะไม่มีวิธีที่ระบบปฏิบัติการสามารถเมานต์อิมเมจนี้เป็นพาร์ติชันได้เนื่องจากมีการจัดรูปแบบเป็นดิสก์เสมือนเฉพาะ qemu นี่คือสิ่งที่ guestfish เกี่ยวข้องด้วยไม่ใช่แค่เครื่องมือติดตั้งง่ายๆ
dyasny

1

มันอาจจะง่ายกว่าที่จะใช้guestfishจากแพคเกจlibguestfsซึ่งควรแก้ไขรายละเอียดที่น่ารำคาญทั้งหมดให้คุณแทนที่จะพยายามทำด้วยตนเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.