web-dev-qa-db-ja.com

LUKSパーティションを縮小するにはどうしたらいいですか? `cryptsetup resize`は何をしますか?

単一のext4ファイルシステム(LVMなどではない)を含むLUKS暗号化パーティションのサイズ変更を進めています。 cryptsetup FAQ は古いパーティションを削除して再作成することをお勧めしますが、それは多くの時間を浪費しているように思えます。そのため、パーティションのサイズを手動で慎重に変更したいと考えています。

これまでのところ、私はする必要があると思います:

  1. ファイルシステムの(暗号化された)バックアップを作成します。重要!次のタスクを実行しているときに、最初にデータを失うことはありません。
  2. 既存のext4ファイルシステムをアンマウントします(たとえば、Live CDを起動して)。 Live CDから起動する場合は、cryptsetup luksOpen /dev/sdXY ExistingExt4を使用して暗号化パーティションをマウントします
  3. 既存のext4ファイルシステムのサイズを変更
  4. cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
  5. cryptsetup luksClose ExistingExt4を使用してLUKSパーティションを閉じる/「マウント解除」します
  6. パーティションサイズを縮小します。

上記の手順は正しいですか?

ステップ4では、$SECTORSには何を選択すればよいですか?このステップは必要ですか?cryptsetupマニュアルページはresizeオプションについて実際に説明していません:

resize <name>
    resizes an active mapping <name>.
    If --size (in sectors) is not specified, the size of the underlying
    block device is used.

最後に、ext4パーティションを15 GiB縮小した場合、15 GiBはpartedを使用して既存のパーティションから削除できると思いますか?はいの場合、その方法?問題がある場合、私のディスクはGPTパーティションに分割されています。

14
Lekensteyn

バックアップ(ステップ1)とアンマウント(2と3の間)の後で、fsckを実行して、ファイルシステムが正常であることを確認します。

e2fsck -f /dev/mapper/ExistingExt4

それ以外は、手順は問題ありません。

$ SECTORSには何を選択すればよいですか?このステップも必要ですか?

この手順が必要です。そうしないと、パーティションが古い側に表示されます。これはNautilusで確認されています。resize2fsでサイズ変更した後でも、LUKSパーティションは古いサイズとして表示されていました。 cryptsetup resizeを実行すると、正しい番号が表示されます。この手順は不要です。ファイルブラウザに表示される現在のサイズステータスにのみ影響します。サイズを変更し、パーティションを再度閉じたり開いたりすると、数値が復元されます。したがって、後で示すようにLUKSパーティションを閉じると、これは廃止されます。

$SECTORSは、cryptsetup status ExistingExt4の出力を見て判断できます。

/dev/mapper/ExistingExt4がアクティブです。
タイプ:LUKS1 
暗号:aes-cbc-essiv:sha256 
キーサイズ:256ビット
デバイス:/dev/sda2
オフセット:2056セクター
サイズ: 156049348 セクター
モード:読み取り/書き込み

1つのセクターは常に512バイトです(cryptsetupのマニュアルページに記載されています)。したがって、15 GiBを引くには、156049348 - 15 * 1024 * 1024 * 2 = 124592068のセクターサイズを使用します。

cryptsetup resize ExistingExt4 -b 124592068

パーティションのサイズ変更については、partedはGPTパーティションで正常に動作します。ただし、resizeコマンドは機能しません。回避策(または解決策)として、パーティション情報を削除し、 http://ubuntuforums.org/showthread.php?p = 8721017#post8721017

# cryptsetup luksClose ExistingExt4
# parted/dev/sda2
 GNU Parted 2.3 
/dev/sda 
の使用GNU Partedへようこそ!コマンドのリストを表示するには、「help」と入力してください。
(別れ) 単位s
(別れ) p
モデル:ATA INTEL SSDSA2CW08(scsi)
ディスク/ dev/sda:156301488s 
セクターサイズ(論理/物理): 512B/512B
パーティションテーブル:gpt 
 
 Number Start End Size File system Name Flags 
 1 34s 2082s 2049s Boot bios_grub 
 3 2083s 250034s 247952s ext2 RootBoot 
 2 250035s 156301438s 156051404sすべて

15 GiBを削る必要があるため、新しい終端は156301438 - 15 * 1024 * 1024 * 2 = 124844158になります。パーティション2を変更したいので、まずそれを削除してから、ラベル "すべて "(これは必要に応じて変更できます。):このディスクにはGPTレイアウトがあります。MBRの場合、Everythingprimaryまたはextended(テストされていない、MBR上のパーティションのサイズ変更はでテストされておらずテストされておらず、されていないため、テストされていません)。

[〜#〜]警告[〜#〜]:次のコマンドには 破壊されたデータ があります。何が起こっているのか理解せずにコピーしないでください。セクターの寸法は変更する必要があります、それ以外の場合は[〜#〜] [〜#〜]パーティションを破棄します。私はあなたの愚かさについては一切責任を負いません。データを危険にさらす前に、データをの記憶媒体にバックアップバックアップしてください。

(別れ) rm 2
(別れ) mkpartすべて250035s 124844158s
警告:最適なパフォーマンスを得るために、結果のパーティションは適切に調整されていません。
無視/キャンセルしますか? 無視する
(別れ) p
モデル:ATA INTEL SSDSA2CW08(scsi)
ディスク/ dev/sda:156301488s 
セクターサイズ(論理/物理):512B/512B 
パーティションテーブル: gpt
 
番号開始終了サイズファイルシステム名フラグ
 1 34s 2082s 2049s Boot bios_grub 
 3 2083s 250034s 247952s ext2 RootBoot 
 2 250035s 124844158s 124594124s               すべて
(別れ) 終了する

上記のpartedの例では、セクターが整列していません。これは、以前のインストールの誤りです。あまり注意を払わないでください。

それだ! cryptsetup statusfile -Ls /dev/...を使用して、問題がないことを確認してから再起動できます。

15
Lekensteyn

KDE Partition Manager 2.2. はこれらの手順を実行でき、LUKSパーティションのサイズ変更は適切に機能することに注意してください。

3