Removendo dirs com muitos arquivos minúsculos no Lustre

4

Eu tenho um diretório com uma quantidade gigantesca de arquivos muito pequenos que desejo remover e simplesmente removendo o diretório com rm -rf /path/to/the/dir que já está demorando vários dias.

Pode parecer estranho que isso esteja indo devagar, mas o dir não é um dir no sistema de arquivos regular. É um dir em um sistema de arquivos Lustre de um cluster.

Estou executando o comando rm no nó A do cluster que tem o Lustre montado, mas o back-end do Lustre são dois sistemas de arquivos ZFS, um no nó B e um no nó C, para que todo o tráfego de rede possa ser a causa de rm ir devagar.

Alguém sabe maneiras mais rápidas de remover o diretório do que o meu caminho?

    
por Eduardo J. Culpepper 12.06.2016 / 13:44

1 resposta

5

Vários comandos GNU, como tar e rm, são ineficientes quando operam em uma grande classe de arquivos no Lustre . Por exemplo, com milhões de arquivos, rm -rf * pode levar dias e ter um impacto considerável no Lustre para outros usuários.
A razão está no tempo que leva para expandir o curinga.

Uma maneira melhor de fazer isso é gerar uma lista de arquivos a serem removidos ou tarados e executá-los um de cada vez, ou em pequenos conjuntos.

Uma boa maneira de revisar os arquivos antes que eles sejam excluídos é a seguinte:

$ lfs find <dir> -t f > rmlist.txt  
$ vi rmlist.txt  
$ sed -e 's:^:/bin/rm :' rmlist.txt > rmlist.sh  
$ sh rmlist.sh    

# the directory structure will remain, but unless there are many directories, we can simply delete it:  
$ rm -rf <dir>  

Algumas das referências úteis para o Lustre IO:
1. link
2. link

Obrigado!

    
por 20.10.2016 / 07:30