我目前正在尝试通过 XEN 模拟环境。我已经安装了两个具有这种 FS 布局的 debian 系统:
cltest1:/etc# df -h 已使用的文件系统大小可用使用百分比已安装在 /dev/xvda2 6.0G 417M 5.2G 8% / tmpfs 257M 0 257M 0% /lib/init/rw udev 10M 16K 10M 1% /dev tmpfs 257M 4.0K 257M 1% /dev/shm
主机 cltest2 是相同的。
这是我的 drbd.conf
全球的 { 次要计数 1; } 资源 mysql { 协议 C; 同步器 { 速率10M;# 10 兆字节 } 在 cltest1 { 设备/dev/drbd0; 磁盘 /dev/xvda2; 地址 192.168.1.186:7789; 元磁盘内部; } 在 cltest2 { 设备/dev/drbd0; 磁盘 /dev/xvda2; 地址 192.168.1.187:7789; 元磁盘内部; } }
我没有在 drbd0 上创建文件系统
通过 init.d 脚本启动 DRBD 错误:
启动 DRBD 资源:[ d(mysql) /dev/drbd0: Failure: (114) 下层设备已被占用。这通常意味着它已安装。 [mysql] cmd /sbin/drbdsetup /dev/drbd0 disk /dev/xvda2 /dev/xvda2 internal --set-defaults --create-device failed - 继续!
运行: drbdadm create-md mysql 给出:
cltest1:/etc# drbdadm create-md mysql md_offset 6442446848 al_offset 6442414080 bm_offset 6442217472 找到使用 6291456 kB 的 ext3 文件系统 当前配置剩余可用 6291228 kB 设备大小将被截断,这 会损坏数据并导致 “访问超出设备末端”错误。 你需要要么 * 使用外部元数据(推荐) * 首先缩小该文件系统 * 将设备清零(破坏文件系统) 操作被拒绝。 命令 'drbdmeta /dev/drbd0 v08 /dev/xvda2 internal create-md' 以退出代码 40 终止 drbdadm 中止
据我了解,我所有的问题都是因为我在 xvda2 上没有未分配的磁盘空间。
除了缩小 FS 和连接单独的物理磁盘之外,我还有哪些选择?元数据不能存储在本地文件系统的文件中吗?
drbd 有时可以拾取“现有”文件系统,即使系统中没有一个。你可以
dd if=/dev/zero of=/dev/xvda2
(几秒钟后控制-C),它会清除之前可以保存文件系统的分区。您不应该以任何文件系统格式安装磁盘;在 Ubuntu 中,使用 gparted 我将 /dev/xvda2 指定为“已清除”分区。并运行相同的命令会消除上述错误。
1)注意 womble 的评论
2)DRBD 元数据的选项(所有必须是块设备 AFAIK)
A)内部 - 适用于从未使用过的设备(不是你的情况)
B)“外部” - 单独的分区/驱动器,这也可能是一个 Ramdisk,但您的元数据将在电源循环之间消失
所以你可以
A) 用不同的分区重建系统,并在数据分区上从头开始使用 drbd
B) 使用在重启之间消失的 Ramdisk
C) 为元数据添加驱动器(USB、eSATA、内部等)。
祝你好运 - DRBD 是一件好事。
我不抓住你想要做的事情。cltest1 和 cltest2 永远不会同时运行?
为什么要镜像这两个系统之间的根文件系统?
您是否在同一硬件上运行 cltest1 和 cltest2?
对于 drbd-meta-device:把它放在它自己的 LV 上。在那个 LV 上使用索引。例如
元磁盘 /dev/VG/drbd_meta [1]; 下一个 drbd 可以在同一 LV 上使用索引 2。这样你就可以为许多 DRBD 设备使用 1 GB 的 LV。