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 12.12.12

Ответы:

31

Я хотел бы начать с примечания, которое вы должны избегать virsh attach-diskс его ограниченным количеством опций. Вместо этого я бы предложил указать точный формат диска, который вы предпочитаете, в отдельном временном XML-файле или с помощью приложения с графическим интерфейсом virt-manager (для последнего пропустите первый шаг).

  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 загружены в гостевую систему.

    Некоторые дистрибутивы 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с двумя разделами в таблице разделов.

Ссылки

gertvdijk
источник
Не следует ли также добавить, --persistentчтобы эта конфигурация не терялась при отключении виртуальной машины?
Chutz