portage tree を squashfs で sync しよう

portage-2.2.19以降では Portage tree を Squash FSでsyncできるようになったらしい。

下記メールにある通り、 dev-util/squashmergeをインストールして repos.conf を設定する。 emerge --sync すると最初は Squash FSの snapshot が、最初のsync以後はいまの snapshot に対する差分がDLされて portage tree として見えるようになる。

archives.gentoo.org

Portage tree に SquashFSを使うのは、 tree のサイズを小さくするよく知られたトリックである。 たとえばbtrfs+lzoで504MBのtreeがSquashFS+lzoで96MBにまで小さくできる。

http://dev.gentoo.org/~mgorny/articles/using-deltas-to-speed-up-squashfs-ebuild-repository-updates.pdf

しかし、Squashを毎回やり直すのが面倒であった。 今回のportageの変更で透過的にSquashFS上のportage treeの更新ができるようになる。

 

いまの自分のシステムは Git での syncにしているが、どうせportage treeの中で上書きなんてしないし、 SquashDelta sync に切り替えていこう。特にあまり容量のないサーバでinodeとディスクの節約になって嬉しい。