複数のパーティションを持つSSDディスクがあります。そのうちの1つは、/home
ecryptfsホームディレクトリを含むとしてマウントされたbtrfsボリュームがあることです。
ボリュームをクリーンアップすると、fstrimはそのボリュームのデータブロックをクリーンアップしないようです。なぜですか?以下に、私が説明に従ったプロセスと設定に関するすべての情報を見ることができます。
$ cat /etc/fstab
:
UUID=xxx / ext4 errors=remount-ro 0 1
UUID=yyy /media/vfio ext4 defaults 0 2
UUID=zzz /home btrfs defaults 0 2
$ mount | grep sda
:
/dev/sda5 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/sda1 on /media/vfio type ext4 (rw,relatime,stripe=32721,data=ordered)
/dev/sda2 on /home type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)
$ ls -la /home /home/myuser/.Private # summary
:
/home:
.ecryptfs
myuser
/home/myuser/.Private -> /home/.ecryptfs/myuser/.Private
$ df -h
:
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 16G 11G 4,7G 69% /
/dev/sda1 93G 52G 36G 60% /media/vfio
/dev/sda2 828G 542G 286G 66% /home
/home/myuser/.Private 828G 542G 286G 66% /home/myuser
初めてすべてのボリュームでfstrimを実行しました。
$ fstrim -va
:
/home/myuser: 286,4 GiB (307518836736 bytes) trimmed
/home: 286,4 GiB (307485450240 bytes) trimmed
/media/vfio: 40,4 GiB (43318886400 bytes) trimmed
/: 5,4 GiB (5822803968 bytes) trimmed
/home
追加のecryptfsマウントが原因で、fstrimがツリーで2回実行されるようです。これは問題ではありません(特定のマウントポイントでfstrimを実行するとこれを防ぐことができます)。問題は、/home
実行ごとに同じ量のデータが見つかってクリーンアップされるため、クリーンアップが期待どおりに機能しないことです。
さらなる実行はこれを示しました。
$ fstrim -v /
(いいね):
/: 0 B (0 bytes) trimmed
$ fstrim -v /home
(これは機能しません):
/home: 286,4 GiB (307478061056 bytes) trimmed
sda2( /home
) 剪定は実行に時間がかかるため、実際に何かをしていることに注意してください。
答え1
fstrimが報告したサイズについて心配するのは一般的な誤解です。
本当に言わない。 ただ無視してください。
fstrim
適切なものを発行すると、ioctl
他のすべてはファイルシステムの決定であり、ファイルシステムは非常に異なる動作をします。たとえば、ext4
同じ内容を継続して見ることができるようにトリミングしないでください0 bytes trimmed
。他のファイルシステムは他のタスクを実行できます。これは、ファイルシステムがシステムコールロジックを実装するために選択する方法によって異なります(まったく実装している場合)。xfs
<roughly free space> bytes trimmed
FITRIM
クリーンアップするデータの量が利用可能なスペースよりも大きくない場合(実際にはファイルシステムで)、報告する内容に関係なくfstrim
問題はありません。
結局、SSD自体だけが現在整理されている内容と整理されていない内容を実際に知ることができます。すでに整理されているブロックを切り取っても問題にはなりません。
x bytes trimmed
レポートに基づいて結論を出さないでくださいfstrim
。
データがクリーンアップされたことを確認するには、ディスク上のソースデータを確認する必要があります。 (https://unix.stackexchange.com/a/85880/30851)しかし、その方法はbtrfsでは動作しないかもしれません。私はそれを試したことがありません。