Linux

調整 LUKS 加密卷的大小

  • June 2, 2012

我在 LVM LV 之上的 LUKS 之上有一個 500GiB ext4 文件系統。我想將 LV 調整為 100GiB。我知道如何在 LVM LV 之上調整 ext4 的大小,但是如何處理 LUKS 卷?

mgorven@moab:~% sudo lvdisplay /dev/moab/backup
 --- Logical volume --- 
 LV Name                /dev/moab/backup
 VG Name                moab
 LV UUID                nQ3z1J-Pemd-uTEB-fazN-yEux-nOxP-QQair5                                                                      
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                500.00 GiB                                                                                                           
 Current LE             128000
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     2048 
 Block device           252:3
mgorven@moab:~% sudo cryptsetup status backup
/dev/mapper/backup is active and is in use.
 type:    LUKS1
 cipher:  aes-cbc-essiv:sha256
 keysize: 256 bits
 device:  /dev/mapper/moab-backup
 offset:  3072 sectors
 size:    1048572928 sectors
 mode:    read/write
mgorven@moab:~% sudo tune2fs -l /dev/mapper/backup
tune2fs 1.42 (29-Nov-2011)
Filesystem volume name:   backup
Last mounted on:          /srv/backup
Filesystem UUID:          63877e0e-0549-4c73-8535-b7a81eb363ed
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean with errors
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              32768000
Block count:              131071616
Reserved block count:     0
Free blocks:              112894078
Free inodes:              32044830
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      992
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
RAID stride:              128
RAID stripe width:        128
Flex block group size:    16
Filesystem created:       Sun Mar 11 19:24:53 2012
Last mount time:          Sat May 19 13:29:27 2012
Last write time:          Fri Jun  1 11:07:22 2012
Mount count:              0
Maximum mount count:      100
Last checked:             Fri Jun  1 11:03:50 2012
Check interval:           31104000 (12 months)
Next check after:         Mon May 27 11:03:50 2013
Lifetime writes:          118 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      383bcbc5-fde9-4720-b98e-2d6224713ecf
Journal backup:           inode blocks

LUKS 實際上並不儲存設備的大小——它只是在打開卷時發現它。因此,只有在該過程中未關閉並重新打開卷(例如進行線上增長)時,它才會發揮作用。在這種情況下,需要重新發現打開卷的大小。

要縮小音量,請使用以下過程:

  1. 解除安裝文件系統umount
  2. 調整文件系統的大小resize2fs
  3. 關閉 LUKS 卷cryptsetup luksClose
  4. lvreduce使用或調整 LV 大小lvresize
  5. 打開 LUKS 卷cryptsetup luksOpen
  6. 掛載文件系統mount

您也可以省略luksCloseluksOpen步驟,並cryptsetup resize在調整 LV 大小後使用。還要記住,LUKS 使用一些額外的空間來儲存元數據,因此 LV 需要比文件系統稍大。我通常將文件系統的大小調整得更小,然後在調整 LV 大小後再次增大它。

如果您正在擴展文件系統並希望線上進行,您將使用以下過程:

  1. lvextend使用或調整 LV 大小lvresize
  2. 更新打開的 LUKS 卷的大小cryptsetup resize
  3. 擴展文件系統resize2fs

引用自:https://serverfault.com/questions/394902