Tecnologia recomendada para cache de disco em camadas no linux

2

Eu perguntei isso originalmente no superusuário, mas me ocorre que é mais um tópico de servidor.

Acabei de comprar um Phenom de 6 núcleos com 16G de RAM. Eu uso principalmente para compilação e codificação de vídeo (e web / db ocasional). Eu estou achando que todas as atividades estão ligadas ao disco e eu simplesmente não consigo manter todos os 6 núcleos alimentados. Estou comprando uma invasão SSD para ficar entre o HDD e o tmpfs.

Eu quero configurar um sistema de arquivos "em camadas" onde as leituras são armazenadas em cache no tmpfs, mas as gravações são seguras para o SSD. Eu quero que os arquivos (ou blocos) que não foram lidos recentemente no SSD sejam gravados em um HDD usando uma camada de bloco ou FS compactada.

Então basicamente lê: - Verifique o tmpfs - Verifique o SSD - Verifique o HD

E escreve: - Direto para SSD (por segurança), então tmpfs (para velocidade)

E periodicamente, ou quando o espaço fica baixo: - Mova os arquivos acessados com menos frequência para baixo em uma camada.

Eu vi alguns projetos de interesse. CacheFS, cachefsd, bcache parecem bem próximos, mas estou tendo problemas para determinar quais são práticos. O bcache parece um pouco arriscado (adoção antecipada), o cachefs parece estar ligado a sistemas de arquivos de rede específicos.

Existem projetos "union" unionfs e aufs que permitem montar sistemas de arquivos uns sobre os outros (dispositivo USB em DVD normalmente), mas ambos são distribuídos como um patch e tenho a impressão de que esse tipo de montagem "transparente" tornar-se um recurso do kernel em vez de um FS.

Eu sei que o kernel tem um cache de disco embutido, mas parece não funcionar bem com a compilação. Eu vejo uma melhoria de velocidade de 20x quando eu movo meus arquivos de origem para tmpfs. Eu acho que é porque os buffers padrão são dedicados a um processo específico e a compilação cria e destrói milhares de processos durante uma compilação (apenas adivinhando lá). Parece que eu realmente quero esses arquivos pré-armazenados.

Eu li que o tmpfs pode usar memória virtual. Nesse caso, é prático criar um tmpfs gigante com swap no SSD?

Eu não preciso inicializar o sistema de arquivos em camadas resultante. Eu posso carregar o grub, kernel e initrd de outro lugar, se necessário.

Estou inclinado a usar o ZFS com o l2arc e zil na compactação e desduplicação do SSD e do zfs nas unidades de disco rígido físicas.

Então esse é o pano de fundo. A questão tem vários componentes, eu acho:

* Recommended FS and/or block layer for the SSD and compressed HDD.
* Recommended mkfs parameters (block size, options etc...)
* Recommended cache/mount technology to bind the layers transparently
* Required mount parameters
* Required kernel options / patches, etc..
    
por SpliFF 17.10.2010 / 10:13

1 resposta

0

  • Compilando: Qual é o sentido em escrever qualquer coisa além dos binários para o disco? Use tmpfs completamente para isso e então mova o material compilado para o seu disco.

  • Codificação de vídeo: Sugiro usar o rsync (no modo que transfere diferenças de arquivos parciais) para transferir arquivos durante a codificação para o disco. por exemplo. em um loop de fundo que termina quando um vídeo é feito. A codificação itselv pode ocorrer em tmpfs também.

BTW: Qual distribuição você usa? SuSE e RedHat vêm com / dev / shm montado (padrão: halv de sua RAM com tmpfs).

    
por 14.08.2011 / 22:03