擴展 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

相關內容