KVM та Libvirt - Як мені підключити новий диск для віртуозу?


24

Я намагаюся гаряче додати диск на основі файлів до запущеного віртуального сервера KVM. Я створив новий диск з нуля за допомогою команди

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

і я сподівався отримати гаряче додане гостю, зробивши це в оболонці вирша:

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-файлі або за допомогою програми GUI-менеджера virt (для останнього пропустіть перший крок).

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

    Деякі дистрибутиви Linux, такі як останні CentOS / RHEL / Fedora, мають вбудований в ядро. У цьому випадку перевірте CONFIG_HOTPLUG_PCI_ACPI. Якщо це так y, то ви все готові і можете пропустити цей крок.

    modprobe acpiphp
    modprobe pci_hotplug
    

    Подумайте про додавання цих двох модулів, /etc/modulesякщо ви хочете, щоб вони завантажувалися під час завантаження за замовчуванням.

  3. Додайте диск до запущеної ВМ за допомогою

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