web-dev-qa-db-ja.com

複数のサブボリュームをマウントしたときにbtrfsでSSDトリムfstrimを実行するにはどうすればよいですか?

私はbtrfsを使用していて、いくつかのサブボリュームをマウントしました(ただし、btrfsルートはマウントしていません)。 SSDパーティションにあるので、fstrimを使いたいと思います。各マウントポイントでfstrimを呼び出す必要がありますか(それぞれ異なるサブボリュームに対応します)?または、btrfs rootをマウントして、このマウントポイントでfstrimを実行する必要がありますか?

4
Stepan

fstrimは「mountpoint」で実行する必要があるため、デバイスをマウントする必要があります。ただし、物理デバイスごとに1回だけ呼び出す必要があります。したがって、2つのマウントポイントがbtrfsと同じデバイス上にある場合、1つのマウントポイントでfstrimを呼び出すだけで済みます。

この答えを見つける: https://forums.gentoo.org/viewtopic-t-1003980-view-previous.html?sid=a51dab49787e5b7b6c2fa4aa7c1a5e44

私はこのようにします:

#!/bin/sh
LOG=/var/log/fstrim.log
echo "===" $(date -R) "===" >> $LOG
for d in $(lsblk -o MOUNTPOINT,FSTYPE | grep -E 'btrfs' | awk '{print $1}'); do
    fstrim -v $d 2>&1 >> $LOG
done

このスクリプトは/etc/cron.weekly/fstrimに配置され、実行可能ファイルを設定します。

Sudo chmod +x /etc/cron.weekly/fstrim

スクリプトは、ブロックデバイスを一覧表示するlsblkを利用します。 「btrfs」デバイスを検索していて、その上でfstrimを起動します。

3
Metal3d