DRBD для файла (а не раздела)
У нас есть несколько виртуальных машин Xen, которые используют файлы образов дисков.
disk = ["file:/xen/vbd/something.vbd,sda1,w"]
Мы хотели бы использовать DRBD для репликации этих файлов для резервного копирования (в отличие от беспорядка репликации MySQL и ночных rsyncs, которые мы имеем в данный момент). Но я не понимаю, как заставить это работать.
Мы можем привязать файл к устройству обратной связи с losetup
:
# losetup /dev/loop0 /xen/vbd/something.vbd
И укажите DRBD на это устройство:
device /dev/drbd1;
disk /dev/loop0;
Но петля не стабильна - ее нет при перезагрузке, и ее легко можно было бы подключить к петле 1, петле 2 и т. Д. Это не совсем допустимый вариант для сервера, если ему требуется взаимодействие с человеком для восстановления после прерывания питания,
Что мне не хватает?
4 ответа
Всегда есть старомодный способ:
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
Вы можете создать сценарий инициализации, который создает устройство цикла при запуске. Как то так