5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tarfs(4) たぁなんですか?

Last updated at Posted at 2024-12-07

新機能 tarfs

単にタイトルが言いたかっただけだろうという話もありますが......。

FreeBSD 14 からの新機能として tarfs(4) が追加されました。

名前から推察できるとおり、tar ファイルをファイルシステムとして mount する機能です。リードオンリーのみ対応で書き込みはできません。

UFSなどでフォーマットしたディスクイメージは FreeBSD 以外のシステムで中身を見たり、ファイルを追加/削除したりするのに、仮想イメージとして認識させてファイルシステムをマウントするといったことが必要になり、面倒になりがちです。
tar 形式ならば、アーカイブファイルの操作として様々な環境で操作できるので、実行環境と異なる環境でファイルシステムを操作したい組み込み系などで便利かもしれません。

tar はバックアップやファイル配布などで、UNIX系OSを使っている人は息を吸うように当たり前に使っているアーカイブファイル形式でお馴染みだと思います。
ただ、tar は無圧縮で複数ファイルをまとめるファイル形式です。そのままではファイルサイズがでかくなってしまうので、通常は圧縮形式と組み合わせて tar.gz や tar.xz というフォーマットで流通していることが多いと思います。しかし tarfs は tar.gz や tar.xz なファイルは扱えません。基本は無圧縮 tar での利用となります。

では全く圧縮形式が使えないかというとそうではなくて、現在は zstd 形式のみですが圧縮形式も対応しています。
zstd は、Meta 社の Yann Collet さんが開発した、圧縮と展開が高速なことが特徴の圧縮/伸長アルゴリズムです。suffix(いわゆる拡張子)は.zst です。

実際の利用

実際の mount / umount

# mount -t tarfs archive.tar /mnt (無圧縮マウント)
# umount /mnt (アンマウント)
# zstd -c archive.tar > archive.tar.zst (zstd 圧縮)
# mount -t tarfs archive.tar.zst /mnt (zstd 圧縮をマウント)
# umount /mnt (アンマウント)

という感じ。 -t オプションで tarfs を指定して、マウント元として tarボールファイルを指定する以外は特に通常とtps://download.freebsd.org/snapshots/amd64/14.2-STABLE/base.txz | xzcat | zstd -9c > base.tar.変わりません。マウントにはカーネルモジュール tarfs.ko のロードが必要ですが、 mount -t tarfs 〜 を実行すると自動でロードされるので、意識する必要はありません。
ちなみにいったんmount したtar ファイルに tar -r でファイルを追加しても、tarfs 上では mount 時のファイルしか見えないようです。そもそも mount 中にファイルをいじってもいいかは不明ですし、mount 中はそっとしておいたほうがよさそうです。

download.freebsd.org にある 14.2-stable の base.txz を /mnt へマウントして ls すると

$ curl https://download.freebsd.org/snapshots/amd64/14.2-STABLE/base.txz | xzcat | zstd -9c > base.tar.zst
$ sudo mount -t tarfs base.tar.zst /mnt
$ ls /mnt
bin		etc		mnt		root		usr
boot		lib		net		sbin		var
COPYRIGHT	libexec		proc		sys
dev		media		rescue		tmp

大きめのファイルだと mount がちょっと時間がかかる感じです。

企業スポンサーで追加された機能

tarfs は個人が面白そうだから作ってみました系の機能ではなく、Juniper Networks, Inc.と Klara, Inc. がスポンサーとして追加された機能です。
開発者も Juniper Networks, Inc.の Stephen J. Kiernan さんと、 Klara, Inc. の Dag-Erling Smørgrav さんです。

機能追加時のソースレビュー
https://reviews.freebsd.org/D37753

これらの企業で具体的にどういう用途でこの機能を使っているのかは不明ですが、企業で必要な機能として、メンテされ続けていくことは期待できそうです。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?