Melhorando o IO com FlashCache

14

Eu tenho um servidor com 2 HDs (2x 1 TB), rodando em RAID 1 (SW-RAID). Eu quero melhorar o desempenho de E / S usando flashcache. Existem máquinas virtuais KVM em execução, usando LVM.

Com relação a isso, tenho as seguintes perguntas:

  • Isso vai funcionar? flashcachefunciona para dispositivos de bloco, no entanto, todas essas são máquinas virtuais com sua própria configuração.
  • Quanto eu esperaria aumentar o desempenho? A maioria das máquinas virtuais executa sites e alguns jogos de 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? Iria flashcacherecuperar arquivos do disco rígido tradicional e eu poderia simplesmente substituir o SSD?
  • Quanto mais rápido seria writebackem comparação com writethroughe writearound?

Infelizmente, como não tenho acesso a um sistema de teste, poderia instalar flashcacheem um servidor ativo sem desmontar os discos? Encontrei um ótimo tutorial aqui que eu estaria usando.

Devator
fonte
Eu acho que você desfrutaria de um desempenho mais consistente se pudesse usar SSDs como suas unidades principais.
ewwhite
Sem acesso a um sistema de teste? Tudo o que você precisa é de uma estação de trabalho com um HDD, um SSD e uma máquina virtual com dois discos virtuais (um residente em cada dispositivo). Os sistemas de produção não devem ser usados ​​como laboratórios de aprendizagem.
Skyhawk
Link está morto nesse tutorial que você mencionou. Algum outro lugar onde eu poderia encontrar essa informação?
Thaeli # 6/14

Respostas:

18

O Flashcache, para quem nunca viu antes, é um método para estender o cache de blocos do Linux com uma unidade SSD. É mais barato do que executar um servidor com meio TB de RAM apenas para armazenamento em cache.

Isso vai funcionar?

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

Se você estiver usando discos virtuais com backup de arquivo, definitivamente funcionará.

Se você estiver usando discos virtuais suportados por LV, eu não sei.

Quanto eu esperaria aumentar o desempenho?

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ê obtiver um cache perfeito, seu desempenho será semelhante à execução de todo o sistema em SSDs. O que você efetivamente estará fazendo.

Qual é o tamanho do SSD?

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

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

O que acontece se o SSD morrer?

O mesmo acontece quando você diz ao Linux para fazer cache de descargas, mas com um toque. Com os descartes, qualquer gravação não liberada que estiver no cache do bloco será liberada no disco. O que acontece quando o SSD desaparece depende do modo de armazenamento em cache :

Gravação : 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 causando erros nas VMs são muito pequenas.

Gravação : todas as gravações são gravadas no armazenamento primário e armazenadas em cache somente quando lidas. Sem 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 é causar erros nas suas VMs, caso o SSD falhe e eu não usaria esse modo na produção.

Quanto mais rápido o writeback seria em comparação com o writethrough e writearound?

Depende de quanto você está escrevendo. Se suas gravações saturam periodicamente seu armazenamento primário, o aumento de desempenho pode ser bastante significativo. Se você costuma ler 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.

sysadmin1138
fonte
1
Oi sysadmin, obrigado pela sua resposta abrangente. Não vou usá- writebacklo, pois ele pode corromper tudo sem um pouco de BBU. Não usarei o cache do SSD, afinal, apenas um SSD normal. Obrigado novamente!
Devator 19/11/2012
4

Sim, funcionará bem desde que você use os dispositivos de bloco corretos. E há um truque.

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

Um sintoma óbvio deve ser que as ferramentas LVM se queixam de PVs duplicados.

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

A página de LVM.CONF(5)manual explicará melhor do que eu, mas vou deixar um exemplo, se todos os volumes físicos forem suportados pelo flashcache:

filter = [ "a/.*dm.*/" ]
Pierre Carrier
fonte
1

Alguns aplicativos abrem arquivos sem buffer.

http://man7.org/linux/man-pages/man2/open.2.html

O_DIRECT (Desde o Linux 2.4.10) Tente minimizar os efeitos de cache da E / S para e deste arquivo. Em geral, isso prejudicará o desempenho, mas é útil em situações especiais, como quando os aplicativos fazem seu próprio cache. O arquivo E / S é feito diretamente para / dos buffers de espaço do usuário. O sinalizador O_DIRECT, por si só, faz um esforço para transferir dados de forma síncrona, mas não oferece as garantias do sinalizador O_SYNC de que dados e metadados necessários são transferidos. Para garantir E / S síncrona, o O_SYNC deve ser usado além do O_DIRECT. Veja as NOTAS abaixo para uma discussão mais aprofundada.

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

Tagar
fonte