bcache em md ou md em bcache

bcache permite uma ou mais unidades de disco rápidas, como baseadas em flash unidades de estado sólido (SSDs) para atuar como cache para uma ou mais unidades de disco rígido mais lentas .

Se bem entendi,

  • um SSD * pode ser atribuído ao cache de múltiplos HDDs de apoio e, em seguida, os dispositivos de cache resultantes podem ser RAIDed com mdadm
    ou
  • múltiplos HDDs podem ser RAIDed em um único dispositivo de apoio md e SSD atribuído ao cache que

Estou me perguntando qual é a abordagem mais sã. Ocorreu-me que aumentar um RAID5 / 6 pode ser mais simples com uma ou outra técnica, mas não certeza de qual!

Existem bons motivos (por exemplo, aumentar o armazenamento de apoio ou qualquer outra coisa) para escolher uma abordagem em vez de outra (para um grande sistema de arquivos não raiz contendo arquivos de apoio VM)?


* por “um SSD” quero dizer algum tipo de dispositivo SSD redundante, por exemplo, um RAID1 de dois físicos al SSDs

Comentários

  • Em ambos os casos, todos os discos que bcache as costas terão que ser formatadas com bcache – então você ' terá que criar um md array, formate o disco único resultante inteiramente como uma partição bcache, vincule-o à sua unidade de cache e vá de lá ou formate muitos discos com bcache, vincule-os à unidade de cache e formate os vários discos como um único array. Em ambos os casos, há vários pontos de possível falha, todos dependentes da interoperabilidade entre dois sistemas de arquivos – sem mencionar o fs final. veja aqui : role para baixo .
  • Graças ao github.com/g2p/blocks , você pode convertê-lo no local, embora haja algumas limitações para isso.
  • @mikeserv Eu entendo tudo isso, este é para um servidor construído especificamente então ' está tudo certo. O que você quer dizer com " dois sistemas de arquivos "? O bcache não é um sistema de arquivos – o único sistema de arquivos que ' terei será o XFS no dispositivo bcache ou mdadm final (dependendo da opção que eu escolher).
  • Obrigado @Adam, a conversão no local não é um problema para mim.
  • @mikeserv não, não é ' t. Sistemas de arquivos (por exemplo, btrfs, xfs, extN etc) vivem sobre dispositivos de bloco. mdadm e bcache funcionam no nível do dispositivo de bloco, não no nível do sistema de arquivos (o btrfs confunde o problema com a violação da camada de ', mas essa é uma conversa completamente separada).

Resposta

Acho que armazenar em cache todo o dispositivo MD faz mais sentido.

Colocar bcache para armazenar em cache o todo o dispositivo md sacrifica toda a ideia de ter raid, porque introduz outro ponto único de falha.

  • Falhas OTH de discos SSD são relativamente raros e bcache pode ser colocado no writethrough / writearound modo (em contraste com o modo writeback), onde não há dados armazenado apenas no dispositivo de cache, e a falha do cache não mata as informações no raid, o que o torna uma opção relativamente segura.

  • Outro fato é que há dados computacionais significativos sobrecarga de RAID-5 suave; ao armazenar em cache cada membro giratório do raid separadamente, o computador ainda precisa recalculará todas as paridades, mesmo em ocorrências de cache

  • Obviamente, você sacrificaria algum espaço SSD caro, se armazenasse em cache cada unidade giratória separadamente. – A menos que você planeje usar o cache ssd invadido.

  • Ambas as opções relativamente não afetam o tempo de processo de crescimento – embora a opção com unidades giratórias sendo armazenadas em cache separadamente tenha potencial para ser mais lento devido a mais tráfego de ônibus.

É um processo rápido e relativamente simples configurar o bcache para remover o drive ssd, quando você precisar substituí-lo. Graças ao bloqueia deve ser possível migrar a configuração do ataque para os dois lados no local.

Você também deve se lembrar que, no momento, a maioria (todos?) ao vivo Distribuições de CD don “t support bcache , então você não pode simplesmente acessar seus dados com essas ferramentas, independentemente do bcachemdraid opção de layout que você escolheu.

Comentários

  • I ' atualizamos a pergunta para deixar claro que ' m não planejo ter um cache SSD não redundante. Seu segundo marcador ponto é um excelente ponto de interesse nt, obrigado por isso. Seu terceiro ponto sobre espaço: você quer dizer porque ' estaria armazenando a paridade no SSD? re seu último parágrafo, eu ' m usando F20, mas eventualmente estarei usando RHEL / CentOS7 ou Debian Jessie (se bcache-tools fizer o corte).
  • @JackDouglas Anúncio 3º item: Sim, exatamente isso. Mas como você planeja usar drives ssd invadidos, isso não ' se aplica a você.
  • Ainda se aplica porque eles ' não será apenas espelhado, mas também precisará armazenar a paridade RAID para as unidades auxiliares. Este não é ' o caso se o RAID for feito sob bcache, o que eu pensei que fosse o seu ponto
  • Eu acredito que você quis dizer o oposto: matriz ssd faz ' t tem que armazenar os discos giratórios ' paridade, se for alimentada por toda a unidade mdraid.
  • sim, isso ' é exatamente o que quero dizer!

Resposta

I ” Acho que a abordagem sensata é armazenar em cache o dispositivo MD resultante.

O bcache foi projetado para passar leituras e gravações sequenciais.

Se você bcache cada dispositivo separadamente, logicamente, vários dispositivos striping em um MD invadido ou despojado, da perspectiva do bcache, estará constantemente gravando blocos aleatórios.

Enquanto um volume de MD em cache parecerá normal, gravando arquivos no volume, em vez de blocos aleatórios em vários dispositivos.

Todo o objetivo da invasão de hardware e software é fazer a divisão de dados no back-end para que os arquivos resultantes tem parece um volume normal.

Isso pode não estar correto (já que os bcache devs podem ser inteligentes e levar em conta esse tipo de situação), mas a coisa lógica ideal a fazer é armazenar os volumes em cache, em vez de bloquear dispositivos.

Comentários

  • também um ponto muito bom
  • Uma grande gravação sequencial em um RAID5 / 6 produz gravações sequenciais em todos os dispositivos componentes. Cada dispositivo componente obtém cada bloco de dados N-1 (ou paridade), mas os dados que ele obtém são sequenciais. Mas você ' está certo de que isso distorcerá as coisas. Se houver alguns pedaços que veem gravações de fração parcial frequentes, resultando em leitura-modificação-gravação de (parte) da fração de paridade, isso pode ser armazenado em cache pelo bcache. Porém, armazená-lo em cache mais alto, antes que a gravação de faixa parcial chegue ao dispositivo MD, seria ainda melhor.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *