文件(而非分区)上的 DRBD

文件(而非分区)上的 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;

但是环回并不稳定 - 它在重启时不存在,并且很容易连接到环路 1、环路 2 等。如果服务器需要人工交互才能在断电后恢复,那么它对于服务器来说不是一个有效的选择。

我错过了什么?

答案1

总有一种老式的方法:

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

使用较高的随机数以避免潜在的冲突。

答案2

“环回不稳定”是什么意思?如果你只是创建一个包含以下内容的 shell 脚本,会怎么样

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

并将其放在系统启动时,在 xen 客户机启动之前(或者使用一些更正式的方式来设置永久环回映像,还没有这样做过)?那么 /dev/loop0 不是总是指向同一个映像吗?我丢失的? :)

答案3

你可以创建一个在启动时创建循环设备的初始化脚本。例如

答案4

这是我的基本循环设备初始化脚本。已在 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

相关内容