在现有文件系统占用所有位置的磁盘上的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;

   syncer {
    率10M;  #10兆字节
   }

  在cltest1 {
    设备/ dev / drbd0;
    磁盘/ dev / xvda2;
    地址192.168.1.186:7789;
    元磁盘内部;
   }

  在cltest2 {
    设备/ dev / drbd0;
    磁盘/ dev / xvda2;
    地址192.168.1.187:7789;
    元磁盘内部;
   }
 }

我没有在drbd0上创build文件系统

通过init.d脚本启动DRBD出错:

启动DRBD资源:[d(mysql)/ dev / drbd0:失败:(114)较低的设备已被声明。 这通常意味着它被安装。

 [mysql] cmd / sbin / drbdsetup / dev / drbd0磁盘/ dev / xvda2 / dev / xvda2 internal --set-defaults --create-device失败 - 继续!

运行:drbdadm create-md mysql给出:

 cltest1:/ etc#drbdadm create-md mysql
 md_offset 6442446848
 al_offset 6442414080
 bm_offset 6442217472

find使用6291456 kB的ext3文件系统
当前configuration留下可用6291228 kB

设备大小将被截断,哪个
会破坏数据并导致
 “访问超出设备末端”的错误。
你也需要
    *使用外部元数据(推荐)
    *首先缩小文件系统
    *清零设备(销毁文件系统)
操作被拒绝。

命令'drbdmeta / dev / drbd0 v08 / dev / xvda2 internal create-md'以退出代码40结尾
 drbdadm中止

据我所知,我所有的问题是因为我没有xvda2上的未分配的磁盘空间。

除了缩小FS和连接单独的物理磁盘 ,我还有哪些select? 元数据不能存储在本地文件系统的文件中吗?

drbd有时可以在现有的文件系统上运行,即使没有系统在系统上。 你可以用dd if=/dev/zero of=/dev/xvda2 (和几秒钟后的control-C)来清除可以保存文件系统的分区。

你不能以任何文件系统格式安装磁盘; 在Ubuntu中,使用gparted将/ dev / xvda2指定为“Cleared”分区。 并运行相同的命令将删除上述错误。

1)记下womble的评论
2)DRBD元数据选项(全部必须是块设备AFAIK)
A)内部 – 适用于从未使用的设备(不是您的情况)
B)“外部” – 一个单独的分区/驱动器,这也可能是一个Ramdisk,但您的元数据将消失在电源周期

所以你可以
A)用不同的分区重build系统,并在数据分区上从头开始使用drbd
B)使用在重新启动之间消失的Ramdisk
C)为metatdata添加一个驱动器(USB,eSATA,内部等)。

祝你好运 – DRBD是一件好事。

我不'抓住你想做的事情。 cltest1和cltest2永远不会并发运行?

为什么要在这两个系统之间镜像根文件系统?

你在同一个硬件上运行cltest1和cltest2吗?

对于drbd-meta-device:把它放在它自己的LV上。 在LV使用索引。 例如

meta-disk / dev / VG / drbd_meta [1]; 下一个drbd可以在同一个LV上使用索引2。 这样你可以使用一个1GB的LV用于许多DRBD设备。