高速化のためにtmpfsを使用しつつ、lsyncdでSSDに常時同期して永続化する仕組みを作った。
以下をsystemdによって行う。
/home/user/foo
にtmpfsをマウント/home/user/foo-static
から/home/user/foo
にファイルを同期。- lsyncdを起動。
/home/user/foo
を使用する。lsyncdによって常時/home/user/foo
から/home/user/foo-static
に同期される。
今回はやっていないが、lsyncdの終了後に/home/user/foo
から/home/user/foo-static
への同期をした方が良いかもしれない。
同梱したhome-user-foo-lsyncd.conf
を/etc/
に配置する。なお、設定ファイル中の
delay = 1,
は、ファイル変更後に同期するまでの遅延時間。長くすればまとめて同期するのでI/O効率は良いが、電源断などで失われる変更が多くなる。
また永続化する必要が無いファイルやディレクトリは、exclude
で除外しておくと良い。
同梱したhome-user-foo.mount
、home-user-foo-init.service
、home-user-foo-lsyncd.conf
を/etc/systemd/system/
に配置し、それぞれenable、startする。
pnpm install
の時間を計測してみると、tmpfsでの改善効果はわずか。3.6秒が3.5秒になった程度だった。
そもそもSSDの内容はページキャッシュに貯められる。読み込みは起動後初回を除き、ほとんど全てメモリから行われる。書き込みも遅延書き込みされるので基本的にはSSDへのI/Oがボトルネックになりにくい。
この時間短縮のために、複雑な設定を行い、データロストの危険性を高めるのは割に合わない。