Проброс блочных устройств в виртуальную машину XenServer

    В современном мире наверно все адекватные системные администраторы корпоративных сетей используют виртуализацию. Для мелкого и среднего бизнеса одним из самых осмысленных выборов гипервизора является бесплатная версия Citrix XenServer. Основное его преимущество для небольшой фирмы, не имеющей возможности покупать железо под задачи — это огромная гибкость, во многом за счёт Linux, на котором базируется обозначенный гипервизор.

    Огромнейшая проблема XenServer, как и Xen Cloud Platform, в очень ограниченном количестве документации. Точнее сказать — в полном её отсутствии для нестандартных ситуаций. В частности нигде в официальных источниках мне не удалось найти инструкции по пробросу блочного устройства непосредственно в виртуальную машину.

    Для начала зачем это может понадобиться. Простейший пример — у вас есть сервер без надёжного аппаратного RAID контроллера. Но вы хотите рейд. Без проблем — Linux (и XenServer) содержит великолепнейшую штуку — mdadm. А нужен вам этот RAID для файлопомойки, причём файлопомойка займёт всё доступное место. Смысла городить RAID, а поверх него ещё делать XenServer StorageRepository (SR) с type=lvm, в котором создавать один-единственный диск на весь объём нет. Гораздо лучше создать RAID, и пробросить его блочное устройство непосредственно в виртуальную машину. Так и надёжней — в случае чего вы всегда сможете достать жёсткие диски из сервера и воткнуть их в любую Linux машину, которая тут же увидит все ваши данные.

    В общем, перейдём к практике. XenServer поддерживает такой тип SR как udev. Основное его предназначение — поддержка внешних USB носителей и проброс их в виртуалки. Работает SR такого типа крайне просто: в качестве VDI (Virtual Device Image) выступают все блочные устройства, найденные в некоторой папке. При этом VDI создаются автоматически при сканировании SR, вам остаётся только добавить их к нужным виртуальным машинам.

    Поскольку нет никакой разницы, какого типа блочное устройство в Linux использовать, и флешка ничем не отличается от mdadm массива и LVM тома, то можно вручную создать SR с типом udev и вручную в него добавить симлинк на нужное нам блочное устройство. Например, на массив md0.

    Для начала создаём каталог, в котором будут симлинки на нужные нам блочные устройства:

    mkdir /srv/block-devices

    Теперь делаем его SR типа udev с content-type=disk:

    xe sr-create name-label="Block devices" name-description="Блочные устройства, которые хотим пробросить с гипервизора в виртуалки" type=udev content-type=disk device-config:location=/srv/block-devices

    Добавляем нужное нам устройство:

    ln -s /dev/md0 /srv/block-devices/md0

    Затем пересканируем SR, дабы автоматически создались нужные VDI:

    xe sr-scan uuid=<uuid_нашего_SR>

    Должен появится новый VDI с name-label «Unrecognised bus type» на нашем SR. Убедиться в этом можно командой

    xe vdi-list sr-uuid=<uuid_нашего_SR>

    Ок, всё что осталось сделать — поменять имя и описание этого VDI и присоединить его к нужной машинке. Сделать это можно уже и через XenCenter. Кстати не бойтесь, созданные таким образом SR и VDI никуда не пропадут после перезагрузки и не поменяют своих параметров.

    Вот и всё. Немного странно, что о таком примитивном способе нет ни слова в официальной документации.
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 7
    • 0
      Здорово! Как раз недавно городил SR и единственный VDI.
      Т.е вначале RAID, затем SR c LVM и VDI c ext3. Надо потестить ваш вариант.
      По идее оберток меньше и стабильность должна быть выше.
      • 0
        Отлично! Спасибо за дельную информацию по XenServer.
        • 0
          Это ведь идет в разрез с идеологией XenServera. То бишь при fault-tolerance при миграции вашей виртуалки она не смигрирует, так как блочное устройство осталось на «старом» сервере. По этой же причине внутрь гостя нельзя пробрасывать аппаратные ключи и прочие USB-девайсы.
          • 0
            Когда у вас есть куда мигрировать, т.е. нечто типо SAS дисковой полки и пула, то вряд ли вам потребуется пробрасывать mdadm рейд в виртуалку :) А аппаратные ключи пробрасывать приходится в любом случае, ибо многим !"№;%: из тех, кто их производит, невдомёк, что никто физические сервера уже сто лет как не использует.
            • 0
              С ключами можно решить вопрос с помощью различных usb-to-ethernet
          • 0
            Давно хочу завести виртуализацию на домашнем сервере, как раз думал о Citrix XEN, останавливает следующее: имею аппаратный RAID массив, на контроллере 3Ware, массив содержит один раздел, отформатированный в XFS, данных несколько ТБ, понятное дело, что забекапить такой объем проблематично.

            Правильно ли я понимаю, что смогу пробросить имеющийся диск в гостевую систему и там его подмонтировать, не потеряв естественно данных?
            Не пострадают ли данные в процессе установки Citrix XEN?
            • 0
              Use KVM luke. А про Citrix забудь, оно в некоторой степени проприетарное.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.