fstrimはlvmとdm-cryptを使ってパーティションをクリーンアップしていないようです。

fstrimはlvmとdm-cryptを使ってパーティションをクリーンアップしていないようです。

dm-cryptとLVMを使用してFedora 25を設定しようとしましたが、TRIMが機能するのに問題がありました。

$ sudo fstrim -av                                                                            
/boot: 28.6 MiB (30003200 bytes) trimmed
/: 56.5 GiB (60672704512 bytes) trimmed

$ sudo fstrim -av                                                                            
/boot: 0 B (0 bytes) trimmed
/: 56.5 GiB (60671877120 bytes) trimmed

上記の出力からわかるように、fstrim暗号化なしで繰り返し実行できます。外部4 /boot、しかし効果がないようです/(同じディスクで)。

SSD - > dm-crypt - > LVM - > XFSに設定します。

$ lsblk -D                                                                                                                                                                                     
NAME                                          DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda                                                  0      512B       2G         0
├─sda2                                               0      512B       2G         0
│ └─luks-dd5ce54a-34c9-540c-a4cf-2a712b8a3a5e        0      512B       2G         0
│   └─fedora-root                                    0      512B       2G         0
└─sda1                                               0      512B       2G         0

~によるとこれ問題、DISC-ZERO == 0 問題にならないでください。

# cat /etc/crypttab
luks-dd... UUID=dd.. none discard

# cat /etc/lvm/lvm.conf
devices {
...
     issue_discards = 1
...
}

また、rd.luks.options=discardオプションを追加/etc/default/grubし、initramfsとgrub.cfgを更新しました。

# grub2-mkconfig -o /boot/grub2/grub.cfg
# dracut -f

廃棄オプションが正しく伝播されます。

# dmsetup table luks-d...                                                                                                                        
0 233385984 crypt aes-xts-plain64 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 8:2 4096 1 allow_discards

Webで見つけることができる上記の設定のバリエーションを試しましたが、これはマニュアルページに従うようです。他のファイルシステムを使用したことはありませんが、XFSをサポートする必要があります。

ベストアンサー1

あなたのテストがドキュメント(man fstrim)と一致しないようです。

-v, --verbose

詳細な実行。このオプションを使用すると、fstrimはファイルシステムの出力をブロックスタックの下にバイト単位でデバイスに渡して破棄できます。ストレージデバイスの観点から、この数字は最大廃棄量です。繰り返される FITRIM ioctl 呼び出しは、繰り返し破棄するために同じセクタを送信し続けるためです。

fstrimは、毎回潜在的に削除された同じバイトを報告します。ただし、廃棄の間に記録されたセクタだけが実際にストレージデバイスによって廃棄されます。また、カーネルブロックレイヤーには、RAIDストライプジオメトリ、クリーンアップをサポートしていないLVM設定のデバイスなどに対応するために廃棄範囲を調整する権限があります。これらの減少はfstrim_range.len(--lengthオプション)には反映されません。

検索削除リクエストを使用することをお勧めしますブロック追跡代わりにfstrimを実行しています。ドロップ要求がスタックの下部にあるブロックデバイスに送信されているかどうかが表示されることを願っています。 sda1とsda2の間の結果を比較できます(sda1で文書化されていない動作を避けるために新しく起動した後)。

btrace -a discard $DEV

おすすめ記事