ecryptfs e muitos arquivos pequenos - desempenho ruim?

3

Eu tenho uma pasta com algumas centenas de milhares de arquivos pequenos, totalizando cerca de 14 GB de dados. Esta é uma pasta no meu diretório pessoal criptografado ecryptfs.

Fazer uma "pasta dush" leva mais de 9 minutos. Fazer um cp -ral para um local não criptografado leva uma hora e 15 minutos. A carga da CPU durante esse tempo é principalmente vinculada a E / S (80% wa no topo)

Fazer uma "du -sh encryptedfolder" leva apenas 15 segundos e um cp -ral para o mesmo local leva apenas 80 segundos. 'encryptedfolder' é a pasta em /home/.ecryptfs/myname/.Private que contém os arquivos criptografados.

Eu estou perplexo como esse sucesso de performance acontece. Esta pasta é backups noturnos via rsync, que agora leva mais de duas horas. Antes de mudar para o ecryptfs, usei o truecrypt e o backup foi executado em 12 minutos.

Por que o ecryptfs é tão lento neste cenário? As operações du -sh e cp -ral não envolvem qualquer descriptografia do conteúdo do arquivo, apenas localizando o nome do arquivo correto. Existe alguma maneira de acelerar isso?

P.S .: Isso é executado no Ubuntu 11.04

    
por Guy 05.03.2012 / 22:29

2 respostas

2

Existem alguns fatores que contribuem aqui.

  1. Obter uma lista de todos os nomes de arquivos em um diretório requer a decodificação, análise e descriptografia dos nomes de arquivos inferiores.

  2. As chamadas stat () de du causa uma pesquisa, que requer alocar um inode eCryptfs, ler parte dos metadados de arquivo inferiores, verificar se ele é um arquivo eCryptfs e depois analisar o tamanho do arquivo não criptografado para defina o campo i_size do inode do eCryptfs. Tenha em mente que ler os metadados do sistema de arquivos inferior envolve a leitura de uma página no cache de páginas do sistema de arquivos inferior.

Por causa do design do eCryptfs, ele tem uma sobrecarga infeliz ao lidar com um grande número de arquivos. Tenho certeza de que há algumas melhorias / aprimoramentos a serem feitos, apesar do design, mas otimizar essa parte do código não tem sido um foco meu anteriormente.

    
por 05.03.2012 / 23:07
0

A resposta simples é que não é. O impacto no desempenho não está no fato de o encryptfs ser lento, mas na necessidade de alocar um grande número de inodes e executar a manutenção do disco para colocar todos os metadados associados aos arquivos no disco um por um.

Se a pasta tiver backups por noite, você pode achar mais útil primeiro "tar" todo o diretório, compactar o arquivo resultante e criptografá-lo (não criptografar e compactar, porque a compactação não funciona em arquivos criptografados ). Dessa forma, você terá um backup que será consideravelmente menor e muito mais rápido para criar e se mover.

    
por 05.03.2012 / 22:37

Tags