2016年3月17日 (木曜日)

17:30:45 # Life Ext4のExtent。ディスク上でどういう感じでファイルが配置されているのかなぁと興味が出たので調べてみた。 FS_IOC_FIEMAPというioctlがあって適当なファイルに対してリクエストするとstruct fiemapのデータ形式で返事がかえってくる。fiemap.fm_mapped_extents だけ返ってきて 最後のEXTENTだとFIEMAP_EXTENT_LASTフラグがfiemap_extent::fe_flagsに設定されている。 これはVFSレイヤーで実装されているのでファイルシステムどれでも同じようにかえってくることになっているっぽい。Documentation/filesystems/fiemap.txtにドキュメントが。 Extent毎にfe_logicalがファイルの論理的なオフセット、fe_lengthがそのExtentの長さ。

17:37:11 # Life ExtentレベルでのDedupe対応のファイルシステム。 同じデータの重複は排除して保持してほしいと思う今日このごろ。いいかげんpdumpfsとか rsync --link-destとかは古い気がする。 Extentを眺めているとFIEMAP_EXTENT_SHAREDというのがある。 ファイルシステムでioctl FIDEDUPERANGE、FICLONERANGE、FICLONEあたりを実装していると複数のファイルで共有しているExtentというのが存在しうるんだけどそれを表現しているっぽい。 どのファイルシステムが対応しているのかなぁと眺めたけど今のところ ocfs2 と btrfs だけ?

Junichi Uekawa