如何在 Debian 10 上使用 LUKS 和 ext4 文件系统扩展 madam RAID1

如何在 Debian 10 上使用 LUKS 和 ext4 文件系统扩展 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. 使用 sdb4 而不是 sda4 重复步骤 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 设备大小后显示新的、更大的大小。理想情况下,它应该可以正常工作,但有时,内核拒绝重新读取分区表。在这种情况下,您可能最终必须重新启动。


(※) 尽管在不同的环境下这可能是有意义的——在执行危险的更改时保留一面未触及的镜子。但从你的描述看来,这并不是你的本意。在完成其他所有操作并验证其正常工作之前,您根本不会重新添加驱动器。

相关内容