LUKS 및 ext4 파일 시스템을 사용하여 Debian 10에서 madam RAID1을 확장하는 방법

LUKS 및 ext4 파일 시스템을 사용하여 Debian 10에서 madam RAID1을 확장하는 방법

Debian GNU/Linux 10(buster)의 LUKS 볼륨에서 ext4 파일 시스템을 사용하여 기존 RAID1 어레이를 확장하려고 합니다.

이것은 내 lsblk 디스크 레이아웃입니다.

NAME              MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                 8:0    0   9,1T  0 disk
├─sda1              8:1    0    10M  0 part
├─sda2              8:2    0   477M  0 part
│ └─md0             9:0    0 476,7M  0 raid1 /boot
├─sda3              8:3    0  55,9G  0 part
│ └─md1             9:1    0  55,9G  0 raid1 /
└─sda4              8:4    0   7,2T  0 part
  └─md2             9:2    0   7,2T  0 raid1
    └─md2_crypt   253:0    0   7,2T  0 crypt /data
sdb                 8:16   0   9,1T  0 disk
├─sdb1              8:17   0    10M  0 part
├─sdb2              8:18   0   477M  0 part
│ └─md0             9:0    0 476,7M  0 raid1 /boot
├─sdb3              8:19   0  55,9G  0 part
│ └─md1             9:1    0  55,9G  0 raid1 /
└─sdb4              8:20   0   7,2T  0 part
  └─md2             9:2    0   7,2T  0 raid1
    └─md2_crypt   253:0    0   7,2T  0 crypt /data

/data를 확장하여 남은 여유 공간을 차지하고 싶습니다. 따라서 이는 sda4, sdb4 및 md2를 확장하여 md2_crypt와 그 위에 파일 시스템을 확장하는 것을 의미합니다.

이렇게 하려고 했는데 맞는지 모르겠습니다.

  1. 제거/데이터(제거/데이터)
  2. LUKS 볼륨을 닫습니다(cryptsetup luksClose md2_crypt)
  3. sda4 실패 및 제거(mdadm -f /dev/md2 /dev/sda4 && mdadm -r /dev/md2 /dev/sda4)
  4. /dev/sda4 파티션을 삭제하고 사용 가능한 전체 디스크 공간을 차지하는 새 파티션을 만듭니다. (cgdisk /dev/sda4) 기존 것을 삭제하지 않고 늘릴 수 있을까요?
  5. 크기가 조정된 sda4를 다시 추가합니다(mdadm --add /dev/md2 /dev/sda4)
  6. 동기화 대기(mdadm --wait /dev/md2)
  7. sda4 대신 sdb4를 사용하여 4~6단계를 반복합니다.
  8. RAID 배열에서 쓰기 의도 비트맵을 제거합니다(mdadm --grow /dev/md2 -b none).
  9. RAID 배열 확장(mdadm --grow /dev/md2 --size max)
  10. 동기화 대기(mdadm --wait /dev/md2)
  11. 다시 비트맵 추가(mdadm --grow /dev/md2 --bitmap 내부)
  12. 사용 가능한 모든 공간을 차지하도록 LUKS 볼륨 크기 조정(cryptsetup luksOpen md2_crypt && cryptsetup resize md2_crypt)
  13. fsck 파일 시스템(e2fsck -f /dev/mapper/md2_crypt)
  14. ext4 파일 시스템 확장(resize2fs /dev/mapper/md2_crypt)
  15. 파일 시스템을 다시 마운트합니다(mount /data).

이것이 올바른 접근 방식입니까? 제가 중요한 단계를 놓쳤나요? 순서가 맞나요? 저는 LUKS를 키워본 적이 없기 때문에 특히 LUKS 부분이 걱정됩니다. 또한 의도 비트맵에 쓰는 것이 걱정됩니다. 이것이 제거/추가될 것인지, 언제 필요한 것인지 확실하지 않습니다.

추가 세부 사항:

이것은 내 /proc/mdstat입니다

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda4[3] sdb4[4]
      7754802503 blocks super 1.2 [2/2] [UU]
      [=============>.......]  check = 66.6% (5170546304/7754802503) finish=237.0min speed=181708K/sec
      bitmap: 0/15 pages [0KB], 262144KB chunk

md1 : active raid1 sdb3[4] sda3[3]
      58560512 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sdb2[4] sda2[3]
      488128 blocks super 1.2 [2/2] [UU]

unused devices: <none>

(시작하기 전에 동기화가 완료됩니다)

mdadm --세부사항/dev/md2

/dev/md2:
           Version : 1.2
     Creation Time : Sat Apr  1 20:30:05 2017
        Raid Level : raid1
        Array Size : 7754802503 (7395.56 GiB 7940.92 GB)
     Used Dev Size : 7754802503 (7395.56 GiB 7940.92 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Wed Apr 12 16:57:07 2023
             State : clean, checking
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

      Check Status : 66% complete

            Events : 235789

    Number   Major   Minor   RaidDevice State
       4       8       20        0      active sync   /dev/sdb4
       3       8        4        1      active sync   /dev/sda4
       
   

루크 정보:

LUKS header information for /dev/md2

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha1
Payload offset: 4096
MK bits:        512

fdisk -l /dev/sda

Disk /dev/sda: 9,1 TiB, 10000831348736 bytes, 19532873728 sectors
Disk model: MG06ACA10TE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt

Device         Start         End     Sectors  Size Type
/dev/sda1       2048       22527       20480   10M BIOS boot
/dev/sda2      22528      999423      976896  477M Linux RAID
/dev/sda3     999424   118185983   117186560 55,9G Linux RAID
/dev/sda4  118185984 15628053134 15509867151  7,2T Linux RAID

parted /dev/sda는 무료 출력을 인쇄합니다:

Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use
all of the space (an extra 3904820560 blocks) or continue with the current setting?
Fix/Ignore? ^C
Model: ATA MG06ACA10TE (scsi)
Disk /dev/sda: 10,0TB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
        17,4kB  1049kB  1031kB  Free Space
 1      1049kB  11,5MB  10,5MB                     bios_grub
 2      11,5MB  512MB   500MB                      raid
 3      512MB   60,5GB  60,0GB                     raid
 4      60,5GB  8002GB  7941GB                     raid
        8002GB  10,0TB  1999GB  Free Space

답변1

단계가 너무 많습니다. 꼭 필요한 경우가 아니면 드라이브가 고장나는 것을 원하지 않습니다. (※)

분할되지 않은 여유 공간이 있고 다른 파티션이 없다고 가정하면 모든 것을 순차적으로 추가하면 됩니다. 이와 같은 온라인 크기 조정을 사용하면 아무것도 제거할 필요가 없습니다.

# Partition (repeat it for all disks)
parted /dev/sdx print free
parted /dev/sdx resizepart 4 100%

# RAID
mdadm --grow /dev/md2 --size=max
mdadm --wait /dev/md2

# LUKS
cryptsetup resize md2_crypt

# EXT4
resize2fs /dev/mapper/md2_crypt

lsblk파티션 /md/crypt 장치의 크기를 조정한 후 더 큰 새 크기를 표시하는 등 각 단계가 실제로 작동하는지 확인해야 합니다 . 이상적으로는 잘 작동해야 하지만 때로는 커널이 파티션 테이블을 다시 읽는 것을 거부합니다. 이 경우 재부팅해야 할 수도 있습니다.


(※) 상황에 따라 의미가 있을 수 있지만 위험한 변경을 수행할 때는 미러를 그대로 두는 것이 좋습니다. 하지만 귀하의 설명에 따르면 이는 귀하의 의도가 아닌 것 같습니다. 다른 모든 작업을 완료하고 제대로 작동하는지 확인할 때까지는 드라이브를 다시 추가하지 마세요.

관련 정보