AIX中有没有类似于Linux中fallocate的命令

AIX中有没有类似于Linux中fallocate的命令

我正在寻找一种无需执行大量 IO 即可占用 AIX 文件系统中空间的方法。

我已经尝试过了dd并且lmktempdd创建稀疏文件,但不锁定空间。lmktemp工作做得很好,但是有一些 IO 并且有点耗时。我相信fallocate速度很快而且没有IO。

答案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 提供“稀疏”文件,而不是锁定空间。我的理解是,这是“稀疏”文件的定义——占用的逻辑空间,而不是物理空间。此外,re: dd,如果没有给出“seek”参数,那么文件不应该是稀疏的 - 但会花费 IO 子系统的时间和精力。

是的 - 很久以后才有答案 - 但那是因为我正在 AIX 上研究 Fallocate - 以及我在 AIX 上使用 Fallocate() (调用!,实际上是 posix_fallocate())的应用程序中发现的一个可能的错误。

希望这可以帮助!

答案2

您可以使用 truncate() 系列(ftruncate() 等)的调用不仅可以减少文件,还可以扩展文件。只需将它们“截断”为比当前尺寸更大的尺寸即可。在支持有漏洞的文件的文件系统上,它会很快,比将所需的空块附加到文件末尾要快得多。

相关内容