Есть ли в AIX команда, аналогичная fallocate в Linux?

Есть ли в AIX команда, аналогичная fallocate в Linux?

Я ищу способ занять место в файловой системе AIX, не выполняя большого количества операций ввода-вывода.

Я пробовал ddи lmktemp. ddсоздает разреженный файл, но не блокирует пространство. lmktempделает работу хорошо, но есть некоторый ввод-вывод и это занимает немного времени. Я считаю, 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" не указан, то файл не должен быть разреженным - но потребует времени и усилий со стороны подсистем ввода-вывода.

Да, но ответ будет гораздо позже, но это потому, что я изучаю fallocate на AIX, и я обнаружил возможную ошибку в приложении, использующем fallocate() (вызов!, на самом деле posix_fallocate()) на AIX.

Надеюсь это поможет!

решение2

Вы можете использовать вызовы семейства truncate() (ftruncate() и т. д.) не только для уменьшения, но и для расширения файлов. Просто "обрежьте" их до большего размера, чем их текущий размер. На файловых системах, поддерживающих файлы с дырками, это будет быстро, гораздо быстрее, чем добавление требуемых нулевых блоков в конец файлов.

Связанный контент