Назад | Перейти на главную страницу

DRBD в файле (а не в разделе)

У нас есть несколько виртуальных машин Xen, которые используют файлы образов дисков.

disk = ["file:/xen/vbd/something.vbd,sda1,w"]

Мы хотели бы использовать DRBD для репликации этих файлов для резервного копирования (в отличие от беспорядка репликации MySQL и ночных rsync, которые у нас есть сейчас). Но я, кажется, не понимаю, как заставить это работать.

Мы можем привязать файл к устройству обратной связи с помощью losetup:

# losetup /dev/loop0 /xen/vbd/something.vbd

И укажите DRBD на это устройство:

device  /dev/drbd1;
disk    /dev/loop0;

Но loopback нестабилен - его нет при перезагрузке, и его легко можно было бы подключить к loop1, loop2 и т. Д. Это не совсем подходящий вариант для сервера, если ему требуется вмешательство человека для восстановления после прерывания питания. .

Что мне не хватает?

Всегда есть старомодный способ:

mknod /dev/loop255 b 7 255
losetup /dev/loop255 mydisk.img

Используйте большое случайное число, чтобы избежать потенциального конфликта.

Что вы имеете в виду, говоря «шлейф нестабилен»? Что, если вы просто создадите сценарий оболочки, содержащий что-то вроде

losetup /dev/loop0 /xen/vdb/something.vdb
losetup /dev/loop1 /xen/vdb/something2.vdb
losetup /dev/loop2 /xen/vdb/something3.vdb

и поместите это при запуске системы до запуска гостей xen (или используйте более официальный способ установки постоянных образов обратной петли, еще не сделали этого)? Не будет ли / dev / loop0 всегда указывать на одно и то же изображение? Что я я отсутствует? :)

вы можете создать сценарий инициализации, который создает устройство цикла при запуске. Что-то вроде этот.

Вот мой сценарий инициализации устройства цикла с голыми костями. Проверено на Debian Squeeze.

### BEGIN INIT INFO
# Provides:          drbd_loopbacks
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

XEN_PATH=/home/xen/domains
DRBD_PATH=/home/drbd

case "$1" in
start)
  losetup /dev/loop45   $XEN_PATH/int/disk.img
  losetup /dev/loop63   $DRBD_PATH/meta.img
  ;;

stop)
  losetup -d /dev/loop45
  losetup -d /dev/loop63
  ;;
*)
  echo $"Usage: $0 {start|stop}"
  exit 1
esac