Melhorando o IO com o FlashCache

14

Eu tenho um servidor com 2 HDDs (2x 1 TB), rodando em RAID 1 (SW-RAID). Quero melhorar o desempenho do IO usando flashcache . Há máquinas virtuais KVM em execução, usando LVM .

Sobre isso, tenho as seguintes perguntas:

  • Isso vai funcionar? flashcache funciona para dispositivos de bloco, no entanto, essas são todas as máquinas virtuais com sua própria configuração.
  • Quanto eu esperaria para aumentar o desempenho? A maioria das máquinas virtuais executa sites e alguns jogos host.
  • Qual é o tamanho do SSD? Ter um SSD maior aumentaria o desempenho, já que é capaz de armazenar mais arquivos em cache?
  • O que acontece se o SSD morrer? flashcache recuperaria arquivos do disco rígido tradicional e eu poderia simplesmente substituir o SSD?
  • Qual será o valor mais rápido de writeback em comparação com writethrough e writearound ?

Não tenho acesso a um sistema de teste, por isso, posso instalar flashcache em um servidor ativo sem desmontar os discos? Eu encontrei um ótimo tutorial aqui que eu estaria usando.

    
por Devator 15.11.2012 / 17:22

4 respostas

18

O Flashcache, para quem ainda não viu, é um método para estender o cache de blocos do Linux com uma unidade SSD. É mais barato do que rodar um servidor com meio TB de RAM apenas para cachear.

Will this even work?

Deveria. O cache de blocos do Linux funciona armazenando em cache blocos , não arquivos . Contanto que você não esteja dando às máquinas KVM acesso direto aos dispositivos de bloco (você não está), o Cache de Blocos do Linux estará em jogo. No entanto, se você estiver dando acesso direto ao dispositivo de bloco às máquinas KVM, a resposta será menos clara.

Se você estiver usando discos virtuais lastreados em arquivos, isso definitivamente funcionará.

Se você estiver usando discos virtuais lastreados em LV, não sei.

How much would I expect to increase performance?

Isso é algo que não podemos responder. Depende de uma variedade de coisas. Em resumo, você obterá o melhor desempenho para dimensionar seu SSD para ser maior que o conjunto ativo de blocos. Se você tiver um cache perfeito, seu desempenho será semelhante ao de executar todo o seu sistema em SSDs. O que você efetivamente estará fazendo.

How big does the SSD needs to be?

Descobrir o tamanho exato que você precisa é algo que não podemos ajudar. Mais é melhor, obviamente, mas encontrar a proporção exata entre cache-SSD e armazenamento primário não é uma questão simples.

Para complicar, as gravações são definidas para liberar imediatamente, como certas operações do sistema de arquivos e algumas configurações do banco de dados. Essas gravações serão brevemente armazenadas em cache e seu desempenho não será afetado de forma alguma pela presença ou ausência de flashcache.

What happens if the SSD dies?

O mesmo acontece quando você diz ao Linux para fazer o drop-caching, mas com uma torção. Com os drop-caches, todas as gravações não liberadas que estão no cache de blocos serão liberadas para o disco. O que acontece quando o SSD desaparece depende do modo de armazenamento em cache :

Writthrough : Todas as gravações são gravadas no cache e no armazenamento primário em paralelo, portanto, as chances de uma perda súbita de SSD causar erros nas VMs são muito pequenas.

Writearound : todas as gravações são gravadas no armazenamento primário e armazenadas somente em cache quando lidas. Nenhuma chance de erros nas VMs.

Writeback : Todas as gravações vão primeiro para o cache e são gravadas no armazenamento primário em segundo plano. O mais provável de causar erros em suas VMs, caso o SSD falhe, e eu não usaria esse modo em produção.

How much faster would writeback be in comparison with writethrough and writearound?

Depende de quanto você está escrevendo. Se suas gravações saturarem periodicamente seu armazenamento principal, o aumento de desempenho poderá ser bastante significativo. Se você for principalmente lido com alguma gravação, provavelmente não notará melhorias.

Além disso, o write-back é uma política ruim para o que você está fazendo, portanto, não o use.

    
por 18.11.2012 / 16:30
4

Sim, funcionará bem, desde que você use os dispositivos de bloqueio certos. E tem um truque.

Quando o LVM procura por PVs, ele deve ver a partição através do próprio disco rígido, e também através do dispositivo "virtual" flashcache.

Um sintoma óbvio é que as ferramentas LVM reclamam de PVs duplicados.

A correção, para evitar esses avisos e mais importante, certifique-se de que o dispositivo flashcache é usado pelo LVM2, é adaptar o filtro em /etc/lvm/lvm.conf .

A página LVM.CONF(5) explicará melhor que eu, mas deixarei um exemplo, se todos os volumes físicos tiverem backup de flashcache:

filter = [ "a/.*dm.*/" ]
    
por 21.11.2012 / 02:30
2

Existe também o nível do criador do lessfs. Isso permitirá que você crie dispositivos híbridos entre o SSD e o HDD. O desempenho do nível parece superar o Flashcache.

link

link

// Christian

    
por 24.11.2012 / 02:04
1

Alguns aplicativos abrem arquivos de maneira não protegida por buffer.

link

O_DIRECT (Since Linux 2.4.10) Try to minimize cache effects of the I/O to and from this file. In general this will degrade performance, but it is useful in special situations, such as when applications do their own caching. File I/O is done directly to/from user- space buffers. The O_DIRECT flag on its own makes an effort to transfer data synchronously, but does not give the guarantees of the O_SYNC flag that data and necessary metadata are transferred. To guarantee synchronous I/O, O_SYNC must be used in addition to O_DIRECT. See NOTES below for further discussion.

Por exemplo, isso é muito comum em bancos de dados. Portanto, verifique novamente se o flashcache funciona com este conjunto de aplicativos.

    
por 22.10.2013 / 06:13