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
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 modowriteback
), 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 bcache
– mdraid
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.
bcache
as costas terão que ser formatadas combcache
– então você ' terá que criar ummd
array, formate o disco único resultante inteiramente como uma partiçãobcache
, vincule-o à sua unidade de cache e vá de lá ou formate muitos discos combcache
, 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 .