확장된 소프트웨어 RAID1 구성

확장된 소프트웨어 RAID1 구성

2개의 동일한 HDD(둘 다 4TB)가 있는 시스템이 있으며 서로 "결합"되어 있습니다.습격 1:

$ sudo mdadm --query --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sun Oct  8 22:22:53 2017
        Raid Level : raid1
        Array Size : 3906887488 (3725.90 GiB 4000.65 GB)
     Used Dev Size : 3906887488 (3725.90 GiB 4000.65 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Fri Aug  4 19:48:49 2023
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : -------:0  (local to host -------)
              UUID : -------
            Events : 13519

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       8       16        1      active sync   /dev/sdb

그 위에 볼륨 그룹도 있으며 @roaima의 답변을 기반으로 이제 구성을 식별할 수 있습니다.

sda                           8:0    0   3.7T  0 disk
└─md0                         9:0    0   3.7T  0 raid1
  └─md0p1                   259:1    0   3.7T  0 part
    └─lukslvm-XXXXXXXXX     253:3    0   3.7T  0 crypt
      ├─vg--XXXXXXXXX-AAAA  253:4    0   500G  0 lvm   /media/AAAA
      └─vg--XXXXXXXXX-BBBB  253:5    0   3.2T  0 lvm   /media/BBBB
sdb                           8:16   0   3.7T  0 disk
└─md0                         9:0    0   3.7T  0 raid1
  └─md0p1                   259:1    0   3.7T  0 part
    └─lukslvm-XXXXXXXXX     253:3    0   3.7T  0 crypt
      ├─vg--XXXXXXXXX-AAAA  253:4    0   500G  0 lvm   /media/AAAA
      └─vg--XXXXXXXXX-BBBB  253:5    0   3.2T  0 lvm   /media/BBBB

이 구성을 가정하면 이러한 디스크를 더 큰 디스크(예: 8TB)로 교체하려면 어떻게 해야 합니까?아무것도 잃지 마세요(참고: 마더보드에는 더 이상 물리적 커넥터가 없습니다)?

4TB 하나를 8TB로 교체한 다음 두 하드 드라이브의 raid1 상태가 변경될 때까지 기다린 다음 active sync다른 4TB를 8TB로 교체하고 다시 기다리십시오 active sync. 그런 다음 분명히 VG를 확장하고 FS를 확장하시겠습니까?

답변1

파일 시스템의 맨 위에서 시작하여 논리적으로 아래로 작업하는 것이 더 쉽습니다. (그러나 이는 실제로 패스의 출력이 위쪽으로 작동한다는 것을 의미합니다 lsblk.)

lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
mmcblk0                 179:0    0 29.7G  0 disk
├─mmcblk0p1             179:1    0   63M  0 part  /boot
├─mmcblk0p2             179:2    0    8G  0 part  /
└─mmcblk0p3             179:3    0 21.7G  0 part
  ├─pi_p3-raid1a        254:2    0    1G  0 lvm
  │ └─md1                 9:1    0 1022M  0 raid1
  │   └─crypt_md1       254:4    0 1006M  0 crypt
  │     └─vgtest-lvtest 254:5    0  100M  0 lvm   /mnt/dsk
  └─pi_p3-raid1b        254:3    0    1G  0 lvm
    └─md1                 9:1    0 1022M  0 raid1
      └─crypt_md1       254:4    0 1006M  0 crypt
        └─vgtest-lvtest 254:5    0  100M  0 lvm   /mnt/dsk

귀하의 경우 루트 파일 시스템에서 시작하고 싶을 수도 있습니다. 내 경우에는 SD 카드 파티션이었는데 mmcblkp02, 그림에는 별로 도움이 되지 않았기 때문에 여기에 마운트된 ext4 파일 시스템으로 시작하는 레이어를 만들었습니다 /mnt/dsk. 이것을 따라해보자.

  1. /mnt/dskext4다음으로 표시된 파일 시스템 입니다 .ext4test

    findmnt /mnt/dsk
    
    TARGET   SOURCE                    FSTYPE OPTIONS
    /mnt/dsk /dev/mapper/vgtest-lvtest ext4   rw,relatime,data=ordered
    
  2. 트리 위로 이동하면 장치에서 생성된 LVM 구성 요소임을 알 수 있습니다 crypt_md1. 실제로 파일 시스템 LV 및 VG의 이름 인 lvsLV 및 VG 이름을 사용하고 확인할 수 있습니다 .pvslvtestvgtest

    lvs
    
      LV      VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lvtest  vgtest -wi-ao---- 100.00m
    
    pvs
    
      PV                    VG     Fmt  Attr PSize    PFree
      /dev/mapper/crypt_md1 vgtest lvm2 a--  1004.00m 904.00m
    
  3. crypt_md1트리를 한 단계 위로 이동하면 이것이 빌드된 crypto_LUKS것임을 알 수 있습니다.md1

  4. 한 단계 위로 올라가면 이것이 md1이라는 것을 확인할 수 있습니다 linux_raid_member.cat /proc/mdstat

    cat /proc/mdstat
    
    Personalities : [raid6] [raid5] [raid4] [raid1]
    md1 : active raid1 dm-3[1] dm-2[0]
          1046528 blocks super 1.2 [2/2] [UU]
    
    unused devices: <none>
    
  5. 혼란스러울 수도 있지만 이제 연기와 미러를 볼 수 있습니다. 저는 md1다른 기존 LVM VG에서 두 개의 RAID 미러 절반을 만들었습니다 pi_p3. 이는 사실입니다. 이 예에서는 RAID1 미러를 구축 하는 데 사용한 두 개의 구성 요소 raid1a를 만들었습니다 . 즉, "물리적 → VG → 2x LV → 2x RAID → MD(RAID1) → LUKS → VG → LV → EXT4"가 됩니다! 다음은 제가 빌드하는 데 사용한 전체 명령 세트입니다. 이미 LVM VG가 있다는 점을 명심하세요 .raid1bmdadm --create/dev/pi_p3

    lvcreate --size 1G --name raid1a /dev/pi_p3
    lvcreate --size 1G --name raid1b /dev/pi_p3
    mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/pi_p3/raid1{a,b}
    
    cryptsetup -c aes-xts-plain -s 512 -y luksFormat /dev/md1    # "test"
    cryptsetup luksOpen /dev/md1 crypt_md1
    
    pvcreate /dev/mapper/crypt_md1
    vgcreate vgtest /dev/mapper/crypt_md1
    lvcreate --size 100M --name lvtest vgtest
    
    mkfs -L ext4test -t ext4 /dev/vgtest/lvtest
    mount /dev/vgtest/lvtest /mnt/dsk
    

귀하의 경우 LVM 구성 요소 대신 두 개의 물리적 장치가 표시되므로 raid1a여기서 raid1b분석을 중단하겠습니다.

구조가 예상한 것과 다른 경우, 즉 "RAID -> LUKS -> LVM -> FS 구성"그렇다면 이제 이 방법을 사용하여 실제 구조를 식별할 수 있을 것입니다.


이제 질문의 두 번째 부분인 더 큰 디스크로 구조를 확장하는 방법에 대해 설명합니다. 1GB raid1a및 LV를 2GB로 대체하여 raid1b이 예제를 구현 하겠습니다 raid1c.raid1d

# Synthesise two "larger disks" from the VG
lvcreate --size 2G --name raid1c /dev/pi_p3
lvcreate --size 2G --name raid1d /dev/pi_p3

# Swap out the first disk
mdadm --manage /dev/md1 --add /dev/pi_p3/raid1c
mdadm --manage /dev/md1 --set-faulty /dev/pi_p3/raid1a
mdadm --manage /dev/md1 --remove /dev/pi_p3/raid1a

# Wait for synchronisation to complete!
cat /proc/mdstat

동기화가 완료될 때까지 기다리세요. 당신이 당신을 기다리지 않으면~ 할 것이다다음 단계에서는 전체 파일 시스템과 해당 데이터가 손실됩니다.

# Swap out the second disk
mdadm --manage /dev/md1 --add /dev/pi_p3/raid1d
mdadm --manage /dev/md1 --set-faulty /dev/pi_p3/raid1b
mdadm --manage /dev/md1 --remove /dev/pi_p3/raid1b

# Grow the new RAID1 array
mdadm --grow /dev/md1 --size max

# Resize the encrypted layer
cryptsetup resize /dev/mapper/crypt_md1

# Resize the PV for the LVM VG
pvresize /dev/mapper/crypt_md1

이 시점에서 PV 크기가 성공적으로 조정되었다는 확인 메시지가 표시됩니다.

  Physical volume "/dev/mapper/crypt_md1" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

이제 새 크기 는 2GB(새 "디스크"의 크기)로 표시됩니다 pvs /dev/mapper/crypt_md1.vgs vgtest

  PV                    VG     Fmt  Attr PSize PFree
  /dev/mapper/crypt_md1 vgtest lvm2 a--  1.98g 1.88g

  VG     #PV #LV #SN Attr   VSize VFree
  vgtest   1   1   0 wz--n- 1.98g 1.88g

마지막으로 시스템 전원을 끄거나 재부팅하기 전에 두 번째 RAID1 동기화가 완료될 때까지 기다려야 합니다.

cat /proc/mdstat

관련 정보