我们有许多使用磁盘映像文件的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;
但是环回不稳定 – 重启时不存在,很容易被连接到loop1,loop2等。如果服务器需要人工交互来恢复电源中断。
我错过了什么?
总是有老套的方式:
mknod /dev/loop255 b 7 255 losetup /dev/loop255 mydisk.img
使用高随机数来避免潜在的冲突。
“回送不稳定”是什么意思? 如果你只是创build一个包含类似的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总是不会指向相同的图像呢? 我错过了什么? 🙂
您可以创build一个在启动时创build循环设备的初始化脚本。 像这样的东西。
这是我的裸骨循环设备初始化脚本。 在Debian挤压testing。
### 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