Virtio-SCSI: еще один блочный драйвер для KVM.
Еще до релиза QEMU 1.1 появились патчи для реализации virtio-scsi, нового интерфейса для блочных устройств. Чтобы понять зачем он нужен, и нужен ли вообще, обратим внимание на реализацию virtio-blk и посмотрим что предлагает virtio-scsi.virtio-blk:
- плюсы:
- высокая производительность;
- простота внутренней архитектуры (кольцевые буферы vring транспорта являются простым и эффективным механизмом общения между гостем и хост-системой).
- минусы:
- даже самый простой новый функционал требует правки spec'ов;
- ограниченный проброс SCSI (passthrough);
- нет возможности использовать расширенные функции;
- /dev/vda вместо /dev/sda усложняют механизмы переноса p2v/v2v;
- ограниченная масштабируемость. Один PCI контроллер на каждое устройство, многофункциональные устройства и PCI-мосты могут помочь, но не решить проблему.
- нет multipath;
- HBA адаптер не может участвовать в миграциях виртуальной машины;
- чтобы отправить SCSI команду, виртуальное окружение должно иметь эксклюзивный доступ к диску;
- две виртуальных машины не могут использовать устройство одновременно.
- сохранена высокая производительность;
- набор функций может быть наследован от конечного устройства;
- эффективный SCSI passthrough;
- неограниченная масштабируемость, тысячи дисков на один PCI контроллер;
- это "настоящее" SCSI-устройство, доступна нормальная работа при p2v/v2v миграциях;
- необходимо использовать linux ядро от версии 3.4.
# zgrep SCSI_VIRTIO /proc/config.gz
CONFIG_SCSI_VIRTIO=y
Параметры дисков для включения virtio-scsi (сначала определяем PCI-контроллер, затем определяем диски SCSI).
# qemu-system-x86_64
-device virtio-scsi-pci,id=scsi0
-drive file=/dev/vg00/kvm520-sda,if=none,id=disk5200
-device scsi-hd,drive=disk5200
-drive file=/dev/vg00/kvm520-sdb,if=none,id=disk5201
-device scsi-hd,drive=disk5201
> HBA адаптер не может участвовать в миграциях виртуальной машины
ОтветитьУдалитьЗначит ли это, что full disk copy миграция для таких дисков работать не будет ?
думаю что не будет, мало скопировать диски, сложность в том что нужно отловить и синхронизировать внутреннее состояние адаптера. раньше это было невозможно, а как обстоят дела сейчас, точно сказать не могу.
УдалитьА что скажете по поводу одновременного подключения диска к двум виртуальным машинам.
ОтветитьУдалитьvirtio-scsi это единственное устройство позволяющее это сделать?
При поддержке со стороны файловой системы (NTFS, например) возможен ли независимый доступ к файлам на одном LVM со стороны разных виртуальных машин?
> А что скажете по поводу одновременного подключения диска к двум виртуальным машинам. virtio-scsi это единственное устройство позволяющее это сделать?
УдалитьПодключить один диск к двум виртуальным машинам можно. Но при этом вам придется самостоятельно обеспечивать целостность данных. virtio-scsi тут необязательное условие.
> При поддержке со стороны файловой системы (NTFS, например) возможен ли независимый доступ к файлам на одном LVM со стороны разных виртуальных машин?
Не пробовал, но думаю можно, опять же придется как-то обеспечивать согласованность данных.
В oVirt есть поддержка т.н. shareable дисков, можно почитать дополнительно http://www.ovirt.org/Features/DetailedSharedRawDisk
Мне нужно в рамках одного хоста иметь расшареный диск между windows и linux.
ОтветитьУдалитьЧто можете посоветовать? Поднять в виртуалке какой-нибудь openfiler/ FreeNAS и расшарить по NFS
или попытаться просто подключить один и тот же виртуальный hdd к обеим виртуальным машинам?
Вариант с выделенной виртуалкой и openfiler/freenas предпочтительней, т.к. при простом подключении второго hdd в двух виртулках, при одновременной записи высока вероятность повреждения фс и данных на ней.
ОтветитьУдалитьАлексей здравствуйте. Пользуюсь Proxmox 3.4 и scsi-virtio, в его составе ядро версии 2.6. Прокомментируйте пожалуйста, вашу запись: "необходимо использовать linux ядро от версии 3.4".
ОтветитьУдалитьСильно это скажется на производительности и будут ли разного рода проблемы ? Спасибо.
Добрый день! Если в proxmox есть поддержка virtio-scsi на уровне 2.6, то я думаю что работает на приемлемлемом уровне, уверен что команда Proxmox знает что делает;)
Удалить