2013年3月23日土曜日

スパースファイル(sparse) を/tmp に loopback で mount

録画マシンは、dual core の型落ちをあえて使ってるので、matroskaエンコードは、最近買い換えたcore i5 ノートでやっています。フツーにffmpegと、自作スクリプトを色々組み合わせてやってます。

基本的にこの運用に不満はないのですが、

mkvの仮置きを /tmp にしており、更にlinuxmint のwubiインストールなので、そもそもパーティションが狭い。
フツーにインストールしたlinuxmintを使う限りは、10GB前後のtsまでが限界でしょう。
アニメは3GB前後なので、大抵はなんとかなりますが、徐々に、エンコード出来てない奴が増えてきました。

/tmpに仮置きしてるのが問題で、ドライブの接続は今はUSB3なので、元パーティションそのまま読み書きしてもいいのですが、仕方ないので、/tmp の容量を追加することにします。ホストドライブは余ってるので、ループバックを新しく作って追加するだけです。wubiではよくある手口ですね。

最初は馬鹿正直に20GBをddで作ろうとしたのですが、なかなか帰ってこないので心が折れました。そこで思い出したのがsparse file です。
http://en.wikipedia.org/wiki/Sparse_file
特殊なファイルなので、なんかプログラム書かなきゃ駄目か?と思ったら、なんとddで作れるらしい。

早い話が、こういうことです。

https://gist.github.com/kamawanu/5227905#file-add-sparse-vdisk-sh


ddはもちろん一瞬で終了。mkfsをすると若干増えます。その後は徐々に。ファイルシステムについてはちょっと迷いましたが、結局ext2です。外側にntfsが要るので、ジャーナリングむしろ余計じゃね?と思ったので。

その後、ext4なら見違えるほど早いらしい、ということでext3を経由してext4に。確かに速くなりました。特にデカイファイルの削除が。