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는 공간을 잠그는 대신 "희소" 파일을 제공합니다. 제가 이해한 바는 이것이 물리적 공간이 아닌 논리적 공간을 차지하는 "희소" 파일의 정의라는 것입니다. 또한 re:dd, "seek" 인수가 제공되지 않으면 파일이 희박해서는 안 되지만 IO 하위 시스템에 시간과 노력이 소요됩니다.

예 - 대답은 훨씬 나중에 나왔습니다. 그러나 그것은 제가 AIX에서 Fallocate에 대해 작업하고 있었기 때문이었습니다. 그리고 AIX에서 Fallocate()(호출!, 실제로는 posix_fallocate())를 사용하는 애플리케이션에서 버그를 발견했을 수도 있습니다.

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

답변2

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

관련 정보