Linux의 fallocate와 유사한 AIX 명령이 있습니까?

Linux의 fallocate와 유사한 AIX 명령이 있습니까?

나는 많은 IO를 수행하지 않고 AIX 파일 시스템에서 공간을 차지하는 방법을 찾고 있습니다.

나는 시도 dd했다 lmktemp. dd스파스 파일을 생성하지만 공간을 잠그지는 않습니다. 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에 관해서입니다. 내 이해는 이것이 "희소" 파일, 즉 물리적 공간이 아닌 논리적 공간을 차지하는 정의라는 것입니다. 또한 다시 말하면 dd입니다. "seek" 인수가 제공되지 않으면 파일이 희박해서는 안 되지만 IO 하위 시스템에서 시간과 노력이 필요합니다.

예 - 훨씬 나중에 답변이 제공됩니다. 그러나 이는 제가 AIX에서 fallocate를 연구하고 있기 때문입니다. 그리고 AIX에서 fallocate()(호출!, 실제로는 posix_fallocate())를 사용하는 애플리케이션에서 발견할 수 있는 버그 때문입니다.

도움이 되었기를 바랍니다!

답변2

truncate() 계열(ftruncate() 등)의 호출을 사용하여 파일을 줄이는 것뿐만 아니라 파일을 확장할 수도 있습니다. 현재 크기보다 더 큰 크기로 "잘라내기"만 하면 됩니다. 구멍이 있는 파일을 지원하는 파일 시스템에서는 필요한 널 블록을 파일 끝에 추가하는 것보다 훨씬 빠릅니다.

관련 정보