是否可以将Raid1过程中的数据保留到Raid5?

是否可以将Raid1过程中的数据保留到Raid5?

我有突袭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首先需要一个新数据。

相关内容