定期的にbtrfs-scrubを実行する

定期的にbtrfs-scrubを実行する

マニュアルbtrfs-scrubページには次のように記載されています。

ユーザーは手動で実行するか、スケジュールされたシステムサービスを介して実行する必要があります。推奨期間は1ヶ月ですが、短い場合があります。

systemdすべての出力をログにキャプチャして、ユーザーのためにこれをどのように自動化できますか?

私はArch Linuxに基づいてManjaroを実行しています。

答え1

btrfs-scrubArch Linuxには、次の方法で有効にできるbtrfs-progs用の.timerユニットファイルが用意されています。

systemctl enable [email protected]

@記号の後のダッシュ( "-")は、ルートディレクトリを表すために使用されます。詳しくはArchWikiのページをご覧ください。

https://wiki.archlinux.org/index.php/Btrfs#Start_with_a_service_or_timer

ステータスを確認するには、以下を使用してください。

systemctl list-timers

または:

journalctl -u btrfs-scrub@-.{timer,service}

答え2

になるフレンドリーな怠惰[email protected]sysadmin、現在マウントされているすべてのファイルシステムbtrfsで起動してアクティブになる次のことを考えました。

awk '$3=="btrfs" { system("systemd-escape " $2 "| cut -c2-") }' /etc/fstab | while read -r fs; do
    [[ -z $fs ]] && fs=- # Set to '-' for the root FS
    sudo systemctl enable btrfs-scrub@"$fs".timer
    sudo systemctl start btrfs-scrub@"$fs".timer
done

正しい方向を教えてくれた@Head_on_a_Stickに感謝します。

関連情報