次のパーティションテーブルがあります。
NAME
nvme0n1
├─nvme0n1p1 part /boot
└─nvme0n1p2 part
└─crypt crypt
├─crypt-swap lvm [SWAP]
├─crypt-root lvm /
└─crypt-home lvm /home
ドライブがSSDなので実行したいです。打つディスク自体のパフォーマンス/寿命を向上させるコマンドです。
特に周期的なTRIMを有効にしたいと思います。
2番目のパーティション(たとえばnvme0n1p2
)は暗号化されているため、セキュリティ上の理由でTRIMは無効になります(https://wiki.archlinux.org/title/Dm-crypt/Specialties#Discard/TRIM_support_for_solid_state_drives_(SSD))。
ただし、encrypt
暗号化されたパーティションを開くときに構成することでTRIMを有効にできます。
カーネルの起動時にパーティションが開いたときのカーネルパラメータ(例allow-discards
:)を修正しました。
cryptdevice=/dev/sdaX:root:allow-discards
(パーティションの命名とボリューム名は、上記のコードスニペットとは関係ありません。)。
これにより、実際にディスク上でTRIMコマンドを正常に実行できました。
# cryptsetup luksDump /dev/nvme0n1p2 | grep Flags
Flags: allow-discards
そして:
# fstrim ...
/home: [..] trimmed on ...
/: [..] trimmed on
今まではそんなに良くなった。
問題は、元の状態に復元しようとしたときに発生します。
カーネルパラメータを削除しましたが、まだパーティションに表示され、コマンドは正常allow-discards
に実行されます。Flags
allow-discards
fstrim
- どうやってこれができますか?
- 暗号化されたパーティションから拒否されたドロップを回復する方法は?
答え1
LUK2は、メタデータをヘッダーに永続的に保存できることがわかりました。
allow-discards
次のコマンドを使用して(カーネルパラメータなどの追加設定なしで)パーティション自体にそれを有効にして保存できます。
cryptsetup --allow-discards --persistent refresh root
明らかに、私は過去に廃棄オプションを有効にするためにこのコマンドを実行したことがあります。
このフラグは次のように削除できます。
cryptsetup --persistent refresh root
https://man7.org/linux/man-pages/man8/cryptsetup.8.html
オプションの引数なしでデバイスを更新すると、デフォルト設定を使用してデバイスが更新されます(デバイスの種類によって異なります)。