Linuxのfallocateに似たコマンドがAIXにありますか?

Linuxのfallocateに似たコマンドがAIXにありますか?

あまり IO を実行せずに AIX ファイル システムのスペースを占有する方法を探しています。

試してみましたddlmktempddスパース ファイルを作成しますが、スペースはロックされません。lmktempうまく機能しますが、IO が発生し、少し時間がかかります。IO がなく、高速であると信じていますfallocate

答え1

質問に対する正確な答えは、「いいえ、AIX では fallocate コマンドは提供されません。AIX ではライブラリ呼び出し posix_fallocate() が提供されます。」です。

詳細については:

root@x066:[/data/prj/python/python3-3.6.8]find /usr/include -name \*.h | xargs egrep "(fallocate|truncate)64\("
/usr/include/unistd.h:  extern int              ftruncate64(int, off64_t);
/usr/include/unistd.h:  extern int              truncate64(const char *, off64_t);

root@x066:[/data/prj/python/python3-3.6.8]find /usr/include -name \*.h | xargs egrep "(fallocate|truncate)\("
/usr/include/fcntl.h:extern int posix_fallocate(int,off_t,off_t);
/usr/include/sys/fp_io.h:fp_ftruncate(  struct file     *fp,
/usr/include/sys/fp_io.h:extern int     fp_ftruncate();
/usr/include/unistd.h:  extern int              ftruncate();
/usr/include/unistd.h:  extern int              truncate();
/usr/include/unistd.h:  extern int              ftruncate(int, off_t);
/usr/include/unistd.h:  extern int              truncate(const char *, off_t);

dd が「スパース」ファイルを提供し、スペースをロックしないことについて。私の理解では、これが「スパース」ファイルの定義です。つまり、占有される論理スペースであり、物理スペースではありません。さらに、dd に関して言えば、「seek」引数が指定されていない場合、ファイルはスパースではありませんが、IO サブシステムによって時間と労力がかかります。

はい、回答はかなり後になりますが、それは私が AIX 上の fallocate を調査しているからです。また、AIX 上で fallocate() (呼び出し、実際は posix_fallocate()) を使用するアプリケーションでバグの可能性を発見しました。

お役に立てれば!

答え2

truncate() ファミリーの呼び出し (ftruncate() など) は、ファイルの縮小だけでなく、拡張にも使用できます。単に現在のサイズよりも大きいサイズに「切り詰める」だけです。穴のあるファイルをサポートするファイルシステムでは、必要な null ブロッ​​クをファイルの末尾に追加するよりも高速です。

関連情報