Linux:从包含数据的分区创建软件 RAID 1

Linux:从包含数据的分区创建软件 RAID 1

我有一个分区 /dev/sdb2,格式为 fd,挂载为 /var。我需要让这个分区准备好用于 raid 1(本例中为 /dev/md1)。我还没有第二个硬盘,但想以某种方式做好准备,这样当硬盘到达时,只需插入并添加到 raid 阵列即可。

由于这个分区是我的 /var,我使用实时 cd 重新启动系统并尝试使用以下命令进行创建:

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

它抱怨这是数组的一部分,但我接受并创建了 md1。我使用它们:

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

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

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

文件系统大小(根据超级块为 52428127 个块
该设备的物理大小为 52428096 块
超级块或分区表可能已损坏!
中止?

知道是什么原因造成的吗?

此后,恢复系统的唯一方法是再次重新启动到 Live CD,然后在分区上运行此命令:

mdadm --zero-超级块 /dev/sdc2

谢谢。

答案1

MD 需要存储有关 RAID 状态的元数据,以保持信息的一致性。对于默认超级块版本 (0.90) 和版本 1.0,此数据存储在设备末端。这会减少文件系统可以使用的空间量。要解决此问题,首先将文件系统缩小到远低于总大小的某个大小(为了安全起见,我会减去 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

计算尺寸时,请确保始终使用以 2 为基数或以 10 为基数的尺寸。

相关内容