Linux RAID1 只有一个磁盘

and*_*ieb 5 linux raid software-raid

我有一个假设的情况,我使用 RAID1 镜像安装了我的操作系统。在某些时候,我认为这个设置有点矫枉过正,我的机器不是系统关键,我更重视将存储空间加倍而不是快速恢复,我正在做例行备份等......

除了备份我的系统卷和重新分区或以其他方式重新开始之外,有没有一种方法可以重新配置我的 RAID1 阵列以仅期望一个磁盘,以便 mdadm 不再报告降级状态?

Gil*_*il' 6

您可以将 RAID-1 阵列中的磁盘数量设置为您想要的任何数量(好吧,任何正整数),包括 1。只需删除除要保留的一个组件之外的所有组件mdadm --remove,然后将组件数量设置为 1:

mdadm /dev/md999 --grow --force -n 1
Run Code Online (Sandbox Code Playgroud)

顺便说一句,相反,如果您认为您可能想要制作磁盘或分区的镜像,最好从一开始就将其设置为单组件 RAID-1 阵列。(您可以稍后通过将文件系统缩小 128kB 并创建一个超级块来完成此操作,但首先创建数组然后在其上放置文件系统要容易得多。)


可以将单个剩余组件转换为独立卷:使用 停止阵列mdadm --stop,然后mdadm --zero-superblock在组件卷上使用。由于 md 超级块位于组件卷的末尾,因此 RAID-1 卷上的任何文件系统也可以在每个组件卷上直接访问。如果这样做,您甚至可以将文件系统扩大 64kB 到 128kB(取决于对齐方式)。总而言之,这是可能的,但几乎不值得麻烦。我建议将镜像保留为单个组件——谁知道呢,也许有一天你会想要再次复制它(如果不出意外,RAID-1 重建是一种将磁盘内容复制到另一个磁盘的非常快速的方法,并且它不介意当时安装了磁盘)。

请注意,对于 mdadm 1,超级块的默认位置在设备的开头,因此文件系统不会在与 RAID 设备相同的位置开始。选择版本 1.0 超级块而不是默认的 1.2(或 0.9 以实现向后兼容性)将超级块放在设备的末尾。如果您有 1.1 或 1.2 超级块,则无法轻松将卷转换为非 mdraid 卷。

  • 我发现这个答案在我从一个 RAID1 分区开始然后添加另一个分区的情况下很有用。这是创建单组件 RAID1 的方式:`mdadm --create /dev/md0 --level=1 --force --raid-devices=1 --metadata 1.2 /dev/sdd1` (5认同)