Profile-sync-daemon
profile-sync-daemon (psd) はブラウザプロファイルを tmpfs で管理して定期的に物理ディスク (HDD/SSD) に同期させる、とても小さな擬似的なデーモンです。rsync でブラウザプロファイルの tmpfs のコピーとメディアのバックアップを同期させるという革新的な利用法によります。さらに、psd にはクラッシュからの復元機能が存在します。
psd の設計目標および利点は以下の通りです。
- 透過的に利用できる
- 物理ドライブの損耗が減る
- 速度
プロファイル、ブラウザキャッシュなどを tmpfs (RAM ディスク) に再配置するため、ブラウザの使用に関連する I/O も物理ドライブから RAM にリダイレクトされ、物理ドライブの消耗を抑え、ブラウザの速度と応答性を大幅に改善します。
目次
インストール
profile-sync-daemon パッケージを インストール して下さい。
設定
psd を初めて実行したときに、全ての設定が記述された $XDG_CONFIG_HOME/psd/psd.conf
が作成されます (以下、このファイルを設定ファイルと呼称します)。
$ psd First time running psd so please edit /home/facade/.config/psd/psd.conf to your liking and run again.
- 任意で overlayfs を利用することで同期を高速化させてメモリの使用量を減らすことができます。USE_OVERLAYFS 変数を設定してください。このオプションを使う場合、
/usr/bin/psd-overlay-helper
に sudo 権限が必要で、カーネルが overlayfs バージョン22以上に対応していなければなりません。この機能の詳細は下の FAQ を見て下さい。 - 任意で BROWSERS 行をアンコメントして tmpfs に同期するブラウザを指定することができます。BROWSERS がコメントアウトされている場合 (デフォルト)、サポートしているブラウザ全てのプロファイルが同期されます。
- 任意でクラッシュしたときに復帰するためのスナップショットを無効化することができます (非推奨) USE_BACKUPS 変数で設定します。
- オプションで、保持するクラッシュリカバリ用のスナップショットの数を定義します。
BACKUP_LIMIT
変数でこれを行います。
例: Chromium、Opera、および Midori がインストールされているが、ユーザーが Midori をバックアップブラウザーとして保持しており、めったに使用されないため、Chromium と Opera のみを tmpfs に同期するとします。
BROWSERS=(chromium opera)
psd のバージョン 5.54 から、overlayfs がネイティブでサポートされるようになりました。この機能を使うには 3.18.0 以上の Linux カーネルが必要です。
サポートしているブラウザ
現在、以下のブラウザを自動で検出して管理します:
- Chromium
- chromium-devAUR
- conkeror-gitAUR
- Epiphany
- falkon
- Firefox (安定版、ベータ版、Aurora 版など全てをサポート)
- google-chromeAUR
- google-chrome-betaAUR
- google-chrome-devAUR
- heftig バージョンの Aurora: Arch Linux 専用ブラウザ
- icecatAUR
- Luakit
- Midori
- Opera
- Otter Browser
- palemoonAUR
- Qutebrowser
- seamonkey
- surfAUR
- vivaldi
使い方
プレビューモード (parse)
'parse' オプションを使うことで $XDG_CONFIG_HOME/psd/psd.conf
に基づいて psd が何を行うのかを正確に表示することができます。次のように呼び出して下さい:
$ psd p Profile-sync-daemon v6.44 Systemd service: active resync-timer: active sync on sleep: enabled use overlayfs: enabled Psd will manage the following per /home/facade/.config/psd/psd.conf settings: browser/psname: chromium/chromium owner/group id: facade/100 sync target: /home/facade/.config/chromium tmpfs dir: /run/user/1000/facade-chromium profile size: 93M overlayfs size: 39M recovery dirs: 2 <- delete with the c option dir path/size: /home/facade/.config/chromium-backup-crashrecovery-20150117_171359 (92M) dir path/size: /home/facade/.config/chromium-backup-crashrecovery-20150119_112204 (93M) browser/psname: firefox/firefox owner/group id: facade/100 sync target: /mnt/data/docs/facade/mozilla/firefox/f8cv8bfu.default tmpfs dir: /run/user/1000/facade-firefox-f8cv8bfu.default profile size: 145M overlayfs size: 13M recovery dirs: none
上記の通り、特定のブラウザが BROWSERS 行に設定されていない場合、psd は指定されたユーザーのサポートされているプロファイル全てを同期します。
ヒントとテクニック
もっと頻繁に同期する (任意)
パッケージには一時間ごとに同期を行うタイマーが入っています。任意で、systemd ユニットを編集することでこの挙動を再定義することが可能です。以下の例は10分毎に同期させるようにタイマーを変更します:
~/.config/systemd/user/psd-resync.timer.d/frequency.conf
[Unit] Description=Timer for Profile-sync-daemon [Timer] OnUnitActiveSec= OnUnitActiveSec=10m
オプションについては systemd.timer(5) を見て下さい。
overlayfs モードとは?
Overlayfs は Linux カーネル 3.18.0 でメインラインに取り込まれたシンプルなユニオンファイルシステムです。psd バージョン 5.54 から、overlayfs を使うことで psd の tmpfs 領域のメモリフットプリントを減らしたり、同期を高速化させることができるようになっています。オーバーレイマウントでは、プロファイル全体ではなく、変更が加えられたデータだけが書き出されるというところがミソです。overlayfs モードで実行した場合、psd がデフォルトで使用する同一の復帰機能も有効になります。Overlayfs モードは $XDG_CONFIG_HOME/psd/psd.conf
の USE_OVERLAYFS="yes"
という行をアンコメントしてデーモンを再起動することで有効にできます。
Linux カーネルで利用できる overlayfs にはディストロによって複数のバージョンが存在します。バージョン 22 以前ではモジュールは 'overlayfs' と呼ばれていましたが、新しいバージョン (23 以上) ではモジュールの名前は 'overlay' になっています ('fs' が取られた)。Psd はあなたの使用しているカーネルで利用できる overlayfs を自動的に検出します。
psd のバージョン 6.05 から、overlayfs モードを利用するには /usr/bin/psd-overlay-helper
に (パスワードプロンプトが表示されない) sudo でアクセスできるようにするか、あるいはグローバルな sudo 権限が必要になりました。/etc/sudoers
に以下の行を設定することでユーザーに権限が与えられます。root で /usr/bin/visudo
を実行して追加してください:
foo ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper
上のプレビューモードのセクションの例を見れば、overlayfs を使うことでどれくらいメモリの使用量が節約できているのかわかります。"overlayfs size" とプロファイルごとの "profile size" の合計を比較してください。プロファイルに書き込まれているデータの量によって数字は変わってきますが、基本的に overlayfs のサイズはプロファイルのサイズより小さくなるはずです。
/run/user/xxxx にプロファイルを乗せるのに大量のメモリを割り当てる
/run/user
の容量は /etc/systemd/logind.conf
の RuntimeDirectorySize ディレクティブによって制御されるのが通常です (詳しくは logind.conf
の man ページを見て下さい)。デフォルトでは、物理メモリの 10% が使われますが、メモリの使用量を増やすことができます。tmpfs は実際に使用する分だけしか消費しません。許容できる最大限のサイズを指定してください。
スナップショット
ブラウザプロファイルの "最後の機能する" バックアップは、ファイルシステム上にまだうまく残っている可能性があります。psd を再起動すると (例えば再起動時)、プロファイルの tmpfs コピーへのシンボリックリンクが有効かどうかが確認されます。もしそれが無効であれば、psd はそれを元の場所に戻す前に ”最後の機能する” バックアップをスナップショットします。これは、psd が害を与えず、データの損失が何か他の要因によるものであることを確認するためのものです。
スナップショットはブラウザプロファイルと同じディレクトリにあり、回復が行われた時間に対応する日付-時間スタンプが含まれています。例えば、chromium の場合は ~/.config/chromium-backup-crashrecovery-20130912_153310
となります。-- もちろん、date_time の接尾辞はそれぞれ異なります。
スナップショットを復元するには:
psd
を停止してください。- tmpfs のブラウザプロファイルディレクトリのシンボリックリンクがないことを確認してください。存在する場合、psd は何らかの理由で適切に停止していません。
- プロファイルの"問題がある"コピーをバックアップに移動してください (やみくもに削除するのはやめましょう)。
- スナップショットディレクトリをブラウザが使用する名前にコピーしてください。
Chromium の例:
$ mv ~/.config/chromium ~/.config/chromium-bad $ cp -a ~/.config/chromium-backup-crashrecovery-20130912_153310 ~/.config/chromium
Chromium を実行したらコピーしたバックアップスナップショットが使われます。全て問題ないようでしたら、ブラウザを閉じて psd を再起動してください。ここまできたら ~/.config/chromium-backup-crashrecovery-20130912_153310
を削除してもかまいません。
スナップショットをクリーンアップする
psd clean
を実行すると、蓄積されたすべての回復スナップショットが削除されます。それらを削除することが確実な場合にのみ、これを実行してください。
サポート
気づいたことやコメントなどは 議論スレッド に投稿してください。