Profile-sync-daemon

提供: ArchWiki
2020年7月22日 (水) 00:21時点におけるKgx (トーク | 投稿記録)による版 (→‎psd のメリット: 誤訳修正)
ナビゲーションに移動 検索に移動

関連記事

profile-sync-daemon (psd)はブラウザプロファイルを tmpfs で管理して定期的に物理ディスク (HDD/SSD) に同期させる、とても小さな擬似的なデーモンです。rsync でブラウザプロファイルの tmpfs のコピーとメディアのバックアップを同期させるという革新的な利用法によります。さらに、psd にはクラッシュからの復元機能が存在します。

psd のメリット

  1. 透過的に利用できる
  2. 物理ドライブの損耗が減る
  3. 速度

プロファイルやブラウザキャッシュなどを tmpfs (RAM ディスク) に再配置して、ブラウザの使用に関連する I/O を物理ドライブから RAM に変更することにより、物理ドライブの消耗を抑えつつブラウザの速度や反応性を劇的に高められます。例えば、物理ディスクのアクセス時間はミリ秒単位なのに対してRAM のアクセス時間はナノ秒オーダーです。これは0の数が6個も違う、つまり1000000倍高速ということです。

ノート: Chrome/Chromium, Firefox (v21 以上), Midori, Rekonq などのブラウザはプロファイルのディレクトリとは別個にキャッシュディレクトリを保存しています。この挙動を変更するのは profile-sync-daemon の射程外です。Chromium の Chromium 設定#tmpfs にキャッシュセクションや Firefox Ramdisk 記事を参照して対処することが推奨されます。楽な修正はブラウザのキャッシュディレクトリ (例: /home/$USER/.cache/<browser>/<profile>/) をデフォルトの場所から適当なプロファイルディレクトリ (例: /home/$USER/.mozilla/firefox/<profile>/cache) に移動して、新しいキャッシュフォルダから元の場所にシンボリックリンクを作成することです。これによって、profile-sync-daemon は自動的にキャッシュフォルダも扱うようになります。

セットアップとインストール

profile-sync-daemon パッケージをインストールします。

設定ファイルの編集

psd を初めて実行したときに、全ての設定が記述された $XDG_CONFIG_HOME/psd/psd.conf が作成されます (以下、このファイルを設定ファイルと呼称します)。

ノート: psd を実行している間に設定ファイルを編集した場合、変更が適用されるのは init サービスから psd を再起動したときです。
$ 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 変数で設定します。

例: Chromium, Opera, Midori をインストールしていて Chromium と Opera だけを tmpfs に同期する (Midori はバックアップのブラウザとしてたまにしか使わない) という場合:

# List browsers separated by spaces to include in the sync. Useful if you do not
# wish to have all possible browser profiles sync'ed which is the default if
# this variable is left commented.
#
# Possible values:
#  chromium
#  chromium-dev
#  conkeror.mozdev.org
#  epiphany
#  firefox
#  firefox-trunk
#  google-chrome
#  google-chrome-beta
#  google-chrome-unstable
#  heftig-aurora
#  icecat
#  inox
#  luakit
#  midori
#  opera
#  opera-beta
#  opera-developer
#  opera-legacy
#  otter-browser
#  qupzilla
#  qutebrowser
#  palemoon
#  rekonq
#  seamonkey
#  surf
#  vivaldi
#  vivaldi-snapshot
#
BROWSERS="chromium opera"

psd のバージョン 5.54 から、overlayfs がネイティブでサポートされるようになりました。USE_OVERLAYFS="yes" という行をアンコメントすることで有効にでき、デフォルトのフルコピーに比べて、メモリの使用量を減らして同期を高速化させることができます。

ノート: この機能を使うには 3.18.0 以上の Linux カーネルが必要です。

サポートしているブラウザ

現在、以下のブラウザを自動で検出して管理します:

psd を使う

プレビューモード (parse)

'parse' オプションを使うことで $XDG_CONFIG_HOME/psd/psd.conf に基づいて psd が何を行うのかを正確に表示することができます。次のように呼び出して下さい:

$ psd p
Profile-sync-daemon v6.03 on Arch Linux.

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

Psd will manage the following per /home/facade/.config/psd/psd.conf settings:

 browser/psname:  chromium/chromium
 owner/group:     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:     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 は指定されたユーザーのサポートされているプロファイル全てを同期します。

クリーンモード

クリーンモードを使うと保存されているスナップショットを全て削除します。削除しても問題ない場合にのみ実行してください。

$ psd c

Profile-sync-daemon v6.03 on Arch Linux.

Deleting 2 crashrecovery dirs for profile /home/facade/.config/chromium
 /home/facade/.config/chromium-backup-crashrecovery-20150117_171359
 /home/facade/.config/chromium-backup-crashrecovery-20150119_112204

psd の起動と停止

psd のバージョン 6.x シリーズのリリースから、公式でサポートされる init システムは systemd だけになりました。Psd には起動と停止を行うための systemd ユーザーサービスが付属しています (psd.service)。さらに、1時間毎に tmpfs からディスクに再同期させる resync-timer も含まれています。resync-timer は psd.service によって自動的に起動するため、あなたがタイマーを起動させる必要はありません。

systemd のユーザーモードの使い方がよくわからない場合、以下のコマンドで psd サービスを有効化できます:

$ systemctl --user [option] psd.service

次のオプションが利用できます: start stop enable disable status。

サポートしているディストリビューション

psd は systemd サービスが付いているただの bash スクリプトなので、systemd が動作している Linux ならどこでも動作します。公式パッケージとして提供しているディストリビューションが数多くあり、psd をインストールする方法をユーザーがメンテナンスしている場合もあります。ソースから psd をビルドすることも可能です。利用できるパッケージやインストールの手順については公式ウェブサイトを見て下さい。

もっと頻繁に同期する (任意)

パッケージには一時間ごとに同期を行うタイマーが入っています。任意で、systemd ユニットを編集することでこの挙動を再定義することが可能です。以下の例は10分毎に同期させるようにタイマーを変更します:

~/.config/systemd/user/psd-resync.timer.d/frequency.conf
[Unit]
Description=Timer for Profile-sync-daemon

[Timer]
OnUnitActiveSec=
OnUnitActiveSec=10m

オプションについては man systemd.timer を見て下さい。

Firefox と Heftig の Aurora での注意事項

psd でブラウザプロファイルを記録して同期を行うには、各ユーザーの $HOME/.mozilla/browser/profiles.ini ファイルで、使用するディレクトリに一意な名前を付ける必要があります。psd が実行されるとファイルが確認され、このルールが守られていない場合は同期が行われません。以下は良くないプロファイルの例で、テストに失敗します。フルパスは一意になっていますが、どちらも同じ名前で終わっているところに注意してください。psd を使うためには profiles.ini を修正して適当なディレクトリを設定する必要があります。

~/.mozilla/firefox/profiles.ini
[General]
StartWithLastProfile=1

[Profile0 for user facade]
Name=normal
IsRelative=0
Path=/mnt/data/docs/facade/mozilla/firefox/myprofile.abc
Default=1

[Profile1 for user debbie]
Name=proxy
IsRelative=0
Path=/mnt/data/docs/debbie/mozilla/firefox/myprofile.abc

FAQ

overlayfs モードとは?

Overlayfs は Linux カーネル 3.18.0 でメインラインに取り込まれたシンプルなユニオンファイルシステムです。psd バージョン 5.54 から、overlayfs を使うことで psd の tmpfs 領域のメモリフットプリントを減らしたり、同期を高速化させることができるようになっています。オーバーレイマウントでは、プロファイル全体ではなく、変更が加えられたデータだけが書き出されるというところがミソです。overlayfs モードで実行した場合、psd がデフォルトで使用する同一の復帰機能も有効になります。Overlayfs モードは $XDG_CONFIG_HOME/psd/psd.confUSE_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 は実際に使用する分だけしか消費しません。許容できる最大限のサイズを指定してください。

overlayfs を有効にしたときに他のブラウザプロファイルディレクトリ "foo-back-ovfs" が作成されるのはなぜですか?

overlayfs は読み取り専用のベースコピー (いわゆる下層ディレクトリ) をプロファイルにマウントして、その上に新しいデータを管理することで機能します。読み取り専用ファイルシステムに再同期しないように、代わりにコピーが使われます。つまり overlayfs を使用することで、同期時間が高速になりメモリの使用量が減るのに対してホームディレクトリのディスク容量が使われるというトレードオフが成立しています。

システムがクラッシュして同期がされませんでした。どうすればいいですか?

運が良ければ、ブラウザプロファイルの"最新の問題がない"バックアップがファイルシステムに残っている可能性があります。psd の再起動時に、プロファイルの tmpfs コピーのシンボリックリンクに問題がないか確認するチェックが行われます。問題がなかった場合、psd は"最新の問題ない"バックアップのスナップショットを作成します。これは psd によってデータが失われないようにするためのサニティーチェックであり、データが消失した場合、他に原因があります。

ノート: 必要であれば、$XDG_CONFIG_HOME/psd/psd.confUSE_BACKUPS 変数をアンコメントして 'no' に設定することでスナップショット/バックアップ機能を完全に無効化できます。

スナップショットはどこにありますか?

ブラウザによります。ブラウザプロファイルと同じディレクトリにスナップショットが存在し、リカバリが作られた時刻のタイムスタンプが付けられています。例えば、chromium なら ~/.config/chromium-backup-crashrecovery-20130912_153310 などになります。もちろん、日付_時間の部分は異なっているでしょう。

スナップショットを復元するにはどうすればいいですか?

  • 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" スイッチを付けて psd を実行すればスナップショットが削除されます。

サポート

気づいたことやコメントなどは 議論スレッド に投稿してください。

他のディストロで PSD

psd は bash スクリプトなので、どんな Linux ディストロでも動作します。それぞれのディストリビューションでパッケージが用意されていたり、ユーザーが自分でインストールできるように方法が用意されています。インストール方法は 公式ウェブサイト を見て下さい。

参照