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/sddRAID를 확장하는 데 사용하므로 /dev/sdd현재 콘텐츠로 덮어쓰게 되므로 무엇이든 잃게 됩니다 /dev/md0.

데이터가 손실된 경우 --grow이를 사용할 필요가 없으며 --create먼저 새 데이터가 필요합니다.

관련 정보