Linux:使用数据从分区创build软件RAID 1

我有一个分区/ dev / sdb2格式化为fd,并挂载为/ var。 我需要使这个分区准备好袭击1(对于这个例子/ dev / md1)。 我仍然没有第二个HD,但是想要以HD的方式准备它,这只是一个插入和增加RAIDarrays的问题。

由于这个分区是我的/ var,我重新启动系统与一个活CD,并尝试使用以下命令创build:

  mdadm --create / dev / md1 --level = 1 --raid-disks = 2 / dev / sdc2缺失 

它抱怨这是一个数组的一部分,但我接受和md1创build。 我使用:

  mdadm --examine --scan >> /mnt/sdc1/etc/mdadm.conf 

将mdadm信息复制到/ hd。 另外,我改变fstab,使用/ dev / md1。

问题是,当我重新启动,由于物理和文件系统大小的差异,我得到一个错误。 完整的错误是:

 文件系统大小(根据超级块是52428127块
该设备的物理尺寸是52428096块
超级块或分区表可能会损坏!
中止(Y)? 

任何想法是什么导致这个?

之后,获取系统的唯一方法是再次重新启动cd,并在分区上运行:

  mdadm --zero-superblock / dev / sdc2 

谢谢。

MD需要存储有关RAID状态的元数据,以保持信息的一致性。 使用默认的超级块版本(0.90)和版本1.0,该数据存储在设备的末尾。 这减less了文件系统可以使用的空间量。 要解决这个问题,首先将文件系统缩小到总大小以下(我会减去100 MB左右以保证安全),然后像上面那样添加元数据,然后再次调整为实际的新大小。 例如,如果你有一个5 GB的ext3文件系统,那么

resize2fs /dev/sdc2 4900M mdadm --create, --examine as above resize2fs /dev/md1 # This resizes the filesystem to the actual size of the device 

在计算大小时,请确保您始终使用base-2或base-10大小。