KVM และ Libvirt - ฉันจะเสียบปลั๊ก virtio ใหม่ได้อย่างไร


24

ฉันกำลังพยายามเพิ่มดิสก์ที่เป็นไฟล์ไปยังเซิร์ฟเวอร์เสมือนที่ทำงานอยู่ของ KVM ฉันสร้างดิสก์ใหม่ตั้งแต่เริ่มต้นโดยใช้คำสั่ง

dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0

และฉันหวังว่าจะได้รับมันร้อนเพิ่มให้กับแขกโดยการทำเช่นนี้ในเปลือก virsh:

virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
        vdd --driver=file --subdriver=raw

นิยาม XML ของโดเมนจะกลายเป็น:

<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/home/cloud/vps_59/root.img'/>
  <target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
  <driver name='file' type='raw'/>
  <source file='/home/cloud/vps_59/test.img'/>
  <target dev='vdd' bus='virtio'/>
</disk>

อย่างที่คุณเห็นชื่อไดรเวอร์ผิดควรdriver name='qemu'เป็นvdaดิสก์ที่มีอยู่ ฉันลองด้วย--drive=qemuแต่มันแจ้งว่าไม่รองรับ

ประการที่สองฉันแค่ "เห็น" ไดรฟ์ที่เพิ่งเพิ่มเมื่อฉันรีบูตเครื่องเสมือนที่ใช้ Ubuntu 10.04.4 LTS ฉันจะสร้างไดรฟ์ "ฮอตปลั๊ก" ได้อย่างไร ฉันต้องการให้เครื่องเสมือน "เห็น" ไดรฟ์ใหม่ทันทีโดยไม่ต้องรีบูต


1
ข้อเสนอแนะที่ไม่เกี่ยวข้องใช้qemu-imgแทนdd- ข้อโต้แย้งของมันเป็นธรรมชาติมากขึ้นและทำสิ่งเดียวกัน:qemu-img create test.img 5G
chutz

คำตอบ:


31

ฉันต้องการเริ่มต้นด้วยบันทึกย่อที่คุณควรหลีกเลี่ยงการใช้virsh attach-diskด้วยตัวเลือกจำนวน จำกัด แต่ฉันขอแนะนำให้ระบุรูปแบบดิสก์ที่แน่นอนที่คุณต้องการในไฟล์ XML ชั่วคราวหรือแยกจากกันโดยใช้แอพพลิเคชั่น virt-manager GUI (สำหรับอันหลังให้ข้ามขั้นตอนแรก)

  1. สร้างไฟล์ชั่วคราวด้วยคำจำกัดความของดิสก์เช่นนี้ด้านล่าง

    ปรับคุณสมบัติให้เหมาะสมกับสถานการณ์ของคุณ

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/path/to/disk-image.img'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    

    เคล็ดลับ: ดูการกำหนดค่าโดเมน XML ปัจจุบันของคุณและคัดลอก<disk>ส่วนจากที่นั่น

    virsh dumpxml <domainname>
    
  2. ตอนนี้ก่อนที่จะเพิ่มดิสก์ในโดเมนปัจจุบันตรวจสอบให้แน่ใจว่าโหลดโมดูลเคอร์เนล hotplug ที่ต้องการในเกสต์

    ลีนุกซ์ดิสทริบิวชันบางตัวเช่น CentOS / RHEL / Fedora ที่ผ่านมามีเคอร์เนลอยู่ CONFIG_HOTPLUG_PCI_ACPIในกรณีนี้ให้ตรวจสอบ ถ้าเป็นyเช่นนั้นคุณก็พร้อมแล้วและคุณสามารถข้ามขั้นตอนนี้ได้

    modprobe acpiphp
    modprobe pci_hotplug
    

    พิจารณาเพิ่มสองโมดูลนี้/etc/modulesหากคุณต้องการให้โหลดในการบู๊ตเป็นค่าเริ่มต้น

  3. เพิ่มดิสก์ลงใน VM ที่ใช้งานอยู่

    virsh attach-device <domain name> /path/to/disk.xml
    

    อีกทางเลือกหนึ่งเพิ่ม--persistentตัวเลือกเพื่อให้ Libvirt อัปเดตนิยาม XML ของโดเมน 'ถาวร'

  4. สุดท้ายตรวจสอบภายในแขกว่าดิสก์ถูกเสียบปลั๊กไว้อย่างแน่นอน เคอร์เนลควรถูกทริกเกอร์ตามที่สามารถตรวจสอบได้ด้วยdmesg:

    [  321.946440] virtio-pci 0000:00:06.0: using default PCI settings
    [...]
    [  321.952782]  vdb: vdb1 vdb2
    

    ในตัวอย่างข้างต้นฉันได้เพิ่มดิสก์เช่นเดียวvdbกับสองพาร์ทิชันในตารางพาร์ทิชัน

อ้างอิง


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