Encontrando o uso de disco para um banco de dados massivo (5 petabytes)

2

Estou procurando o método mais eficiente para determinar o uso do espaço em disco por diretório em um disco de 5 petabytes.

As localizações de diretório que estou tentando analisar são as seguintes:

/disk/user1/task1/ %código% %código% /disk/user1/task2/ etc

Eu preciso encontrar o tamanho de cada tarefa e queria saber qual é o comando mais eficiente para usar.

Atualmente, experimentei /disk/user2/task3/ (parece que levará alguns dias).

Alguém sabe de um método melhor?

Eu não sou o mais adepto desses comandos, então eu apreciaria se as respostas fossem ditas.

    
por James 19.12.2017 / 17:50

2 respostas

0

Eu usaria uma variação de Como obtenho o tamanho de um diretório na linha de comando? -

du -sm /disk/user*/task* | sort -n | tee /tmp/disk-usage.rpt

O que faz três coisas:

  • coletam o uso total do disco ( -s ) para cada um dos diretórios de tarefas em todos os diretórios do usuário, em megabytes ( -m )
  • classifica a saída pela primeira coluna, numericamente; isso coloca os maiores diretórios de tarefas na parte inferior; coloque-os no topo invertendo o tipo com sort -rn
  • envia uma cópia dessa saída para sua tela e para um arquivo em /tmp/disk-usage.rpt

A cópia salva do arquivo evita que você tenha que executar novamente o comando du , a menos que queira, para investigar novamente o próximo maior diretório de tarefas.

    
por 19.12.2017 / 18:53
0

Em situações como esta, a parte lenta não é o tamanho dos arquivos, mas o número de arquivos. ncdu , du e a sua espécie precisam de stat() ing de cada arquivo, então, se houver muitos deles, você terá um tempo ruim.

Se o tamanho do arquivo estiver relacionado ao número de arquivos (por exemplo, se o tamanho do arquivo por arquivo for restrito), você poderá ter alguma sorte contando-os e agrupando primeiro pelo diretório para restringir sua lista. No caso básico, isso não envolve a emissão de stat() , principalmente apenas readdir() .

Infelizmente, ferramentas comuns para isso, como o GNU, encontram e os amigos emitem fstat() para cada arquivo, não importa o que, pelo menos no meu sistema. Você poderia facilmente escrever um pequeno programa em C para contornar isso, usando apenas opendir , readdir e contando o número de objetos retornados.

Se o tamanho do arquivo não estiver relacionado ao número de arquivos, você estará sem sorte. Considere, no futuro, configurar o sistema de arquivos de uma maneira que permita O (1) ou uma contabilidade similar do tamanho do disco usando partições menores, ou usando coisas como subvolumes btrfs (que também possuem a contabilidade O (1)).

    
por 19.12.2017 / 18:52