예시 RAID 10 어레이 생성

예시 RAID 10 어레이 생성

현재 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(동일 )을 사용하면 --detailRAID 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가지 경우가 있습니다:

  1. 새 드라이브를 추가하는 경우 가장 쉽고 안전한 방법은 새 드라이브에 새 어레이를 생성하고 새 어레이에 물리 볼륨을 생성하는 것입니다. 여기서는 성능 손실이 없습니다. 보너스로 데이터를 한 어레이 또는 다른 어레이에 배치하기 위해 새 볼륨 그룹을 생성할 수 있습니다.
  2. 기존 드라이브를 더 큰 드라이브로 교체합니다. 디스크에 파티션을 2개 생성할 때마다 하나씩 교체합니다. 첫 번째 부분(예: sdX1을 기존 어레이에 추가(자동으로 복구해야 함))한 다음 모든 두 번째 부분(sdX2)에서 새 어레이를 생성할 수 있습니다. 사용량에 따라 일부 작업에서 성능 저하가 발생할 수 있습니다( 기본적으로 두 어레이 간에 데이터를 복사하는 경우).

두 경우 모두 데이터가 손실되지 않으며 하드웨어에서 핫플러그를 허용하는 경우 가동 중지 시간이 발생하지 않습니다.

그런데 mdadm이 배열의 동적 크기 조정을 허용하더라도 프로덕션 데이터를 사용하지 않을 것입니다.

답변3

이것이 Linux에 있다고 가정하면 mdadm할 수 없습니다.

mdadmRAID10 확장을 지원하지 않습니다.

관련 정보