web-dev-qa-db-ja.com

LUKS暗号化ボリュームのサイズ変更

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
14
mgorven

LUKSは実際にはデバイスのサイズを保存しません-ボリュームが開かれたときにそれを検出するだけです。したがって、ボリュームがプロセス中に閉じられておらず、再び開かれていない場合(オンラインでの拡張など)にのみ機能します。この場合、開いているボリュームのサイズを再検出する必要があります。

ボリュームを縮小するには、次のプロセスを使用します。

  1. umountを使用してファイルシステムをマウント解除します
  2. resize2fsを使用してファイルシステムのサイズを変更します
  3. LUKSボリュームをcryptsetup luksCloseで閉じます
  4. lvreduceまたはlvresizeを使用してLVのサイズを変更します
  5. LUKSボリュームをcryptsetup luksOpenで開きます
  6. mountでファイルシステムをマウントします

luksCloseおよびluksOpenステップを省略し、LVのサイズを変更した後はcryptsetup resizeを使用することもできます。また、LUKSはメタデータを格納するために追加のスペースを使用するため、LVはファイルシステムよりも少し大きくする必要があることも覚えておいてください。私は通常、ファイルシステムのサイズを大幅に小さくし、LVのサイズを変更した後で再び大きくします。

ファイルシステムを拡張していてオンラインで実行したい場合は、次のプロセスを使用します。

  1. lvextendまたはlvresizeを使用してLVのサイズを変更します
  2. 開いているLUKSボリュームのサイズをcryptsetup resizeで更新します
  3. resize2fsを使用してファイルシステムを拡張する
21
mgorven