Estou tentando agrupar uma operação que conta arquivos em uma determinada subpasta de uma unidade NFS remota.
O cliente NFS é o Ubuntu 16.04 LTS. Eu tenho muito poucas informações sobre o servidor NFS remoto. É um NFS v3. É montado anonimamente em rw e sua autenticação é baseada em IP. A largura de banda do cliente é 100/10 e pode carregar em torno de 1,1 MB/s. O provedor anuncia que seu armazenamento de backup é garantido de 1 Gbit/1 Gbit. O tamanho utilizável do volume é <4 TB, a contagem esperada de arquivos é estimada em > 600.000 unidades.
-- Editar #1 :
Os IOPs garantidos anunciados do armazenamento são 2000, mas testar o fs remoto resulta em 7-800iops.
As opções de montagem usadas no cliente são as sugeridas pelo provedor:
rsize=8192,wsize=8192,timeo=14,intr
Para realizar a contagem, minha escolha foi este script:
#!/bin/bash
if [[ $# -eq 0 ]] ; then
echo 'no folder supplied, use $0 /path/to/folder'
exit 0
else
COUNT=$(find $1 -type f|wc -l)
echo $1 contains $COUNT files.
fi
exit 0
Eu tentei em minha casa, e obviamente foi muito rápido, produzindo:
/home/user contains 12 files.
Quando tento obter essa estatística da unidade NFS remota, o script fica "para sempre".
--Editar #2:
Eu tentei remover o |wc -l
e adicionar >> $LOGFILE
no final do find
, mas parece que ele trava aleatoriamente em um intervalo de 2 a 24 horas e, quando trava após muito tempo, a lista está longe de ser completa.
Achei que poderia dividir o achado em pedaços, para evitar esse problema, talvez produzindo uma lista de todas as subpastas ...
for d in $FOLDERLIST;
do
find $d -maxdepth 0 -type f|wc -l >> $TMPLOG
done
..e então some todos os números em $TMPLOG, então talvez em operações menores o script não trave.
PERGUNTA: Estou usando a melhor maneira possível de economizar recursos para realizar essa contagem? Talvez haja uma maneira mais barata do find
que obter a contagem de arquivos?
Estou considerando que talvez seja a abordagem errada para contar arquivos, pois vi quanto tempo leva na unidade remota, deve haver uma sobrecarga... Lembro-me de quando tive alguma experiência em sistemas de arquivos remotos montados via curlftpfs. Enorme sobrecarga, enorme atraso.
NFS deveria ser muito melhor sobre isso, mas neste caso não parece!
Você pode tentar com
rsync
, usando algo semelhante a:As duas primeiras linhas da saída serão assim:
O primeiro valor é a soma das entradas dirs+files, enquanto o segundo é apenas o número de arquivos