我目前正在尝试通过 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: 失败:(114) 下部设备已被认领。这通常意味着它已安装。 [mysql] cmd /sbin/drbdsetup /dev/drbd0 磁盘 /dev/xvda2 /dev/xvda2 内部 --set-defaults --create-device 失败 - 继续!
运行:drbdadm create-md mysql 得到:
cltest1:/etc# drbdadm create-md mysql md_偏移量 6442446848 al_offset 6442414080 bm_偏移量 6442217472 发现 ext3 文件系统占用 6291456 kB 当前配置可用 6291228 kB 设备尺寸将被截断,这 会损坏数据并导致 ‘访问超出设备末端’错误。 您需要 * 使用外部元数据(推荐) * 首先缩小文件系统 * 将设备清零(破坏文件系统) 操作被拒绝。 命令“drbdmeta /dev/drbd0 v08 /dev/xvda2 internal create-md”以退出代码 40 终止 drbdadm 中止
据我了解,我所有的问题都是因为我在 xvda2 上没有未分配的磁盘空间。
我有什么选择除了缩小文件系统并连接单独的物理磁盘?元数据不能存储在本地文件系统的文件中吗?
答案1
drbd 有时甚至可以在系统上没有文件系统的情况下拾取“现有”文件系统。您可以dd if=/dev/zero of=/dev/xvda2
(并在几秒钟后按下 Control-C),它将清除之前可以容纳文件系统的分区。
答案2
您不应该使用任何文件系统格式来挂载磁盘;在 Ubuntu 中,我使用 gparted 将 /dev/xvda2 指定为“已清除”分区。运行相同的命令即可消除上述错误。
答案3
1) 注意 womble 的评论
2) DRBD 元数据的选项(据我所知,所有都必须是块设备)
A)内部 - 适用于从未使用过的设备(不是您的情况)
B)“外部” - 单独的分区/驱动器,这也可能是 Ramdisk,但您的元数据将在电源循环之间消失
因此您可以
A) 使用不同的分区重建系统,并从数据分区开始使用 drbd
B) 使用在重启之间消失的 Ramdisk
C) 为元数据添加驱动器(USB、eSATA、内部等)。
祝你好运 - DRBD 是一件好事。
答案4
我不明白你想做什么。cltest1 和 cltest2 永远不会同时运行?
为什么要在这两个系统之间镜像根文件系统?
您是否在同一硬件上运行 cltest1 和 cltest2?
对于 drbd-meta-device:将其放在自己的 LV 上。在该 LV 上使用索引。例如
元磁盘 /dev/VG/drbd_meta [1];下一个 drbd 可以使用同一 LV 上的索引 2。这样,您可以将 1 GB 的 LV 用于许多 DRBD 设备。