rev |
line source |
igor@0
|
1 \section{Подключениё устройств}
|
igor@0
|
2
|
igor@0
|
3 \textbf{Как выполнять горячее подключение блочных устройств в Xen.}<br/>
|
igor@0
|
4 Перевод и редактирование: Игорь Чубин<br/>
|
igor@0
|
5 Короткая ссылка: http://xgu.ru/wiki/xen/block-attach<br/>
|
igor@0
|
6 Оригинал: \url{http://lists.xensource.com/archives/html/xen-users/2007-03/msg01024.html}
|
igor@0
|
7
|
igor@0
|
8 Здесь рассматривается как выполнять горячее подключение устройств Xen,
|
igor@0
|
9 и как это может пригодиться при организации резервного копирования
|
igor@0
|
10 данных из доменов domU.
|
igor@0
|
11
|
igor@0
|
12 \subsection{Горячее подключение устройств}
|
igor@0
|
13 У команды \textit{xm} есть подкоманды \textit{block-attach} и \textit{block-detach}.
|
igor@0
|
14 В man-странице по \textit{xm} рассказывается детальнее об этих подкомандах (надо заметить, что описание подкоманды \textit{block-detach} там не совсем верное).
|
igor@0
|
15
|
igor@0
|
16 Эти команды, в частности, позволяют подключать/отключать (виртуальные) блочные устройства в domU. Делается это из домена dom0.
|
igor@0
|
17
|
igor@0
|
18 Например:
|
igor@0
|
19 \begin{verbatim}
|
igor@0
|
20
|
igor@0
|
21 \end{verbatim}
|
igor@0
|
22 \begin{verbatim}
|
igor@0
|
23
|
igor@0
|
24 \end{verbatim}
|
igor@0
|
25
|
igor@0
|
26 Команда \dq{}xm block-list\dq{} показывает список устройств, подключенных к домену.
|
igor@0
|
27 Мы делаем предположение, что последний пункт в списке это последнее
|
igor@0
|
28 добавленное устройство.
|
igor@0
|
29 Это работает, но такое поведение нигде не задокументировано,
|
igor@0
|
30 поэтому оно может измениться.
|
igor@0
|
31 Нам нужно отслеживать block id устройств, поскольку команда \textit{block-detach} требует знания именно id, а не имени устройства или файла.
|
igor@0
|
32
|
igor@0
|
33 \subsection{Резервное копирование данных домена}
|
igor@0
|
34 После этого создаётся snapshot и подсоединяется к Amanda-серверу.
|
igor@0
|
35 Backup-сервер с помощью fsck выполняет проверку на вновь подключенном устройстве, монтирует его, выполняет резервное копирование, а потом размонтирует его.
|
igor@0
|
36
|
igor@0
|
37 После этого в домене 0 выполняется команда: \begin{verbatim}
|
igor@0
|
38 block-attach domain-id be-dev fe-dev mode [bedomain-id]
|
igor@0
|
39 \end{verbatim}
|
igor@0
|
40
|
igor@0
|
41 Здесь описано как выполнять подключение устройств из командной строки.
|
igor@0
|
42 Конечно, это можно делать и скриптами.
|
igor@0
|
43 \begin{verbatim}
|
igor@0
|
44
|
igor@0
|
45 \end{verbatim}
|
igor@0
|
46 Аналогичным образом можно выполнять горячее подключение сетевых устройств,
|
igor@0
|
47 но это отдельная история.
|
igor@0
|
48
|
igor@0
|
49 \subsection{Подкоманды xm для работы с блочными устройствами}
|
igor@0
|
50 \subsubsection{block-attach}
|
igor@0
|
51 \begin{verbatim}
|
igor@0
|
52 block-attach domain-id be-dev fe-dev mode [bedomain-id]
|
igor@0
|
53 \end{verbatim}
|
igor@0
|
54
|
igor@0
|
55 Создать новое виртуальное блочное устройство.
|
igor@0
|
56 В результате выполняется hotplug-событие для гостевого домена.
|
igor@0
|
57
|
igor@0
|
58 \paragraph{Опции}
|
igor@0
|
59 \begin{itemize}
|
igor@0
|
60 \item \textit{domain-id} -- Номер гостевого домена, к которому будет подключаться устройство.
|
igor@0
|
61 \item \textit{be-dev} -- Устройство в backend-домене (обычно домен 0), которое должно экспортироваться. Его можно указать как физический раздел (phy:sda7) или как файл, который должен быть смонтирован через loopback-устройство (file://path/to/loop.iso).
|
igor@0
|
62 \item \textit{fe-dev} -- Как устройство должно быть представлено в гостевом домене. Параметр можно указывать или в виде символьного имени (для распространённых устройств), например как /dev/hdc, или с помощью device id, например 0x1400 (код device id для /dev/hdc в шестнадцатеричной системе).
|
igor@0
|
63 \item \textit{mode} -- Режим доступа из гостевого домена. Поддерживаются режимы rw (read/write) и ro (read-only).
|
igor@0
|
64 \item \textit{bedomain-id} -- backend-домен, обеспечивающий устройство. По умолчанию домен 0.
|
igor@0
|
65 \end{itemize}
|
igor@0
|
66
|
igor@0
|
67 \paragraph{Примеры}
|
igor@0
|
68 Монтирование ISO-диска:
|
igor@0
|
69 \begin{verbatim}
|
igor@0
|
70 xm block-attach guestdomain file://path/to/dsl-2.0RC2.iso /dev/hdc ro
|
igor@0
|
71 \end{verbatim}
|
igor@0
|
72
|
igor@0
|
73 Команда подключает ISO-файл dsl как /dev/hdc в гостевом домене в режиме read/only. Возможно, гостевая система и не увидит этот файл как сетевой,
|
igor@0
|
74 но ручное монтирование точно сработает.
|
igor@0
|
75
|
igor@0
|
76 \subsubsection{block-detach}
|
igor@0
|
77 \begin{verbatim}
|
igor@0
|
78 block-detach domain-id devid
|
igor@0
|
79 \end{verbatim}
|
igor@0
|
80
|
igor@0
|
81 Удалить блочное устройство из домена.
|
igor@0
|
82 В качестве \textit{devid} должно быть указано устроство домена 0.
|
igor@0
|
83 Номер определяется с помощью команды \textit{xm block-list}.
|
igor@0
|
84
|
igor@0
|
85 Сейчас эта команда сломана.
|
igor@0
|
86 Даже если устройство удалено из домена domU,
|
igor@0
|
87 оно занято в домене 0.
|
igor@0
|
88
|
igor@0
|
89 \subsubsection{block-list}
|
igor@0
|
90 \begin{verbatim}
|
igor@0
|
91 block-list [-l|--long] domain-id
|
igor@0
|
92 \end{verbatim}
|
igor@0
|
93
|
igor@0
|
94 Показать список виртуальных блочных устройств для домена.
|
igor@0
|
95 Вывод представлен в виде отформатированного списка или как S-выражение (S-Expression), в том случае, если задана опция --long.
|
igor@0
|
96
|
igor@0
|
97 \subsection{Дополнительная информация}
|
igor@0
|
98 \begin{itemize}
|
igor@0
|
99 \item xm(1) -- man-страница по \textbf{xm}
|
igor@0
|
100 \item Amanda -- система для резервного копирования по сети
|
igor@0
|
101 \end{itemize}
|
igor@0
|
102
|