현재 RAID 10을 구성하는 32G 크기의 디스크 8개가 있습니다. 이제 추가 디스크를 추가하여 이 RAID의 크기를 늘리고 싶습니다. 이는 프로덕션 장치이므로 RAID에 이미 중요한 데이터가 있습니다. 파일 시스템은 XFS입니다. 해당 RAID에서 실행 중인 읽기/쓰기에 영향을 주지 않고 이 RAID의 크기를 늘릴 수 있는 방법이 있습니까? 그렇지 않다면 최소한의 오프라인 시간으로 이를 수행하는 방법은 무엇입니까?
답변1
기존 답변은 상당히 구식입니다. 2020년에는 이제 mdadm
동일한 크기의 디스크를 2개 이상 추가하기만 하면 소프트웨어 RAID 10을 확장할 수 있습니다 .
예시 RAID 10 어레이 생성
테스트 목적으로 물리적 드라이브 대신 6x 10GB LVM 볼륨을 생성했는데 mdadm에서는 /dev/vg0/rtest1
이에 rtest6
대해 아무런 불만도 없었습니다.
# Using the thinpool lvthin on VG vg0 - I created 6x 10G volumes
lvcreate -T vg0/lvthin -V 10G -n rtest1
lvcreate -T vg0/lvthin -V 10G -n rtest2
...
다음으로 처음 4개 rtestX
볼륨을 사용하여 RAID 10 mdadm 어레이를 만들었습니다.
mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/vg0/rtest[1-4]
mdadm -D
(동일 )을 사용하면 --detail
RAID 10에서 예상되는 것처럼 어레이에 4x "드라이브"가 있고 40GB 볼륨 중 20GB 용량이 있음을 알 수 있습니다.
root@host ~ # mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:04:24 2020
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 23
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
동일한 크기의 새로운 볼륨/디스크 2개로 RAID10 확장
어레이를 확장하려면 먼저 --add
어레이에 디스크 쌍을 추가한 다음 --grow --raid-devices=X
(여기서 X는 RAID의 새로운 총 디스크 수)를 사용하여 mdadm이 2개의 예비 디스크를 다음과 같이 사용하도록 RAID10을 재구성하도록 요청해야 합니다. 배열의 일부입니다.
mdadm --add /dev/md0 /dev/vg0/rtest5 /dev/vg0/rtest6
mdadm --grow /dev/md0 --raid-devices=6
재동기화 프로세스 모니터링
지루한 부분은 다음과 같습니다. mdadm이 새 드라이브에 대한 재구성을 마칠 때까지 RAID의 크기에 따라 몇 분, 몇 시간, 며칠 또는 몇 주까지 기다리는 것입니다.
확인하면 mdadm -D
현재 RAID가 재구성되고 있음을 알 수 있습니다.
mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:15:05 2020
State : clean, reshaping
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Reshape Status : 0% complete
Delta Devices : 2, (4->6)
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 31
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
5 253 14 4 active sync set-A /dev/dm-14
4 253 13 5 active sync set-B /dev/dm-13
더 큰 RAID10 어레이를 즐겨보세요!
결국 mdadm
재구성이 완료되면 이제 배열 크기가 ~20G가 아닌 ~30G임을 확인할 수 있습니다. 이는 재구성이 성공적이었고 비교적 고통스럽지 않았음을 의미합니다. :)
mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 31429632 (29.97 GiB 32.18 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:25:01 2020
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 93
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
5 253 14 4 active sync set-A /dev/dm-14
4 253 13 5 active sync set-B /dev/dm-13
답변2
2가지 경우가 있습니다:
- 새 드라이브를 추가하는 경우 가장 쉽고 안전한 방법은 새 드라이브에 새 어레이를 생성하고 새 어레이에 물리 볼륨을 생성하는 것입니다. 여기서는 성능 손실이 없습니다. 보너스로 데이터를 한 어레이 또는 다른 어레이에 배치하기 위해 새 볼륨 그룹을 생성할 수 있습니다.
- 기존 드라이브를 더 큰 드라이브로 교체합니다. 디스크에 파티션을 2개 생성할 때마다 하나씩 교체합니다. 첫 번째 부분(예: sdX1을 기존 어레이에 추가(자동으로 복구해야 함))한 다음 모든 두 번째 부분(sdX2)에서 새 어레이를 생성할 수 있습니다. 사용량에 따라 일부 작업에서 성능 저하가 발생할 수 있습니다( 기본적으로 두 어레이 간에 데이터를 복사하는 경우).
두 경우 모두 데이터가 손실되지 않으며 하드웨어에서 핫플러그를 허용하는 경우 가동 중지 시간이 발생하지 않습니다.
그런데 mdadm이 배열의 동적 크기 조정을 허용하더라도 프로덕션 데이터를 사용하지 않을 것입니다.
답변3
이것이 Linux에 있다고 가정하면 mdadm
할 수 없습니다.
mdadm
RAID10 확장을 지원하지 않습니다.