sparse file: sysutil/phantom2006年04月14日 09時57分58秒

穴空きファイル。sparse file と言って、割り当てていないブロックが存在するファイルのこと。dd で seek をすると簡単に作れる。mdconfig で使うのに、これで十分なのだが、cp したり、デバイスをまたいだ mv をすると、全部のブロックが割り当てられてしまう。

そこで、sparse file のままファイルを移動できないかと思っていた。自分で書いてもいいが、www.freebsd.org/ports で検索。sysutil/phantom というのが出てきた。


# phantom < current-obj.md -o /mnt/ufs/current-obj.md
Phantom blocks: 160406
# ls -lsd current-obj.md /mnt/ufs/current-obj.md
 998288 -rw-------  ... root 1048576000 Apr 13 13:32 /mnt/ufs/current-obj.md
 1024528 -rw-r--r-- ... uyota   1048576000 Apr 11 08:49 current-obj.md
# cmp current-obj.md /mnt/obj/current-obj.md

一応、動いているらしい。

しかし、最初に -i を使い入力ファイルを指定したところ、


phantom: do_copy_mmap error while madvise

とでて、その後、また試した。今度は

phantom: Invalid argument

とのこと。何か、とてもバグが多いみたいだ。まさか、一度目と違うエラーが出るとは思わなかったので、一度目の正確なコマンドは覚えていない。一度目と同じエラーを出そうとして試しているうちに、二度目のコマンドも忘れた。

このまま使い続けるのは、少々恐い。