DRBD 位于具有现有文件系统的磁盘上,占据了所有位置

DRBD 位于具有现有文件系统的磁盘上,占据了所有位置

我目前正在尝试通过 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 设备。

相关内容