扩展 LUKS 加密分区以填充磁盘

扩展 LUKS 加密分区以填充磁盘

我最近将磁盘从 128GB SSD 升级到 512GB SSD。 / 分区使用 LUKS 加密。我正在寻求扩展分区以使用新磁盘上的所有可用空间的帮助。我已经将旧驱动器添加到新驱动器上:

[root@localhost ~]# fdisk -l /dev/sda
Disk /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 sectors
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: dos
Disk identifier: 0x00009f33

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048   1026047   1024000   500M 83 Linux
/dev/sda2       1026048 250064895 249038848 118.8G 83 Linux

sda2之后大约有380GB的未使用空间。

更多相关信息:

[root@localhost ~]# vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  fedora_chocbar   1   3   0 wz--n- 118.75g 4.00m

[root@localhost ~]# lvs
  LV   VG             Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home fedora_chocbar -wi-a----- 85.55g                                                    
  root fedora_chocbar -wi-a----- 29.30g                                                    
  swap fedora_chocbar -wi-a-----  3.89g

[root@localhost ~]# pvs
  PV                    VG             Fmt  Attr PSize   PFree
  /dev/mapper/encrypted fedora_chocbar lvm2 a--  118.75g 4.00m

似乎有很多关于如何执行此操作的信息,但解释很少。我很感谢对此的任何帮助。

答案1

好的!终于有了确定的答案。我扩展 LUKS 加密卷的步骤...

  1. cryptsetup luksOpen /dev/sda2 crypt-volume打开加密卷。
  2. parted /dev/sda来扩展分区。 resizepart NUMBER END
  3. vgchange -a n fedora_chocbar。停止使用 VG,以便您可以执行下一步。
  4. cryptsetup luksClose crypt-volume。关闭加密卷以进行后续步骤。
  5. cryptsetup luksOpen /dev/sda2 crypt-volume。再次打开它。
  6. cryptsetup resize crypt-volume。将自动将 LUKS 卷的大小调整为可用空间。
  7. vgchange -a y fedora_chocbar。激活 VG。
  8. pvresize /dev/mapper/crypt-volume。调整 PV 的大小。
  9. lvresize -l+100%FREE /dev/fedora_chocbar/home。将 /home 的 LV 大小调整为可用空间的 100%。
  10. e2fsck -f /dev/mapper/fedora_chocbar-home。对调整大小的 fs 施加一些 fsck 魔法。
  11. resize2fs /dev/mapper/fedora_chocbar-home。调整 /home 中文件系统的大小(自动使用 100% 可用空间)

我希望其他人发现这很有用。我的笔记本电脑上现在有 300+GB 的空间用于测试虚拟机!

答案2

对于那些想知道如何简单地将 LUKS 分区大小调整为调整后的容器大小的人,命令如下:

  • 带有 LUKS 加密卷打开并将打开的卷映射为opened-volume,执行

    sudo cryptsetup resize /dev/mapper/opened-volume
    

    在线调整 LUKS 加密卷的大小...

  • 然后调整内容的大小。

    • 例如,如果它是一个Ext4 文件系统,即使它安装了,您也可以调整它的大小

      sudo resize2fs /dev/mapper/opened-volume
      
    • 或者如果你有一个左心室容量物理体积 里面LUKS 加密卷,只需使用pvresize

      sudo pvresize /dev/mapper/opened-volume
      

我已经使用已安装的文件系统/激活的 PV 完成了此操作,没有中断;无需先卸载即可调整容器大小,因为加密卷位于 LVM 逻辑卷上(使用lvresize)/使用parted调整 GPT 分区大小以包含紧随其后的可用空间!

答案3

我找到了一个更简单的解决方案。实时运行 Xubuntu,安装并启动分区管理器。它可以很好地处理加密分区。

完整的详细信息在这里:http://e1z.ca/devlog/encrypted_pa​​rtition_resize.html

答案4

使用parted从命令行调整大小无LVM(在 ms-dos 分区表上以增加乐趣)。

我将我的 VPS 从 50G 扩展到 150G。

Crypttab 内容如下:

# cat /etc/crypttab 
vda5_crypt UUID=c5e67d21-6af4-4d55-a4bc-2978e50c00c3 none luks
vda6_crypt /dev/vda6 /dev/urandom cipher=aes-xts-plain64,size=256,swap

尺寸:

# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/vda5_crypt   47G   12G   35G  26% /
/dev/vda1               641M   63M  532M  11% /boot

分区布局为:

# parted /dev/vda print                                                        
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 161GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  700MB   699MB   primary   ext4         boot
 2      701MB   53.7GB  53.0GB  extended
 5      701MB   51.7GB  51.0GB  logical
 6      51.7GB  53.7GB  1985MB  logical

正如你所看到的,我的交换分区(分区 6)挡住了;我需要将其删除以扩展分区。首先关闭交换:

swapoff -a && free -lm

“交换:”行应读取全零。

现在,棘手的一点是在重新启动和扩展之前调整分区大小并恢复它们(parted 会抱怨它无法通知内核,我(我)多次忽略了这一点)。

首先删除交换分区:

parted /dev/vda
(parted) rm 6
Error: Partition(s) 6 on /dev/vda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Ignore/Cancel? i 

将逻辑分区 (2) 扩展以容纳扩展分区,直至磁盘末尾 (-1):

(parted) resizepart 2 -1

调整逻辑分区 5 的大小,为交换分区保留空间(parted 会再次抱怨,继续并(i)忽略:

(parted) resizepart 5 -4G

重新创建交换分区 - 正如您从 crypttab 中看到的那样,它在每次启动时都是随机的,因此我们不必担心 UUID - 不适合挂起 - 但对于服务器和无挂起来说,这是首选方式。从上一个分区末尾(157G)到磁盘末尾(-1)创建:

(parted) mkpart                                                           
Partition type?  primary/logical? l                                       
File system type?  [ext2]? linux-swap                                     
Start? 157GB                                                              
End? -1    

检查结果:

(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 161GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End    Size    Type      File system     Flags
 1      1049kB  700MB  699MB   primary   ext4            boot
 2      701MB   161GB  160GB   extended
 5      701MB   157GB  156GB   logical
 6      157GB   161GB  3998MB  logical   linux-swap(v1)  lba
(parted) quit

现在重启您应该正常启动系统,解锁分区。

重新启动后,检查您的交换空间:

# swapon
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition 3.7G   0B   -1

是时候扩展了!使用 'cryptsetup resize /dev/mapper/opened-volume' 和 'resize2fs /dev/mapper/opened-volume'

cryptsetup resize /dev/mapper/vda5_crypt
resize2fs /dev/mapper/vda5_crypt

结果我的加密卷大小调整为 132G:

# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/vda5_crypt  144G   12G  132G   9% /
/dev/vda1               641M   63M  532M  11% /boot

相关内容