Горячее подключение устройств в Xen

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


Как выполнять горячее подключение блочных устройств в Xen.
Перевод и редактирование: Игорь Чубин

Короткий URL: xen/attach

Здесь рассматривается как выполнять горячее подключение блочных, сетевых и PCI-устройств в гостевой домен Xen, и как это может пригодиться при организации резервного копирования данных из доменов domU. При написании этой страницы использовался материал письма [1].


Содержание

[править] Горячее подключение блочных устройств

У команды xm есть подкоманды block-attach и block-detach. В man-странице по xm рассказывается детальнее об этих подкомандах (надо заметить, что описание подкоманды block-detach там не совсем верное).

Эти команды, в частности, позволяют подключать/отключать (виртуальные) блочные устройства в domU. Делается это из домена dom0.

Например:

dom0# lvcreate -L1G -s -n mydomU sata1/mydomU-snap                                                                             
dom0# xm block-attach amandaserver phy:sata1/mydomU-snap                                                                       
dom0# blkid=$(xm block-list amandaserver| tail -n 1| awk '{ print $1; }')                                                                                                                        

Команда "xm block-list" показывает список устройств, подключенных к домену. Мы делаем предположение, что последний пункт в списке это последнее добавленное устройство. Это работает, но такое поведение нигде не задокументировано, поэтому оно может измениться. Нам нужно отслеживать block id устройств, поскольку команда block-detach требует знания именно id, а не имени устройства или файла.

После этого создаётся snapshot и подсоединяется к Amanda-серверу. Backup-сервер с помощью fsck выполняет проверку на вновь подключенном устройстве, монтирует его, выполняет резервное копирование, а потом размонтирует его.

После этого в домене 0 выполняется команда:
dom0# xm block-detach amandaserver $blkid                                                                                      
dom0# lvremove -f sata1/mydomU-snap                                                
                                                                                            

Здесь описано как выполнять подключение устройств из командной строки. Конечно, это можно делать и скриптами.

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

[править] Подкоманды xm для работы с блочными устройствами

[править] block-attach

  block-attach domain-id be-dev fe-dev mode [bedomain-id]

Создать новое виртуальное блочное устройство. В результате выполняется hotplug-событие для гостевого домена.

[править] Опции

  • domain-id - Номер гостевого домена, к которому будет подключаться устройство.
  • be-dev - Устройство в backend-домене (обычно домен 0), которое должно экспортироваться. Его можно указать как физический раздел (phy:sda7) или как файл, который должен быть смонтирован через loopback-устройство (file://path/to/loop.iso).
  • fe-dev - Как устройство должно быть представлено в гостевом домене. Параметр можно указывать или в виде символьного имени (для распространённых устройств), например как /dev/hdc, или с помощью device id, например 0x1400 (код device id для /dev/hdc в шестнадцатеричной системе).
  • mode - Режим доступа из гостевого домена. Поддерживаются режимы rw (read/write) и ro (read-only). В новых версиях необходимо писать "r" вместо "ro" и "w" вместо "rw".
  • bedomain-id - backend-домен, обеспечивающий устройство. По умолчанию домен 0.

[править] Примеры

Монтирование ISO-диска:

xm block-attach guestdomain file://path/to/dsl-2.0RC2.iso /dev/hdc ro

Команда подключает ISO-файл dsl как /dev/hdc в гостевом домене в режиме read/only. Возможно, гостевая система и не увидит этот файл как сетевой, но ручное монтирование точно сработает.

[править] block-detach

 block-detach domain-id devid

Удалить блочное устройство из домена. В качестве devid должно быть указано устройство домена 0. Номер определяется с помощью команды xm block-list.

Сейчас эта команда сломана. Даже если устройство удалено из домена domU, оно занято в домене 0.

[править] block-list

 block-list [-l|--long] domain-id

Показать список виртуальных блочных устройств для домена. Вывод представлен в виде отформатированного списка или как S-выражение (S-Expression), в том случае, если задана опция --long.

[править] Горячее подключение сетевых интерфейсов

[править] Горячая проброска PCI-устройств (PCI-passthrough)

Патч pv_pcihp_pass.patch позволяет выполнять горячее подключение PCI-устройств внутрь PCI-доменов.

This patch makes it possible to attach/detach passthrough                                                  
pci devices to/from pv domains, when pciback is compiled with                                              
CONFIG_XEN_PCIDEV_BACKEND_PASS option.                                                                     
                                                                                                           
With BACKEND_PASS options, the virtual device name is the same                                             
as the physical device name and multiple pci roots may be exposed                                          
to the guest. In this patch, adding new pci roots is supported by                                          
publishing new xenstore root-% nodes when new pci devices are attached.                                    
However, removing pci roots is not supported because implementing                                          
such 'pci root hot-removal' would add much complication.                                                   
If a pci root becomes childless as the result of pci-detach,                                               
retaining it would be harmless. 

[править] Дополнительная информация

  • xm(1) - man-страница по xm
  • Amanda - система для резервного копирования по сети
Xen
Xen

Виртуализация и паравиртуализация
Эмуляция | Виртуализация | Паравиртуализация | Рекурсивная виртуализация
Паравиртуальные драйверы | Виртуализация ввода/вывода

Общие вопросы по Xen
Аппаратные требования Xen | Поддержка Xen операционными системами | Поддерживаемые аппаратные архитектуры |
Примеры использования Xen | Сравнение виртуальных машин |
Хостинг на Xen
Альтернативы Xen

свободные: KVM | LXC | OpenVZ | VServer | QEMU | VirtualBox
проприетарные: Hyper-V | VMware ESX Server

Технические вопросы
Инсталляция Xen | Конфигурационный файл домена
ОС в Xen: Linux small icon.png Linux | Solaris small icon.png OpenSolaris | Freebsd small icon.png FreeBSD | Openbsd small icon.png OpenBSD | Netbsd small icon.png NetBSD | Windows xp small icon.png Windows XP | Windows vista small icon.png Windows Vista
Устройства: Блочные | USB | SCSI | Сеть | PV-драйверы для Linux | PV-драйверы для Windows | Консоль

Распределение ресурсов между доменами | Перенос системы внутрь Xen | HVM -> PV

Управление и кластеризация | Enomalism | Xen+DRBD | Ganeti | Convirt 2.0 | SkyCover Infrastructure