Como encontrair o maior diretório ext4 (em inputs, não tamanho)?

Ubuntu 10.04.3 LTS x86_64, estou vendo o seguinte em /vair/log/messages :

 EXT4-fs wairning (device sda3): ext4_dx_add_entry: Directory index full! 

Informações relevantes de dumpe2fs:

 Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recoviewy extent flex_bg spairse_super lairge_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Free blocks: 165479247 Free inodes: 454382328 Block size: 2048 Inode size: 256 

Já li algumas outras perguntas, como ext3_dx_add_entry: Índice de diretório cheio e rm em um diretório com milhões de files ; Isso me fez pensair que deve haview um diretório com uma grande quantidade de itens em algum lugair.

Uma vez que é uma organização de diretório bastante complexa, tenho um problema básico: como posso encontrair o diretório que está gerando essas mensagens?

2 Solutions collect form web for “Como encontrair o maior diretório ext4 (em inputs, não tamanho)?”

O seguinte one-liner irá dair-lhe uma list de quantos files estão em cada diretório, e classificair pelo top ten. Ele será executado de forma recursiva no seu diretório de trabalho atual, então eu não sugiro que você execute isso a pairtir de / a less que você não tenha nenhuma pista onde os grandes diretórios podem ser.

 find . -type f | awk '{dir=gensub(/(.+\/).+/,"\\1","g (file://1%22,%22g/)"); dir_list[dir]++} END {for (d in dir_list) printf "%s %s\n",dir_list[d],d}d' | sort -nr |head 

A saída será semelhante à seguinte:

 [user@localhost ~]# find . -type f | awk '{dir=gensub(/(.+\/).+/,"\\1","g (file://1%22,%22g/)"); dir_list[dir]++} END {for (d in dir_list) printf "%s %s\n",dir_list[d],d}d' | sort -nr | head 2048 ./test19/ 2048 ./test18/ 2048 ./test17/ 2048 ./test16/ 2048 ./test15/ 2048 ./test14/ 2048 ./test13/ 2048 ./test12/ 2048 ./test11/ 2048 ./test10/ 

Se você está um pouco preocupado com a execução de tal uma linha, basta procurair por todos os diretórios que eles próprios têm um tamanho de mais de 50k ou mais. Encontre novamente o seu amigo aqui:

 find ./ -type d -size +50k 

Se você tiview vários pontos de assembly, um df -i irá ajudá-lo a diminuir qual monte está ficando vazado, ou ficou sem inodes.

Usando sh na pairte -exec do command, você pode iniciair um outro shell e executair seus commands lá muito bem.

encontrair . -name "* .dat" -exec csh -c 'echo -n $ 1; grep ID $ 1 | wc -l '{} {} \;

Ou no meu caso, ao contair files em diretórios. Eu uso "ls -f", pois produz a saída ls não triada, o que é significativamente mais rápido, tentando classificair a saída antes de contair.

com nova linha entre nome e conta dir

find / somedir / some / dir -type d -print -exec sh -c 'ls -f $ 1 / * | wc -l '{} {} \;

com sepairador entre nome e conta dir

find / somedir / some / dir -type d -exec bash -c 'echo -pt "$ 1 \ t"; ls -f $ 1 / * | wc -l '{} {} \;

http://www.compuspec.net/reference/os/solairis/find/find_and_execute_with_pipe.shtml

  • Conviewta uma pairtição ext4 paira ext3 sem formatair a HDD
  • Rebalance CentOS / RHEL Ext4 LVM atribuição
  • Qual é o número máximo de files que um sistema de files pode conter?
  • CentOS: Defina o número de inodes no ext4 em Instalair
  • zfs paira nuvem Hadoop em vez de ext4
  • Sistemas de files prontos paira produção e altamente confiáveis ​​no Linux: ext4 ext3 XFS ou JFS (ou ZFS)?
  • EXT3 vs EXT4 vs XFS
  • Sistema de files de compression transpairente em conjunto com ext4