我正在尝试在 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 及其上的文件系统。
这就是我打算这样做的方式,但我不确定这是否正确:
- 卸载/数据(卸载/数据)
- 关闭 LUKS 卷(cryptsetup luksClose md2_crypt)
- 失败并删除 sda4 (mdadm -f /dev/md2 /dev/sda4 && mdadm -r /dev/md2 /dev/sda4)
- 删除分区 /dev/sda4 并创建一个新分区,占用整个可用磁盘空间。 (cgdisk /dev/sda4)也许我可以在不删除的情况下增长现有的?
- 添加回调整大小的 sda4 (mdadm --add /dev/md2 /dev/sda4)
- 等待同步(mdadm --wait /dev/md2)
- 使用 sdb4 而不是 sda4 重复步骤 4..6。
- 从 raid 阵列中删除写入意图位图 (mdadm --grow /dev/md2 -b none)
- 扩展 raid 阵列 (mdadm --grow /dev/md2 --size max)
- 等待同步(mdadm --wait /dev/md2)
- 添加回位图(mdadm --grow /dev/md2 --bitmap 内部)
- 调整 LUKS 卷大小以占用所有可用空间(cryptsetup luksOpen md2_crypt && cryptsetup resize md2_crypt)
- fsck 文件系统 (e2fsck -f /dev/mapper/md2_crypt)
- 增长 ext4 文件系统 (resize2fs /dev/mapper/md2_crypt)
- 再次挂载文件系统(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 设备大小后显示新的、更大的大小。理想情况下,它应该可以正常工作,但有时,内核拒绝重新读取分区表。在这种情况下,您可能最终必须重新启动。
(※) 尽管在不同的环境下这可能是有意义的——在执行危险的更改时保留一面未触及的镜子。但从你的描述看来,这并不是你的本意。在完成其他所有操作并验证其正常工作之前,您根本不会重新添加驱动器。