Добавить физический диск в виртуальную машину KVM

Вопрос или проблема

Я настраиваю файловый сервер (nas4free) как виртуальную машину KVM на системе Ubuntu Server 12.04.

Как мне добавить физические жесткие диски непосредственно в виртуальную машину, чтобы их мог использовать гость (nas4free), но не хост?

Конкретно жесткий диск, который я хотел бы подключить, это /dev/sda (который сейчас не смонтирован на сервере).

Пока что я нашел два решения, но ни одно из них не сработало.

Первое – с Server Fault, где предлагается использовать virt-manager. У меня это не получилось, потому что когда я пробую выбрать существующий диск, ничего не отображается. Я предполагаю, что это связано с тем, что я использую virt-manager по ssh и не подключаюсь как root, будет ли это иметь значение?

Второе решение, которое я нашел здесь, это просто выполнить команду (измененную для моей системы)

qm set nas4free -virtio /dev/sda

но это, похоже, требует proxmox, который у меня не установлен и не кажется доступным в стандартных репозиториях?

Наконец, как только вышеуказанное будет решено и я смогу смонтировать диск напрямую в виртуальную машину, есть ли у кого-то опыт, как лучше монтировать диск в виртуальной машине: как scsi, ide или virtio? (Я знаю, что virtio рекомендовали на странице ServerFault, но я не слышал об этом раньше, так как в основном использую VMWare).

Спасибо за вашу помощь!!!

Имея такую же необходимость, я нашел Добавление физического диска в гостя с помощью Libvirt / KVM:

Это невозможно сделать с помощью virt-manager. На это мне потребовалось время, чтобы понять. Насколько я могу судить, virt-manager работает с пулами хранения. Вы можете превратить диск в пул хранения, но не можете напрямую добавить существующий диск в виртуальную машину.

К счастью, исправить это легко: вы вручную добавляете диск в xml конфигурационный файл домена. Откройте /etc/libvirt/qemu/${YOUR_VM}.xml в вашем любимом редакторе и добавьте раздел <disk> в секцию <devices>:

<disk type="block" device="disk">
    <driver name="qemu" type="raw"/>
    <source dev='/dev/md/storage'/>
    <target dev='vdb' bus="virtio"/>
</disk>

Это сделает /dev/md/storage хоста доступным в госте как /dev/vdb. После изменения конфигурации домена вручную, вам нужно перезагрузить конфигурацию вручную. Войдите в свою хост-станцию и выполните эту команду:

# virsh define /etc/libvirt/qemu/jetsetetser.xml
Domain jetser defined from /etc/libvirt/qemu/jetsetetser.xml

Вот хороший ресурс с дополнительной информацией о управлении виртуальными машинами с помощью libvirt.

Я настоятельно рекомендую вам следовать совету, данному smccloud. Это прекрасно сработало для меня. Будьте осторожны, чтобы не монтировать любой том на физических дисках, используемых в вашем госте, иначе вы серьезно повредите его файловую систему!

Хотя на этот вопрос уже ответили, вместо использования /dev/sda вы должны использовать /dev/disk/by-id/, откуда вы получите

    ls -l /dev/disk/by-id

Таким образом, вы будете защищены на случай, если диск изменится с /dev/sda на /dev/sdb.

Сначала включите редактирование xml в Настройках в virt-manager.

Затем добавьте обычный диск SATA, поддерживающий файлы, в графическом интерфейсе virt-manager для вашей виртуальной машины. Вы можете установить размер диска на 1 ГБ или можете выбрать любые неиспользуемые образы дисков.

Затем в графическом интерфейсе virt-manager, в окне xml созданного вами диска, существующий xml должен быть следующим:

<disk type="file" device="disk">
  <driver name="qemu" type="qcow2"/>
  <source file="/var/lib/libvirt/images/vol-1.qcow2"/>
  <target dev="sdc" bus="sata"/>
  <address type="drive" controller="0" bus="0" target="0" unit="2"/>
</disk>

измените его на:

<disk type="block" device="disk">
  <driver name="qemu" type="raw"/>
  <source dev="/dev/sda"/>
  <target dev="vda" bus="sata"/>
  <address type="drive" controller="0" bus="0" target="0" unit="2"/>
</disk>

Затем нажмите кнопку Применить.

Обратите внимание, что вы должны оставить тег “address” неизменным и изменить другие параметры, как указано выше.

Здесь “/dev/sda” – это физический диск на хосте, который будет использоваться виртуальной машиной.

Имя “vda” похоже на “sda, sdb…” вы также можете использовать “vdb,vdc…” и так далее.

Это работает для хоста Ubuntu 22.04 и виртуальной машины Windows 10. У Windows нет драйвера virtIO, поэтому выбор SATA проще (не уверен, есть ли разница в производительности между SATA и virtIO).

2024 – Это можно сделать в virt-manager, но это нужно сделать ПОСЛЕ создания виртуальной машины.

После создания можно переключаться между консолью и настройками с помощью кнопок в верхнем левом углу.

В настройках добавьте хранилище через “Добавить оборудование”, выберите диск из выпадающего меню и вставьте путь к устройству в текстовое поле (вместо выбора из пула через селектор).

вставьте описание изображения здесь

Ответ или решение

Для добавления физического диска к виртуальной машине KVM, в частности для вашего случая с настройкой сервера файлов (nas4free) на Ubuntu Server 12.04, следуйте этим подробным инструкциям.

Описание задачи

Вы хотите подключить физический жесткий диск (/dev/sda) к виртуальной машине на платформе KVM. Этот диск не должен использоваться хостом, а будет полностью доступен только гостевой системе (nas4free). Учитывая, что вы сталкиваетесь с трудностями при работе с virt-manager и альтернативными способами добавления диска, рассмотрим более подробный подход.

Рекомендуемый метод

  1. Проверка наличия прав:
    Убедитесь, что вы работаете с достаточными правами. Для управления виртуальными машинами KVM вам необходимо выполнять команды от имени пользователя, имеющего доступ к виртуализации. Это может быть пользователь с правами sudo или root. Если вы используете virt-manager через SSH, убедитесь, что у вас есть доступ к нужным устройствам.

  2. Создание резервной копии конфигурации виртуальной машины:
    Важно сделать резервную копию конфигурации перед изменением:

    sudo cp /etc/libvirt/qemu/название_вашей_ВМ.xml /etc/libvirt/qemu/название_вашей_ВМ.xml.bak
  3. Редактирование конфигурационного файла:
    Откройте конфигурационный файл вашей виртуальной машины:

    sudo nano /etc/libvirt/qemu/название_вашей_ВМ.xml

    Найдите секцию <devices>. Добавьте в нее следующий блок для добавления физического диска:

    <disk type="block" device="disk">
        <driver name="qemu" type="raw"/>
        <source dev="/dev/sda"/>
        <target dev="vda" bus="virtio"/>
    </disk>

    Обратите внимание: Использование /dev/sda может быть рискованным, если система работает в окружении с несколькими дисками. Рекомендуется использовать относительный путь, например:

    /dev/disk/by-id/`ls -l /dev/disk/by-id`
  4. Перезагрузка конфигурации:
    После редактирования конфигурационного файла необходимо применить изменения:

    sudo virsh define /etc/libvirt/qemu/название_вашей_ВМ.xml
  5. Запуск виртуальной машины:
    Теперь вы можете запустить вашу виртуальную машину:

    sudo virsh start название_вашей_ВМ

Выбор типа подключения диска

С точки зрения производительности рекомендуется использовать virtio, так как это наиболее оптимизированный драйвер и обеспечивает лучшую производительность по сравнению с SCSI или IDE. Однако, если ваша система (например, Windows) не поддерживает virtio, возможно использование SATA.

Заключение

Этот процесс позволяет вам добавить физический диск к KVM виртуальной машине, не включая его в использование хост-системой. Не забудьте следить за состоянием дисков и избегать их монтирования на хосте, чтобы предотвратить повреждение файловой системы. Если у вас будут возникать дополнительные вопросы, вы всегда можете обратиться к официальной документации KVM или задать вопрос на специализированных форумах.

Оцените материал
Добавить комментарий

Капча загружается...