web-dev-qa-db-ja.com

fstrimはスワップをトリミングしません

このガイド に従って暗号化されたスワップパーティションを設定しました。私の/etc/crypttabは次のように設定されています(スワップのdiscardオプションに注意してください):

rootfs UUID=<UUID_root> none luks,discard
swap UUID=<UUID_swap> /dev/urandom swap,offset=2048,cipher=aes-xts-plain64,size=512,discard

allow_discards=1には/etc/lvm/lvm.confもあります。ただし、手動トリムを実行すると、スワップはトリムされません。

#Sudo /sbin/fstrim -av
/media/win: 670.4 GiB (719872700416 bytes) trimmed
/boot/efi: 221.8 MiB (232525824 bytes) trimmed
/boot: 291 MiB (305152000 bytes) trimmed
/: 221.7 GiB (237996343296 bytes) trimmed

どうすればトリムできますか?


関連するメモで、なぜ/media/winがトリミングされているのですか?これはLinuxによって自動マウントされたハードドライブ(SSDではない)上のNTFSパーティションですが、なぜTRIMがハードドライブで有効になっているのですか?実際、lsblk -Dを印刷すると、/dev/sda(HDD)にDISC_GRANとDISC_MAXのゼロ以外の値が表示され、TRIMが有効になっていることが示されます。何故ですか?

1
teagut

明らかに、スワップは通常のファイルシステムとは見なされないため、fstrimを手動で実行してもトリミングされません。しかし、Linuxカーネルは、基盤となるデバイスが操作をサポートしているときに自動的にマウントされると、スワップのトリミングを行うようです。これは Fedoraプロジェクトのドキュメント で参照されています:

LinuxスワップコードはTRIM対応デバイスにTRIMコマンドを発行し、この動作を制御するオプションはありません。

カーネルコード自体でもそれを見ることができます ここ 。したがって、暗号化とどのように相互作用するかはわかりませんが、/etc/crypttablvm.confが設定されている限り、スワップトリミングには追加の構成(たとえばfstab)は必要ないと思います。上記の質問のように、LUKSおよびLVMレベルでのトリミングが可能になります。

1
teagut