
Estou procurando uma maneira de ocupar espaço em um sistema de arquivos AIX sem fazer muito IO.
Eu tentei dd
e lmktemp
. dd
cria um arquivo esparso, mas não bloqueia o espaço. lmktemp
faz o trabalho bem, mas há algum IO e consome um pouco de tempo. Acredito fallocate
que 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.