Existe um comando no AIX semelhante ao fallocate no Linux

Existe um comando no AIX semelhante ao fallocate no Linux

Estou procurando uma maneira de ocupar espaço em um sistema de arquivos AIX sem fazer muito IO.

Eu tentei dde lmktemp. ddcria um arquivo esparso, mas não bloqueia o espaço. lmktempfaz o trabalho bem, mas há algum IO e consome um pouco de tempo. Acredito fallocateque seja rápido e sem IO.

Responder1

A resposta literal à sua pergunta é: Não, o AIX não fornece esse comando fallocate. O AIX fornece a chamada de biblioteca posix_fallocate().

Para mais detalhes:

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);

Quanto ao dd fornecer um arquivo "esparso" e não bloquear espaço. Meu entendimento é que essa é a definição de um arquivo "esparso" - espaço lógico ocupado, não espaço físico. Além disso, re: dd, se nenhum argumento de "busca" for fornecido, o arquivo não deverá ser esparso - mas exigirá tempo e esforço dos subsistemas IO.

Sim - muito mais tarde com uma resposta - mas isso é porque estou pesquisando fallocate no AIX - e um possível bug que encontrei em um aplicativo usando fallocate() (a chamada!, na verdade posix_fallocate()) no AIX.

Espero que isto ajude!

Responder2

Você pode usar as chamadas da família truncate() (ftruncate(), etc) não apenas para reduzir, mas também para expandir arquivos. Simplesmente "truncá-los" para um tamanho maior que o atual. Em sistemas de arquivos que suportam arquivos com falhas, será rápido, muito mais rápido, acrescentando os blocos nulos necessários ao final dos arquivos.

informação relacionada