otimizando ext [234] para taxa de transferência de arquivos pequena

3

Eu tenho um sistema que tem uma alta taxa de transferência de arquivos pequenos no disco, ou seja, um grande número de pequenos arquivos são criados, gravados e excluídos em segundos.

Existe alguma opção de montagem ext2 / ext3 / ext4 razoável para melhorar o desempenho? Eu acho que o meta-data journalling resulta em uma enorme queda de desempenho aqui.

    
por Michael 07.08.2012 / 10:40

2 respostas

4

Sim, as operações de metadados vão absolutamente matar você. A opção de montagem mais importante que posso imaginar seria noatime , o que desativa as atualizações de atime (ou "último acesso ao tempo") em todos os arquivos. Isso interromperá uma gravação de metadados para cada acesso de arquivo, o que pode reduzir pela metade sua taxa de E / S (se você ler / gravar cada arquivo uma vez) para centenas de vezes (se você escrever uma vez, ler várias). noatime também implica nodiratime , que desativa atime atualizações apenas nos diretórios. Se isso é um pouco brutal demais (você precisa de atime às vezes), então considere relatime ( mount (8) explica que é melhor do que eu posso).

Em um nível de hardware, sério considere mais memória RAM e um controlador RAID de hardware de cache não volátil. Mais RAM ajuda o kernel a armazenar mais dados, o que reduz (ou pode até mesmo eliminar) a E / S e o controlador RAID de cache NVRAM significa que seus dados estão seguros e protegidos depois de terem sido gravados em flash (o que é rápido) todo o caminho até os discos giratórios (que é slooooow). Você também pode usar SSDs, mas eles ainda são significativamente mais lentos que a NVRAM.

    
por 07.08.2012 / 10:42
1

Eu tenho um Synology NAS (DS1815 +, DSM 5.2) executando o ext4 e observei um desempenho ruim em diretórios com milhares de (pequenos) arquivos.

O Synology NAS ext4 não tinha a extensão dir_index configurada por padrão! Eu não tenho idéia de porque a Synology faz isso, porque o recurso dir_index só salta para diretórios grandes. Em seguida, cria um índice que torna o acesso, a contagem, a iteração, etc. muito mais rápido.

Para verificar se você tem o recurso instalado, use tune2fs -l / dev / yourDev :

tune2fs -l  /dev/vg1/volume_1  | grep features 
Filesystem features:      ... dir_index ...

Se você não vir dir_index na lista de recursos, então você pode adicioná-lo ao seu sistema de arquivos ext3 / 4:

  1. umount / dev / youDev #Desmontar o dispositivo
  2. tune2fs -O dir_index / dev / yourDev #add recurso para FS
  3. e2fsck -D / dev / yourDev # Crie índices

Para um Synology NAS, os passos são:

syno_poweroff_task -d
vgchange -ay
tune2fs -O dir_index /dev/vg1/volume_1
e2fsck -D /dev/vg1/volume_1

O recurso dir_index está disponível para ext3 e ext4 e é geralmente / geralmente um padrão ao criar ext4 em distribuições Linux modernas. No entanto - como mostra este Synology NAS - vale a pena verificar. No meu caso, isso aumenta a pasta rsyncing com 100k (pequenos) arquivos para o NAS de 4Mb / s para 14Mb / s.

Algumas citações de www.debian-administration.org

The most useful tweak you can perform is the way that directory indexes are scanned when looking for files. This is controlled by the option "dir_index". By default this wouldn't be enabled but you can add it by running:

mine:~# tune2fs -O dir_index /dev/sda1

Once you've done this you'll be able to see the updated filesystem flags which are in use:

mine:~# tune2fs -l /dev/sda1 | grep features Filesystem features:
has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file

Once you've done this you should find that listing the contents of directories with large numbers of files becomes faster, and that finding files in directories is also better.

    
por 24.02.2016 / 11:58