我有一台带有两个 WD 1TB 驱动器的计算机,我想在其上配置磁盘镜像。
我尝试在安装过程中通过创建 RAID 分区来设置 RAID,但这对我不起作用。
我可以安装一个方便的软件来完成这项工作吗?如果不是,可以使用哪些 shell 命令?
设置完成后,我应该如何验证它是否正常工作?
答案1
你可以这么做。您需要小心一点,但如果您非常小心,不要输错任何内容,并且不会在设置中留下任何陷阱,那么这并不危险。
我强烈建议不要在实时系统上进行任何操作。在某些情况下这是可能的,但需要额外小心。从 liveCD/liveUSB 启动,例如分手了或者系统救援光盘。
假设:您有一个块设备,其中包含 Linux 可以识别的内容,例如:
- 包含一个或多个分区的磁盘;
- 包含文件系统的分区;
- 包含 LVM 物理卷的分区。
目标:使该块设备成为 mdraid(Linux 软件 RAID)RAID-1(镜像)卷的组件。 RAID 卷最初将处于降级状态,除了一个组件外,所有组件均丢失。
首先,您需要稍微缩小体积,为 mdraid 元数据(超级块)腾出空间。有几种元数据格式,您必须使用将元数据放在磁盘末尾的元数据。 (在某些设置中,您可能有足够的空间将超级块放在开头,但这更复杂且更容易出现风险,所以我会对此进行讨论。)
您必须确保块设备的最后 128kB 未被使用,以便为超级块腾出空间。
- 如果块设备是包含分区的磁盘,则缩小最后的分区(这可能不是编号最大的分区)。您还需要缩小分区包含的所有内容。
- 如果块设备包含文件系统,则缩小该文件系统。
- 如果块设备包含LVM物理卷,则调用
pvreduce
减小物理卷的大小。这可能会也可能不会减少可用大小,因为物理卷的粒度为 4MB(更准确地说,一个范围:4MB 是很少更改的默认范围大小)。
分手了可以处理文件系统和分区。如果需要缩小 ext4 文件系统,则需要先卸载它; btrfs 文件系统可以实时收缩。如果您修改了正在使用某些分区的磁盘上的分区表,请重新启动。
确保块设备的最后 128kB 空闲后,调用mdadm --create
创建 RAID-1 卷。除了超级块之外,这不会触及卷的任何部分。最初,该卷将只有一个组件:所有其他组件都设置为失败。您必须通过--level=1
(或等效的-n 1
)(此方法仅适用于 RAID-1)和--metadata=0.9
或--metadata=1.0
(默认超级块格式 1.2 将超级块放在设备的开头附近,这可能会覆盖数据)。--raid-devices
( )的参数-n
是 RAID 卷中的组件数量(包括缺失的组件)。替换/dev/sdz99
为块设备的名称(例如,/dev/sda
对于整个磁盘或/dev/sda1
分区)。
mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/sdz99 missing
您现在可以激活阵列并添加其他组件。
mdadm --add /dev/md0 /dev/sdy98
Grub2 理解 Linux RAID-1 并且可以从中引导。诸如 Grub1 等不支持 RAID 的引导加载程序会从镜像卷透明地读取数据,但如果引导加载程序读取的驱动器出现故障,您的系统将无法启动。如果 RAID 卷位于分区上,请务必在两个驱动器上安装 Grub 的引导扇区。
一定要有备份。 “不危险”意味着“你可能不需要它们”,而不是“拿你的数据做赌注”。