Страницы

Сохранить статью у себя в соцсети:

понедельник, 4 июня 2012 г.

§ Virtio-SCSI - лучшее враг хорошего

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-мосты могут помочь, но не решить проблему.
 Ограничения проброса SCSI (passthrough):
  • нет multipath;
  • HBA адаптер не может участвовать в миграциях виртуальной машины;
  • чтобы отправить SCSI команду, виртуальное окружение должно иметь эксклюзивный доступ к диску;
  • две виртуальных машины не могут использовать устройство одновременно.
virtio-scsi решает ограничения virtio-blk:
  • сохранена высокая производительность;
  • набор функций может быть наследован от конечного устройства;
  • эффективный 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

Все просто.

На главную "Аппаратная виртуализация"

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

  1. > HBA адаптер не может участвовать в миграциях виртуальной машины

    Значит ли это, что full disk copy миграция для таких дисков работать не будет ?

    ОтветитьУдалить
    Ответы
    1. думаю что не будет, мало скопировать диски, сложность в том что нужно отловить и синхронизировать внутреннее состояние адаптера. раньше это было невозможно, а как обстоят дела сейчас, точно сказать не могу.

      Удалить
  2. А что скажете по поводу одновременного подключения диска к двум виртуальным машинам.
    virtio-scsi это единственное устройство позволяющее это сделать?
    При поддержке со стороны файловой системы (NTFS, например) возможен ли независимый доступ к файлам на одном LVM со стороны разных виртуальных машин?

    ОтветитьУдалить
    Ответы
    1. > А что скажете по поводу одновременного подключения диска к двум виртуальным машинам. virtio-scsi это единственное устройство позволяющее это сделать?

      Подключить один диск к двум виртуальным машинам можно. Но при этом вам придется самостоятельно обеспечивать целостность данных. virtio-scsi тут необязательное условие.

      > При поддержке со стороны файловой системы (NTFS, например) возможен ли независимый доступ к файлам на одном LVM со стороны разных виртуальных машин?

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

      В oVirt есть поддержка т.н. shareable дисков, можно почитать дополнительно http://www.ovirt.org/Features/DetailedSharedRawDisk

      Удалить
  3. Мне нужно в рамках одного хоста иметь расшареный диск между windows и linux.
    Что можете посоветовать? Поднять в виртуалке какой-нибудь openfiler/ FreeNAS и расшарить по NFS
    или попытаться просто подключить один и тот же виртуальный hdd к обеим виртуальным машинам?

    ОтветитьУдалить
  4. Вариант с выделенной виртуалкой и openfiler/freenas предпочтительней, т.к. при простом подключении второго hdd в двух виртулках, при одновременной записи высока вероятность повреждения фс и данных на ней.

    ОтветитьУдалить
  5. Алексей здравствуйте. Пользуюсь Proxmox 3.4 и scsi-virtio, в его составе ядро версии 2.6. Прокомментируйте пожалуйста, вашу запись: "необходимо использовать linux ядро от версии 3.4".
    Сильно это скажется на производительности и будут ли разного рода проблемы ? Спасибо.

    ОтветитьУдалить
    Ответы
    1. Добрый день! Если в proxmox есть поддержка virtio-scsi на уровне 2.6, то я думаю что работает на приемлемлемом уровне, уверен что команда Proxmox знает что делает;)

      Удалить

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика