понедельник, 4 февраля 2019 г.

Proxmox VE, проброс физического HDD в виртуальную машину

Иногда, по той или иной причине, возникает необходимость пробросить в виртуальную машину физический диск гипервизора.
В общем случае данная задача решается следующей коммандой в консоли ноды Proxmox VE:
qm set <vm_id> -[virtio|sata|ide|scsi][№] /dev/sd[a|b|c|...]
где:
  • vm_id - номер виртуальной машины (в интерфейсе Proxmox указывается перед именем VM
  • -[virtio|sata|ide|scsi][№] - допустимый тип и номер HDD интерфейса
  • /dev/sd[a|b|c...] - пробрасывоемое физическое устройство
Но при таком подходе мы можем столкнуться с ситуацией, когда вследствии рекомбинации дисков меняется буква физического устройства, что приведет к пробросу другого диска. Во избежание подобных эксцессов следует при пробросе диска использовать его ID:


ls -l /dev/disk/by-id/
Например для проброса диска sda в VM 100 следует выполнить:

qm set 100 -virtio2 /dev/disk/by-id/scsi-36003005700ba2e00ff00002a02aec9e8
после чего ваш диск должен появиться в оборудовании вашей VM.
На самом деле  помимо проброса по ID физического диска можно осуществлять проброс, предварительно сконфигурированных LVM и т.д.

19 комментариев:

  1. Спасибо, всё получилось, правда первым способом.
    Второй наотказ.

    ОтветитьУдалить
  2. qm set 100 -virtio2 /dev/dosk/by-id/scsi- опечатка "dosk"

    ОтветитьУдалить
  3. У меня за место scsi показывает wwn и ata диска. Какой id брать так и не понял.

    ОтветитьУдалить
    Ответы
    1. Смотрите id диска в дисках, выполняете
      ls -l /dev/disk/by-id/
      находите диск с таким id в списке и используете полный путь к диску в комманде при пробросе.
      Естественно у каждого своя конфигурация.

      Удалить
  4. После перезагрузки Proxmox монтирование не отвалится?

    ОтветитьУдалить
  5. проброс получается вот только после примонтирования его в виртуалке и следующей перезагрузке виртуалка не грузится

    ОтветитьУдалить
    Ответы
    1. Обратите внимание на порядок устройств при загрузке

      Удалить
  6. Спасибо за статью! Очень помогла. А как правильно пробросить много жестких дисков? Скажем 50 шт. и они нужны каждый в отдельности

    ОтветитьУдалить
    Ответы
    1. К сожалению больше одного в виртуалку мне не требовалось

      Удалить
  7. а какие минусы подобного проброса есть? например я кидаю внутрь KVM /dev/md0
    внутри будет Debian...

    ОтветитьУдалить
    Ответы
    1. Вы работаете с физическим а не виртуальным диском естественно никакой миграции и прочего подобного

      Удалить
  8. а как отсоединить?

    ОтветитьУдалить
    Ответы
    1. Встать в виртуальной машине оборудование на диск и выбрать отключить. (сейчас нет ни одной проброшенной, но думаю, что именно так)

      Удалить
  9. Добрый день. Делаю проброс, все пробрасывается, монтируется в гостевой, видно файлы что были на диске. Но изменить/создать/ и т.д. не выходит. точнее я не вижу изменений на диске которые сделал в гостевой системе, если захожу в консоль хоста. И наоборот. Не вижу файлы в виртуальной машине, которые закинул на подключаемый диск с хоста только после перемонтирования диска. Виртуалка Debian 11.

    ОтветитьУдалить
    Ответы
    1. Сам спросил, Сам отвечу. Насколько понял, с ext4 такое не прокатывает. (почерпнул отсюда https://habr.com/ru/post/219295/)

      Удалить
    2. Я использую только проброс сырого диска, который размечается и обрабатывается конкретной виртуальной машиной. Разделять его с другими машинами не пробовал - очевидно это должно повлечь конфликты.

      Удалить
  10. Нужно полностью диск указывать, и тогда все монтируеться вторым способом.

    root@vhost:~# ls -l /dev/disk/by-id/
    total 0
    lrwxrwxrwx 1 root root 9 Apr 1 11:07 ata-HP_SSD_S650_480GB_HASA33180101618 -> ../../sda
    lrwxrwxrwx 1 root root 10 Apr 1 11:07 ata-HP_SSD_S650_480GB_HASA33180101618-part1 -> ../../sda1
    lrwxrwxrwx 1 root root 10 Apr 1 11:07 ata-HP_SSD_S650_480GB_HASA33180101618-part2 -> ../../sda2
    lrwxrwxrwx 1 root root 9 Apr 12 15:38 usb-SSDPR-CX_400-512-G2_00000000460D-0:0 -> ../../sdb
    root@vhost:~#

    qm set 101 -virtio2 /dev/disk/by-id/usb-SSDPR-CX_400-512-G2_00000000460D-0:0

    ОтветитьУдалить