LUKSがパーティションサイズを保存しない場合、「cryptsetup resize」は何をしますか?

LUKSがパーティションサイズを保存しない場合、「cryptsetup resize」は何をしますか?

これLUKS//dm-cryptcryptsetup FAQページ説明する:

2.15 dm-cryptまたはLUKSパーティションのサイズを変更できますか?

はい、可能です。 dm-cryptやLUKSはパーティションサイズを保存しないからです。

私は混乱しています:

  1. サイズ情報が保存されていない場合、「サイズ調整」とは何ですか?

  2. 暗号化されたボリュームを開いたり閉じたりするときの「サイズの調整」はどう思いますか?

ベストアンサー1

それについてオンラインサイズを変更します。

たとえば、LVMを使用して1GサイズのLVを作成し、その上にLUKSを配置すると、次のようになります。

# lvcreate -L1G -n test VG
# cryptsetup luksFormat /dev/mapper/VG-test
# cryptsetup luksOpen /dev/mapper/VG-test lukstest
# blockdev --getsize64 /dev/mapper/VG-test
1073741824
# blockdev --getsize64 /dev/mapper/lukstest
1071644672

したがって、LUKSデバイスはVGテストデバイスとほぼ同じサイズです(1GからLUKSヘッダに使用される2MiBを引いたサイズ)。

今LVを上げるとどうなりますか?

# lvresize -L+1G /dev/mapper/VG-test
  Size of logical volume VG/test changed from 1.00 GiB (16 extents) to 2.00 GiB (32 extents).
  Logical volume test successfully resized.
# blockdev --getsize64 /dev/mapper/VG-test
2147483648
# blockdev --getsize64 /dev/mapper/lukstest
1071644672

LVは現在2Gサイズですが、LUKSデバイスはもともと開いたサイズなので、まだ1Gに閉じ込められています。

luksCloseそうすれば2GにluksOpenもなります。 LUKSはサイズを保存しないため、デフォルトでデバイスを開いたときのデバイスサイズに設定されます。したがって、シャットダウンしてオンまたは再起動すると、クリプトマップが新しいデバイスサイズに更新されます。ただし、コンテナ内のすべてのアイテムをアンロード/停止した後にのみコンテナを終了できるため、これはデフォルトでオフラインのサイズ変更

ただし、LUKSにマウントされたファイルシステムがあり、使用中であり、サイズ変更のためにアンマウントしたくない場合があります。ここでcryptsetup resizeファイルシステムが必要です。オンラインサイズ変更操作。

# cryptsetup resize /dev/mapper/lukstest
# blockdev --getsize64 /dev/mapper/lukstest
2145386496

cryptsetup resizeマウント解除せずにアクティブな暗号化マップを新しいデバイスサイズに更新し、その後の操作を実行したり、マウントされたファイルresize2fsシステム自体をオンラインで拡張したりできます。

再起動または再インストールしても問題ない場合は、cryptsetup resize自動的にオフラインになります。しかし、あなたがしたい場合オンライン、これが唯一の方法です。


縮小(cryptsetup resize --size x)するときのサイズ変更は一時的です。 LUKSはデバイスサイズを保存しないため、次回luksOpenはデバイスサイズを再利用します。したがって、収縮は、サポートデバイスもそれに応じて収縮する場合にのみ機能します。

正常に縮小するには、逆に作業する必要があります。成長は最初にパーティションを増やし、次にLUKS、次にファイルシステムを増やすことです。収縮は、まずファイルシステムを縮小してからパーティションを縮小することです。


サイズ変更が機能しない場合は、サポートされているデバイスのサイズが変更されていない可能性があります。たとえば、ドライブを使用すると、カーネルはパーティションテーブルへの変更を拒否できます。すべてのデバイスレイヤーが予想されるサイズを持っていることをblockdevで確認してください。

おすすめ記事