xg-scale

diff xen/drbd.tex @ 0:4730a0d07d88

Исходники курса после первого прочтения.
Правки (которых должно быть много),
ещё пока не вносились.
author Igor Chubin <igor@chub.in>
date Tue Jul 01 16:16:44 2008 +0300 (2008-07-01)
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/xen/drbd.tex	Tue Jul 01 16:16:44 2008 +0300
     1.3 @@ -0,0 +1,468 @@
     1.4 +\section{Построение отказоустойчивого кластера виртуальных машин Xen + DRBD}
     1.5 +
     1.6 +\subsection{Идея}
     1.7 +Компоненты:
     1.8 +\begin{itemize}
     1.9 +\item  \textbf{Xen} — монитор виртуальных машин (VMM, Virtual Machine Monitor) или гипервизор (hypervisor) с поддержкой паравиртуализации (para-virtualization) для процессоров x86 архитектуры, распространяющийся с открытым исходным кодом (opensource). Xen может организовать совместное безопасное исполнение нескольких виртуальных машин на одной физической системе с производительностью близкой к непосредственной (native).
    1.10 +\item  \textbf{LVM} (Logical Volume Manager) — менеджер логических томов операционной системы Linux. LVM предоставляет собой дополнительный уровень абстракции между физическими/логическими дисками и файловой системой. 
    1.11 +\item  \textbf{DRBD} (Distributed Replicated Block Deice) — блочное устройство, предназначенное для построения отказоустойчивых кластерных систем на операционной системе Linux. DRBD занимается полным отражением (mirroring) по сети всех операций с блочным устройством. Можно считать, что DRBD это сетевой RAID-1.
    1.12 +\end{itemize}
    1.13 +
    1.14 +Терминология:
    1.15 +\begin{itemize}
    1.16 +\item  узел — физический сервер, на котором исполняются виртуальные машины;
    1.17 +\item  DRBD-устройство — дисковый раздел или логический том LVM, синхронизируемый с помощью DRBD;
    1.18 +\item  домен — работающая виртуальная машина Xen;
    1.19 +\item  кластер — два узла, которые имеют общие DRBD-устройства, поверх которых выполняются общие домены Xen.
    1.20 +\end{itemize}
    1.21 +
    1.22 +Идея заключается в том, чтобы в качестве дисковых устройств для виртуальных машин Xen, 
    1.23 +использовать DRBD-устройства. DRBD устройства в свою очередь размещаются поверх LVM томов машин входящих в кластер.
    1.24 +
    1.25 +DRBD отвечает за полную синхронизацию операций с дисковыми системами, выполняющимися доменами Xen.
    1.26 +
    1.27 +С точки зрения внешнего наблюдателя не имеет значения, на каком из узлов кластера
    1.28 +в настоящий момент выполняется виртуальная машина.
    1.29 +
    1.30 +При плановом выведении узла из эксплуатации, 
    1.31 +машины, работающие на нём, мигрируют на второй узел кластера.
    1.32 +Это совершенно незаметно с точки зрения внешнего наблюдателя.
    1.33 +
    1.34 +При внезапной остановке одного из узлов машины, 
    1.35 +работавшие на нём, запускаются на втором узле.
    1.36 +С точки зрения внешнего наблюдателя, работавшего с виртуальной машиной, 
    1.37 +которая исполнялась на внезапно выключившемся узле, это выглядит 
    1.38 +как перезагрузка машины.
    1.39 +
    1.40 +Виртуальные машины могут быть произвольно распределены по узлам кластера.
    1.41 +
    1.42 +\begin{center} \resizebox{10cm}{!}{\includegraphics{/var/lib/mediawiki/images/4/4b/Xen-drbd.png}}\\ \textit{}\end{center}
    1.43 +
    1.44 +\subsection{Инсталляция и управление кластером}
    1.45 +\subsubsection{Подготовка узлов}
    1.46 +
    1.47 +Подготовка узлов может выполняться вручную или с помощью
    1.48 +вспомогательных средств, таких, например, как скрипт \textit{xen-drbd-install}.
    1.49 +Скрипт \textit{xen-drdb-install} предназначен для облегчения
    1.50 +рутинных операций, выполняющихся при инсталляции
    1.51 +нового кластера виртуализации с повышенной отказоустойчивостью,
    1.52 +построенного на основе Xen и DRBD.
    1.53 +
    1.54 +В результате работы \textit{xen-drbd-install}
    1.55 +создаётся сценарий командного интерпретатора, 
    1.56 +который выполняет такие действия:
    1.57 +\begin{enumerate}
    1.58 +\item  Подготовка LVM томов;
    1.59 +\item  Настройка DRBD устройств;
    1.60 +\item  Наполнение файловых систем доменов.
    1.61 +\end{enumerate}
    1.62 +
    1.63 +Полученный сценарий может быть доработан вручную, 
    1.64 +а может использоваться непосредственном в том 
    1.65 +виде, как его сгенерирует \textit{xen-drbd-install}.
    1.66 +
    1.67 +\subsubsection{Управление узлами}
    1.68 +
    1.69 +Скрипт \textit{xen-drbd} 
    1.70 +обеспечивает взаимное соответсвие
    1.71 +состояния DRBD-устройств и доменов Xen, использующих их.
    1.72 +Он следит за тем, чтобы при выполнении таких
    1.73 +операций как запуск и миграция доменов,
    1.74 +используемые DRBD-устройства
    1.75 +переключались основное (primary) или резервное (secondary) состояние
    1.76 +в зависимости от точки запуска или направления миграции.
    1.77 +
    1.78 +Он также следит за тем, чтобы один и тот же домен
    1.79 +нельзя было запустить на разных узлах кластера
    1.80 +несколько раз.
    1.81 +
    1.82 +Кроме этого, \textit{xen-drbd} контролирует процесс запуска и останова узлов:
    1.83 +он инициирует миграцию доменов с одного узла на другой в случае
    1.84 +останова первого; и обратную миграцию при запуске узла.
    1.85 +
    1.86 +\subsection{Взаимный контроль узлов с помощью heartbeat}
    1.87 +Кластер функционален уже — без настройки и использования heartbeat — 
    1.88 +однако функциональность его частична:
    1.89 +при выходе из строя одного из узлов кластера
    1.90 +доступными останутся только те домены, которые 
    1.91 +исполнялись на нём в момент выхода из строя второго узла.
    1.92 +Оставшиеся домены можно будет поднять, но только вручную.
    1.93 +Нужно же, чтобы каждый из узлов имел возможность определить, 
    1.94 +что его напарник пропал, и запустить все недостающие домены.
    1.95 +При этом особенно важно избежать случая, когда каждый узел
    1.96 +ошибочно решит, что его напарник выключился, в то время как 
    1.97 +оба они будут работать, но по какой-то причине перестанут видеть друг друга.
    1.98 +В этом случае может наступить опасная ситуация, касающаяся взаимной противоречивости данных на DRBD-устройствах, и названная \textit{split-brain}.
    1.99 +
   1.100 +\subsection{Резервирование коммутаторов и сетевых адаптеров}
   1.101 +\subsubsection{Использование аггрегированных каналов}
   1.102 +Сетевые адаптеры узлов могут быть зарезервированы
   1.103 +путём аггрегирования каналов,
   1.104 +соединяющих узел с коммутатором.
   1.105 +
   1.106 +В каждом сервере должно быть по два сетевых адаптера,
   1.107 +каждый из которых подключается к коммутатору.
   1.108 +Они работают как единое целое, то есть два канала
   1.109 +выглядят как один аггрегированный.
   1.110 +
   1.111 +При пропадении одного из соединений (это может быть связано
   1.112 +с неполадками адаптера, соединительного кабеля или порта коммутатора)
   1.113 +система продолжает работу на оставшемся.
   1.114 +В системном журнале появляется сообщение о 
   1.115 +возникшей проблеме.
   1.116 +
   1.117 +Для работы аггрегированного канала необходима поддержка
   1.118 +со стороны коммутатора:
   1.119 +\begin{itemize}
   1.120 +\item  он должен поддерживать аггрегированные каналы;
   1.121 +\item  он должен быть настроен соответствующим образом.
   1.122 +\end{itemize}
   1.123 +
   1.124 +\subsubsection{Использование виртуального моста и STP}
   1.125 +Построить аггрегированный канал на два независимых коммутатора
   1.126 +нельзя (за некоторыми проприетарными исключениями).
   1.127 +
   1.128 +Можно отказаться от использования аггрегированного канала
   1.129 +и с некоторой потерей функциональности перейти на использование
   1.130 +протокола STP и виртуального моста.
   1.131 +Это позволит сделать резервирование коммутатора, однако 
   1.132 +у такого решения есть недостаток:
   1.133 +в отдельно взятый момент времени будет работать один из каналов.
   1.134 +
   1.135 +Подключение одного узла выглядит так:
   1.136 +\begin{verbatim}
   1.137 ++---------------------------+
   1.138 +|HOST                 peth0 |
   1.139 +|                      +--+ |      +--------------+
   1.140 +|               +------+  +-+------|   switch1    |
   1.141 +|               |      +--+ |      +---+----------+
   1.142 +|veth0+---------+----+      |          |
   1.143 +|  ---+ linux bridge |      |          |
   1.144 +|     +---------+----+      |          |
   1.145 +|               |      +--+ |      +---+----------+
   1.146 +|               +------+  +-+------+   switch2    |
   1.147 +|                      +--+ |      +--------------+
   1.148 +|                     peth1 |
   1.149 ++---------------------------+
   1.150 +\end{verbatim}
   1.151 +
   1.152 +Соединения с коммутаторами происходят не напрямую
   1.153 +а через виртуальных мост (linux bridge) внутри хоста.
   1.154 +Этот мост поддерживает протокол STP
   1.155 +и в этом контексте может рассматриваться как обычный
   1.156 +коммутатор, который не может выйти из строя (точнее,
   1.157 +может, но только вместе с хостом, внутри которого он работает).
   1.158 +
   1.159 +Соединенние двух коммутаторов и двух узлов выглядит так
   1.160 +(соединения heartbeat может и не быть, в этом случае
   1.161 +в качестве heartbeat-канала будут использоваться
   1.162 +основные соединения):
   1.163 +\begin{verbatim}
   1.164 ++---------------------------+
   1.165 +|HOST1                peth0 |
   1.166 +|                      +--+ |      +--------------+
   1.167 +|               +------+  +-+------|   switch1    |
   1.168 +|               |      +--+ |      ++--+----------+
   1.169 +|veth0+---------+----+      |   +---+  |
   1.170 +|  ---+ linux bridge |      |   |      |
   1.171 +|     +---------+----+      |   |      |
   1.172 +|               |      +--+ |   |  +---+----------+
   1.173 +|               +------+  +-+---|--+   switch2    |
   1.174 +|                      +--+ |   |  +---+----------+
   1.175 +|                     peth1 |   |      |
   1.176 ++-------+-------------------+   |      |
   1.177 +        |                       |      |
   1.178 +        |heartbeat              |      |
   1.179 ++-------+-------------------+   |      |
   1.180 +|HOST2                peth0 |   |      |
   1.181 +|                      +--+ |   |      |
   1.182 +|               +------+  +-+---+      |
   1.183 +|               |      +--+ |          |
   1.184 +|veth0+---------+----+      |          |
   1.185 +|  ---+ linux bridge |      |          |
   1.186 +|     +---------+----+      |          |
   1.187 +|               |      +--+ |          |
   1.188 +|               +------+  +-+----------+
   1.189 +|                      +--+ |
   1.190 +|                     peth1 |
   1.191 ++---------------------------+
   1.192 +\end{verbatim}
   1.193 +
   1.194 +\subsubsection{Сравнение использования аггрегированных каналов и виртуального моста}
   1.195 +Минусы:
   1.196 +
   1.197 +\begin{enumerate}
   1.198 +\item  Каналы не объединияются, а используются попеременно.
   1.199 +\item  Переключение с одного канала на другой происходит достаточно долго. При настройках коммутатора по умолчанию процесс переключения может занять до минуты. Это связано с работой STP. В RSTP было бы быстрее, но RSTP Linux Bridge пока не поддерживает.
   1.200 +\end{enumerate}
   1.201 +
   1.202 +Плюсы:
   1.203 +
   1.204 +\begin{enumerate}
   1.205 +\item  От коммутаторов ничего не требуется кроме поддержки STP;
   1.206 +\item  Можно подключаться к двум независимым коммутаторам;
   1.207 +\item  Не требуется никакая дополнительная настройка коммутаторов.
   1.208 +\end{enumerate}
   1.209 +
   1.210 +\subsection{Отдельные вопросы эксплуатации xen-drbd}
   1.211 +\subsubsection{Создание новых устройств DRBD}
   1.212 +При синхронизации множества отдельных томов с помощью DRBD
   1.213 +нужно обратить внимание на следующее:
   1.214 +\begin{itemize}
   1.215 +\item  Количество синхронизируемых устройств DRBD ограничено (<=255);
   1.216 +\item  Для синхронизации отдельных устройств DRBD используются отдельные TCP-порты. При добавлении нового DRBD-устройства обратите внимание на то, что бы порт, который вы назначаете ему для синхронизации, уже не был занят.
   1.217 +\item  Используйте внешние метадиски, поскольку в случае когда метадиск является внутренним, поведение DRBD при изменении размера логического тома может оказаться неожиданным.
   1.218 +\end{itemize}
   1.219 +
   1.220 +\paragraph{Множество DRBD-устройств}
   1.221 +Количество синхронизируемых устройств DRBD ограничено.
   1.222 +Максимальное количество используемых одновременно DRBD-устройств
   1.223 +задаётся в качестве параметра \texttt{minor\_count} модуля ядра \textbf{drbd}
   1.224 +при его загрузке. Этот параметр не может превышать 255.
   1.225 +
   1.226 +\begin{verbatim}
   1.227 +$ sudo modinfo drbd
   1.228 +filename:       /lib/modules/2.6.18-3-xen-686/kernel/drivers/block/drbd.ko
   1.229 +author:         Philipp Reisner <phil@linbit.com>, Lars Ellenberg <lars@linbit.com>
   1.230 +description:    drbd - Distributed Replicated Block Device v8.0.0
   1.231 +license:        GPL
   1.232 +alias:          block-major-147-*
   1.233 +vermagic:       2.6.18-3-xen-686 SMP mod_unload 686 REGPARM gcc-4.1
   1.234 +depends:        cn
   1.235 +parm:           trace_devs:int
   1.236 +parm:           trace_type:int
   1.237 +parm:           trace_level:int
   1.238 +parm:           fault_count:int
   1.239 +parm:           fault_rate:int
   1.240 +parm:           enable_faults:int
   1.241 +parm:           allow_oos:DONT USE! (bool)
   1.242 +parm:           minor_count:Maximum number of drbd devices (1-255) (int)
   1.243 +\end{verbatim}
   1.244 +
   1.245 +\paragraph{Сетевые порты DRBD}
   1.246 +Для синхронизации отдельных устройств DRBD используются отдельные TCP-порты.
   1.247 +При добавлении нового DRBD-устройства обратите внимание на то, что бы порт,
   1.248 +который вы назначаете ему для синхронизации, уже не был занят.
   1.249 +
   1.250 +Кроме того, нужно обратить внимание на то, чтобы доступ к этим портам
   1.251 +для парного узла не был ограничен брандмауэром.
   1.252 +
   1.253 +В пример ниже есть строка:
   1.254 +\begin{verbatim}
   1.255 + address 192.168.1.190:7792;
   1.256 +\end{verbatim}
   1.257 +она показывает, что синхронизация ресурса
   1.258 +выполняется с узлом 192.168.1.190 и для сихнронизации используется
   1.259 +порт 7792.
   1.260 +
   1.261 +\paragraph{Метадиск}
   1.262 +Лучше не использовать внуренний метадиск (meta-disk internal),
   1.263 +особенно если вы собираетесь менять размер логического тома
   1.264 +LVM и файловой системы на нём.
   1.265 +
   1.266 +Нужно создать отдельный том для-
   1.267 +meta-disk\rq{}ов DRBD и задать его размер
   1.268 +равным 128MB x количество устройств.
   1.269 +
   1.270 +В пример конфигурационного файла <tt>drbd.conf</tt>, 
   1.271 +приведённом ниже, есть строка:
   1.272 +\begin{verbatim}
   1.273 + meta-disk /dev/XEN/meta[1];
   1.274 +\end{verbatim}
   1.275 +Она говорит о том, что мета-информация
   1.276 +об DRBD-устройстве, к которому относится эта строка,
   1.277 +должна находится в мета-диске 1 (нумерация с нуля)
   1.278 +на томе \texttt{/dev/XEN/meta}.
   1.279 +Подготовка этого тома не выполняется каким-то
   1.280 +особенным образом —  в данном случае это обычный
   1.281 +логический том LVM, но вообще это может быть любое блочное
   1.282 +устройство достаточного объёма.
   1.283 +
   1.284 +Если метадиск создаётся на отдельном логическом
   1.285 +томе LVM, то его можно расширять.
   1.286 +Расширять метадиск нужно в том случае,
   1.287 +когда количество DRBD-устройств, использующих
   1.288 +его, превышает допустимое.
   1.289 +Это число можно найти, разделив размер метадиска
   1.290 +на объём, необходимый для каждого DRBD-устройства
   1.291 +(в настоящий момент 128MB).
   1.292 +
   1.293 +\paragraph{Пример секции файла drbd.conf}
   1.294 +
   1.295 +\begin{verbatim}
   1.296 +resource dns {
   1.297 +    protocol C;
   1.298 +    net {
   1.299 +        allow-two-primaries;
   1.300 +        after-sb-0pri discard-least-changes;
   1.301 +        after-sb-1pri call-pri-lost-after-sb;
   1.302 +        after-sb-2pri call-pri-lost-after-sb;
   1.303 +    }
   1.304 +    syncer {
   1.305 +        rate 5M;
   1.306 +    }
   1.307 +    on dom0
   1.308 +    {
   1.309 +        device /dev/drbd1;
   1.310 +        disk /dev/XEN/dns;
   1.311 +        address 192.168.1.190:7792;
   1.312 +        meta-disk /dev/XEN/meta[1];
   1.313 +    }
   1.314 +    on dom0m
   1.315 +    {
   1.316 +        device /dev/drbd1;
   1.317 +        disk /dev/XEN/dns;
   1.318 +        address 192.168.1.191:7792;
   1.319 +        meta-disk /dev/XEN/meta[1];
   1.320 +    }
   1.321 +}
   1.322 +\end{verbatim}
   1.323 +
   1.324 +\subsubsection{Расширение диска DRBD}
   1.325 +DRBD-устройство может менять свои размеры.
   1.326 +Это возможно в том случае, если меняют размер (как правило, расширяются)
   1.327 +устройства на которых базируется DRBD.
   1.328 +Когда DRBD работает поверх логических томов LVM,
   1.329 +желание расширение DRBD-устройства выглядит весьма естественно,
   1.330 +поскольку изменение размеров LVM-томов
   1.331 +является вполне простой и часто использующейся операцией;
   1.332 +хочется, чтобы то, что работает поверх логического тома LVM
   1.333 +могло отреагировать на изменение размеров.
   1.334 +
   1.335 +Расширение DRBD-устройства и файловой системы, находящейся на нём, состоит из
   1.336 +следующих шагов:
   1.337 +\begin{enumerate}
   1.338 +\item  Расширение \textit{логического тома}, на котором базируется DRBD-устройство на обоих узлах.
   1.339 +\item  Отражение изменений в метадиске.
   1.340 +\item  Расширение \textit{файловой системы} на primary-устройстве.
   1.341 +\item  Проверка правильности выполнения.
   1.342 +\end{enumerate}
   1.343 +
   1.344 +Например, пусть:
   1.345 +\begin{itemize}
   1.346 +\item  машины называются \textit{primary} и \textit{secondary}
   1.347 +\item  с помощью DRBD синхронизируется логический том /dev/TURBO/lv0
   1.348 +\item  размер тома увеличивается на 2G
   1.349 +\item  на томе создана файловая система ext2/ext3
   1.350 +\end{itemize}
   1.351 +Все указанные параметры являются необязательными
   1.352 +и приведены для удобства повествования.
   1.353 +
   1.354 +1) Измените размер тома на обоих машинах.
   1.355 +
   1.356 +\begin{verbatim}
   1.357 +primary# lvresize -L +2048M /dev/TURBO/lv0
   1.358 +secondary# lvresize -L +2048M /dev/TURBO/lv0
   1.359 +\end{verbatim}
   1.360 +
   1.361 +2) Вызовите команду перестроения размера
   1.362 +DRBD-устройства на обоих машинах:
   1.363 +
   1.364 +\begin{verbatim}
   1.365 +primary# drbdadm resize all  #(вместо all может быть указан только интересующий диск)
   1.366 +secondary# drbdadm resize all
   1.367 +\end{verbatim}
   1.368 +
   1.369 +3) На primary-устройстве измените размер файловой системы,
   1.370 +расположенной на DRBD-устройстве:
   1.371 +
   1.372 +\begin{verbatim}
   1.373 +primary# ext2resize /dev/drbd0  # (или другое устройство)
   1.374 +\end{verbatim}
   1.375 +
   1.376 +4) Проверьте, что изменение размера прошло успешно.
   1.377 +
   1.378 +\begin{verbatim}
   1.379 +primary# df -h /dev/drbd0
   1.380 +\end{verbatim}
   1.381 +
   1.382 +Проверка с помощью df возможна только в том случае,
   1.383 +если \texttt{/dev/drbd0} смонтировано в настоящий момент.
   1.384 +
   1.385 +Размер несмонтированной файловой системы можно тоже посмотреть,
   1.386 +но только не в байтах, а в блоках.
   1.387 +Для файловых систем ext2/ext3:
   1.388 +
   1.389 +\begin{verbatim}
   1.390 +%# dumpe2fs /dev/drbd0 | grep ^Block
   1.391 +dumpe2fs 1.40-WIP (14-Nov-2006)
   1.392 +Block count:              979933
   1.393 +Block size:               1024
   1.394 +Blocks per group:         8192
   1.395 +\end{verbatim}
   1.396 +
   1.397 +Указать домену Xen, использующему DRBD-устройство,
   1.398 +что оно изменило размер, в настоящий момент,
   1.399 +к сожалению, невозможно.
   1.400 +
   1.401 +В будущем, сообщить об изменении конфигурации
   1.402 +дискового устройства домена будет можно, предположительно,
   1.403 +с помощью команды \textbf{xm block-configure}.
   1.404 +
   1.405 +\subsubsection{Проверка DRBD перед стартом виртуальной машины}
   1.406 +Можно сделать так, чтобы виртуальная машина
   1.407 +вообще не стартовала до тех пор,
   1.408 +пока соответствующее DRBD-устройство не будет переведено
   1.409 +в состояние primary
   1.410 +(на устройстве в состоянии secondary она может начать работать,
   1.411 +но, когда внутреняя операционная система дойдёт до момента
   1.412 +монтирования корневой файловой системы, загрузка прекратится; 
   1.413 +в действительности это устройство вообще не используется до момента
   1.414 +монтирования корневой системы, поэтому первый этап загрузки
   1.415 +операционной системы домена проходит без ошибок).
   1.416 +
   1.417 +Предположим, машина использует в качестве своего хранилища
   1.418 +устройство /dev/drbd4. В таком случае,
   1.419 +проверка будет выглядеть так:
   1.420 +
   1.421 +\begin{verbatim}
   1.422 +import os
   1.423 +if os.system("grep '4:.*Primary/Secondary' /proc/drbd") != 0:
   1.424 +    print "DRBD for this virtual machine not in primary state."
   1.425 +    print "Exiting."
   1.426 +    exit(1)
   1.427 +\end{verbatim}
   1.428 +
   1.429 +Эти строки нужно добавить в конфигурационный файл соответствующего
   1.430 +домена Xen.
   1.431 +
   1.432 +Пример использования:
   1.433 +
   1.434 +\begin{verbatim}
   1.435 +%$ sudo drbdadm secondary vpn
   1.436 +
   1.437 +%$ sudo xm create -c vpn
   1.438 +Using config file "/etc/xen/vpn".
   1.439 +DRBD for this virtual machine not in primary state.
   1.440 +Exiting.
   1.441 +Error: 'str' object is not callable
   1.442 +
   1.443 +%$ sudo drbdadm primary vpn
   1.444 +
   1.445 +%$ sudo xm create -c vpn
   1.446 +Using config file "/etc/xen/vpn".
   1.447 + 4: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
   1.448 +Started domain vpn
   1.449 +Linux version 2.6.18-4-xen-686 (Debian 2.6.18.dfsg.1-11)
   1.450 +(waldi@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian
   1.451 +4.1.1-21)) #1 SMP Wed Feb 21 20:46:15 UTC 2007
   1.452 +BIOS-provided physical RAM map:
   1.453 + Xen: 0000000000000000 - 0000000004800000 (usable)
   1.454 +0MB HIGHMEM available.
   1.455 +72MB LOWMEM available.
   1.456 +.......
   1.457 +\end{verbatim}
   1.458 +
   1.459 +Когда DRBD-устройство \textit{vpn} было в резервном состоянии (secondary),
   1.460 +создать домен не удалось.
   1.461 +После того как оно было переведено
   1.462 +в основное состояние (primary), домен успешно стартанул.
   1.463 +
   1.464 +Если для управления доменами Xen используется скрипт \textit{xen-drbd},
   1.465 +то эту проверку выполнять не нужно.
   1.466 +Она автоматически выполняется скриптом.
   1.467 +
   1.468 +\subsection{Дополнительная информация}
   1.469 +\begin{itemize}
   1.470 +\item \htmladdnormallinkfoot{Использование доменов Xen поверх DRBD-устройств}{http://xgu.ru/wiki/xen/drbd} (рус.)
   1.471 +\end{itemize}