Вопрос или проблема
Я настраиваю файловый сервер (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
и альтернативными способами добавления диска, рассмотрим более подробный подход.
Рекомендуемый метод
-
Проверка наличия прав:
Убедитесь, что вы работаете с достаточными правами. Для управления виртуальными машинами KVM вам необходимо выполнять команды от имени пользователя, имеющего доступ к виртуализации. Это может быть пользователь с правами sudo или root. Если вы используетеvirt-manager
через SSH, убедитесь, что у вас есть доступ к нужным устройствам. -
Создание резервной копии конфигурации виртуальной машины:
Важно сделать резервную копию конфигурации перед изменением:sudo cp /etc/libvirt/qemu/название_вашей_ВМ.xml /etc/libvirt/qemu/название_вашей_ВМ.xml.bak
-
Редактирование конфигурационного файла:
Откройте конфигурационный файл вашей виртуальной машины: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`
-
Перезагрузка конфигурации:
После редактирования конфигурационного файла необходимо применить изменения:sudo virsh define /etc/libvirt/qemu/название_вашей_ВМ.xml
-
Запуск виртуальной машины:
Теперь вы можете запустить вашу виртуальную машину:sudo virsh start название_вашей_ВМ
Выбор типа подключения диска
С точки зрения производительности рекомендуется использовать virtio
, так как это наиболее оптимизированный драйвер и обеспечивает лучшую производительность по сравнению с SCSI или IDE. Однако, если ваша система (например, Windows) не поддерживает virtio
, возможно использование SATA.
Заключение
Этот процесс позволяет вам добавить физический диск к KVM виртуальной машине, не включая его в использование хост-системой. Не забудьте следить за состоянием дисков и избегать их монтирования на хосте, чтобы предотвратить повреждение файловой системы. Если у вас будут возникать дополнительные вопросы, вы всегда можете обратиться к официальной документации KVM или задать вопрос на специализированных форумах.