Arch LinuxでProfile-sync-daemonを導入してSSDの劣化を抑える(1)

MacBook Air(mid-2012)にArch Linuxを載せて(デュアルブート)動かしています。
FirefoxやChromeを使う際に、ブラウザキャッシュの頻繁な書き込みがSSDの寿命を短くするといった言及をいくつか見たので、対応することにしました。

以下の記事と、Arch Wikiの該当ページを参考に、現時点での最新方法を残しておきます。

Arch Linux を SSD に移した時のメモ | Basic Werk

上記記事で言及されている/etc/fstabの設定についてはArch Linux導入時に済ませているので、割愛します。Arch Wikiの導入ガイドに従っていれば済んでいるかと思います。

profile-sync-daemon (AUR)

ブラウザキャッシュやプロファイルをRAM上で管理するためのサービスを提供します。内部的にはrsyncを利用して同期を取るようです。

Profile-sync-daemon - ArchWiki

AURパッケージなのでyaourtの利用を推奨します。

1
$ yaourt -S profile-sync-daemon

Wikiでは/etc/psd.confを設定ファイルとして利用すると書かれていますが、現時点(v6.20)では既にこの方法は陳腐化しています。代わりにユーザのホームフォルダで設定ファイルを管理するようになっています。

1
$ profile-sync-daemon parse

を実行すると、設定ファイルがどこに置かれたかが表示されますので、そのファイルを編集します。デフォルトでは$HOME/.config/psd/psd.confあたりになるようです。

自分の環境ではfirefox(メイン)とgoogle-chrome(AmazonプライムやYoutube用)を使っているので、以下のように設定しています。

1
BROWSERS="firefox google-chrome"

また、可能であればoverlayfsを有効にすることで、RAMの使用量を減らし、同期を高速化できます。(事前準備については後述)

1
USE_OVERLAYFS="yes"

設定ファイルを更新後、サービスを起動します。次回再起動時以降に、自動起動できるようにします。

1
2
$ systemctl --user start psd.service
$ systemctl --user enable psd.service

overlayfsの設定

Linuxのカーネルが3.18.0以降ではoverlayfsが利用可能です。

1
$ uname -r

でバージョンの確認ができます。

管理者権限で

1
# modprobe overlay

してoverlayモジュールをロードします。環境によってはoverlayfsの場合もあるようです。

起動時に読み込ませるためには/etc/modules-load.d/overlay.conf(名前は自由)を作成し、読み込ませたいモジュール名としてoverlayを記述します。

1
2
# 起動時に読み込むモジュール名のみ指定
overlay

overlayfsが有効にならない

上記の設定などが済んだあとで、正しく設定がされているかどうかを確認してみましょう。

1
2
3
4
5
$ psd parse
ERROR! To use overlayfs mode, <username> needs sudo access to /usr/bin/psd-overlay-helper

Add the following line to the end of /etc/sudoers to enable this functionality:
<username> ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper

権限周りで怒られていますね。visudoして、最下行を追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ psd parse
Profile-sync-daemon v6.20 on Arch Linux

Systemd service is currently active.
Systemd resync-timer is currently active.
Overlayfs v23 is currently active.

Psd will manage the following per /home/<username>/.config/psd/psd.conf:

browser/psname: firefox/firefox
owner/group id: <username>/100
sync target: /home/<username>/.mozilla/firefox/ffzva242.default
tmpfs dir: /run/user/1000/<username>-firefox-ffzva242.default
profile size: 193M
overlayfs size:
recovery dirs: none

browser/psname: google-chrome/chrome
owner/group id: <username>/100
sync target: /home/<username>/.config/google-chrome
tmpfs dir: /run/user/1000/<username>-google-chrome
profile size: 77M
overlayfs size:
recovery dirs: none

今度は正しく動作していることが確認できました。

実際には、各ブラウザはプロファイル以外のキャッシュも管理しているので、これらもRAM上に移すと良いでしょう。
長くなってきたので、この話題は次回へまわします。