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