我有突袭1
/dev/sda
/dev/sdb
作为md0
然后现在我想扩展Raid5
所以,我的想法是
sudo mdadm --add /dev/md0 /dev/sdd
sudo mdadm --grow /dev/md0 --level=raid5 --raid-devices=3
在这些过程中。
硬盘里的内容会不会被删除??
答案1
是的,这是完全可能的,甚至可以在实时系统上完成。
重要的提示:您的数据在转换过程中不会因磁盘故障而幸存,因此请确保您有备份。
这是使用一些文件的演示。
# Two "disks", probably called /dev/loop0 ($a) and /dev/loop1 ($b)
dd bs=1M count=100 </dev/zero >/tmp/img.a
a=$(losetup --show --find /tmp/img.a)
dd bs=1M count=100 </dev/zero >/tmp/img.b
b=$(losetup --show --find /tmp/img.b)
# Create RAID 1
mdadm --create /dev/md0 --metadata=1.2 --level=raid1 --raid-devices=2 $a $b
# See what is going on
cat /proc/mdstat
# Add a filesystem and mount it
mkfs -t ext4 -L md /dev/md0
mkdir -p /mnt/dsk
mount /dev/md0 /mnt/dsk
现在我们将增加磁盘阵列
# Another disk, probably /dev/loop2 ($d)
dd bs=1M count=100 </dev/zero >/tmp/img.d
d=$(losetup --show --find /tmp/img.d)
# Add it as a spare
mdadm --add /dev/md0 $d
# Convert from RAID 1 to RAID 5
mdadm --grow /dev/md0 --level=raid5 --raid-devices=3
# See what is going on
cat /proc/mdstat
当您自己确认该过程确实安全时,您可以使用真实的磁盘重复该过程。你有备份吗?
a=/dev/sda b=/dev/sdb` d=/dev/sdd
答案2
将 RAID1 增长到 RAID5 效果很好,(但您仍然应该有备份以防万一。)
sudo mdadm --add /dev/md0 /dev/sdd
此命令将作为备用驱动器添加/dev/sdd
到您的RAID1。/dev/md0
除了mdadm
元数据之外,不会向其中写入任何内容(除非其他驱动器之一发生故障,因此备用驱动器将用于恢复冗余)。
sudo mdadm --grow /dev/md0 --level=raid5 --raid-devices=3
此命令会将 2 磁盘 RAID1 扩展为 3 磁盘 RAID5。此过程会重塑/重新定位所有数据(从以前的 2 驱动器镜像到 3 驱动器 RAID5 布局)。在此过程中,之前的内容/dev/sdd
将被 的内容覆盖/dev/md0
。设备上的数据/dev/md0
根本不会改变,除非增长完成后容量会增加。您必须扩展文件系统才能利用增加的容量。
您可以将这两个命令合并为一个:
mdadm --grow /dev/md0 --level=5 --raid-devices=3 --add /dev/sdd
一般来说,--grow
应该是安全的并保留数据。mdadm
当尝试执行危险操作(例如收缩)或需要其他步骤(例如提供备份文件)时,应该警告您。
当您--create
(例如mkfs
)、驱动器太多--fail
或以其他方式弄乱成员驱动器时,您会丢失数据。
您还会丢失任何内容,/dev/sdd
因为您正在使用它来扩展 RAID,因此/dev/sdd
会被当前的内容覆盖/dev/md0
。
如果--grow
丢失了数据,那么使用它就没有任何意义,您--create
首先需要一个新数据。