Combinando SSD + HDD em uma única partição grande e rápida?

2

Então eu tenho um desktop com um SSD rápido e HDD grande. Estou tentando obter um zpool grande e rápido bem configurado.

Eu li que posso dividir partições separadas no SSD para o ZIL e o L2ARC, o que parece fazer o que eu quero, exceto que eu tenho que configurar manualmente o tamanho de cada partição. O que eu não gosto é que é um pouco complicado, potencialmente difícil de reconfigurar se eu precisar mudar as partições, e soa como o tamanho máximo do sistema de arquivos é limitado pelo HDD sozinho, já que a intenção é que tudo no ZIL e O L2ARC também precisa chegar ao disco, pelo menos eventualmente. Também não está claro se o L2ARC é mantido após a reinicialização do sistema ou se deve ser preenchido novamente. Também parece ineficiente ter que copiar os dados do ZIL para o L2ARC se eles estiverem no mesmo SSD, ou mesmo no HDD, se não houver atualmente nenhuma pressão sobre quantos dados quentes eu preciso no SSD.

Alternativamente, parece que eu também posso apenas ter 1 partição no SSD e 1 no HDD e adicioná-los a um zpool diretamente sem redundância. Eu tentei isso e percebi velocidades de leitura / gravação sustentadas maiores do que o HDD sozinho pode reunir. Mas eu não sei se tudo está indo para o SSD por enquanto, e tudo irá para o HDD depois que o SSD estiver cheio. Idealmente, eu gostaria de ter o ZFS, de forma transparente, embaralhando os dados nos bastidores para tentar sempre manter os dados quentes no SSD similarmente ao L2ARC, e ter uma quantidade razoável de espaço vazio no SSD para novas gravações. O ZIL deve ser gerenciado automaticamente para ter o tamanho certo e preferencialmente ao vivo no SSD, tanto quanto possível. Se eu for a rota ZIL + L2ARC configurada manualmente, parece que o ZIL só precisa ser (10 seg * velocidade de gravação HDD) grande. Isso maximiza o tamanho do L2ARC, o que é bom. Mas o que acontece se eu adicionar um disco distribuído que duplica efetivamente a velocidade (e a capacidade) do disco rígido?

Resumo das perguntas se estiver usando o SSD para ZIL + L2ARC:

  1. Se eu configurar o SSD para ZIL + L2ARC, qual é a dificuldade de reconfigurá-lo com diferentes tamanhos de partição?
  2. Se eu usar o SSD para o L2ARC, sua capacidade estará incluída na capacidade total do pool disponível ou a capacidade do pool será limitada apenas pelo HDD?
  3. O L2ARC é mantido após a reinicialização do sistema ou precisa ser reapovoado?
  4. Os dados precisam ser copiados do ZIL para o L2ARC, mesmo se ambos estiverem no mesmo SSD físico?
  5. Se o ZIL estiver no SSD e ainda houver muito espaço para que mais tentativas sejam registradas, o ZIL ainda será esvaziado automaticamente para o SSD? Se sim, quando / sob quais circunstâncias?

Resumo das perguntas se estiver usando SSD + HDD em um único zpool:

  1. O ZFS obviamente percebe a diferença de tamanho entre as partições SSD e HDD, mas o ZFS reconhece automaticamente o desempenho relativo das partições SSD e HDD? Em particular,
  2. Como as gravações são distribuídas no SSD e no HDD quando as duas estão relativamente vazias?
  3. O ZFS tenta fazer algo inteligente com o embaralhamento de dados depois que a parte SSD do zpool é preenchida? Em particular,
  4. Se a parte SSD do zpool estiver preenchida, o ZFS já prevê que gravarei mais gravações em breve e tentará mover os dados do SSD para o HDD em segundo plano?
  5. Se a parte SSD do zpool estiver cheia, e eu começar a acessar um monte de dados do HDD, e não tanto do SSD, o ZFS fará algum esforço para trocar os dados quentes para o SSD?

Finalmente, a questão mais importante:

  1. É uma boa ideia configurar SSD + HDD no mesmo pool ou existe uma maneira melhor de otimizar meu par de unidades para velocidade e capacidade?
por Nicu Stiurca 19.08.2016 / 05:09

2 respostas

4

Embora a resposta de Marco tenha explicado todos os detalhes corretamente, só quero me concentrar na sua última pergunta / resumo:

Is it a good idea to set up SSD + HDD in same pool, or is there a better way to optimize my pair of drives for both speed and capacity?

O ZFS é um sistema de arquivos projetado para grandes matrizes com muitos discos menores. Embora seja bastante flexível, acho que é sub-ótimo para a sua situação atual e meta, pelas seguintes razões:

  • O ZFS não reorganiza dados já gravados. O que você está procurando é chamado de unidade híbrida , por exemplo, o Fusion Drive da Apple permite fundir vários discos e seleciona automaticamente o local de armazenamento para cada bloco com base no histórico de acesso (dados em movimento são feitos quando há sem carga no sistema ou na reescrita). Com o ZFS, você não tem nada disso, nem automaticamente nem manualmente, seus dados permanecem se foram gravados inicialmente (ou já estão marcados para exclusão).
  • Com apenas um único disco, você desiste de redundância e auto-recuperação. Você ainda detecta erros, mas não usa todos os recursos do sistema.
  • Os dois discos no mesmo pool significam uma chance ainda maior de perda de dados (afinal, isso é RAID0) ou corrupção, além disso, seu desempenho será insignificante devido aos diferentes tamanhos de unidade e velocidades de disco.
  • HDD + SLOG + L2ARC é um pouco melhor, mas você precisa de um SSD muito bom (melhor dois diferentes como o Marco disse, mas um SSD NVMe é um bom e caro compromisso) e a maior parte do espaço é desperdiçado: 2 para 4 GB para o ZIL são suficientes, e um L2ARC grande só ajuda se sua RAM estiver cheia, mas precisa de quantidades mais altas de RAM. Isto leva a uma espécie de catch-22 - se você quiser usar o L2ARC, você precisa de mais RAM, mas você pode simplesmente usar a própria RAM, porque é o suficiente. Lembre-se, apenas blocos são armazenados, então você não precisa tanto quanto você diria, olhando para arquivos simples.

Agora, quais são as alternativas?

  • Você pode dividir tendo dois pools. Um para o sistema, um para dados. Desta forma, você não tem nenhum rebalance automático e nenhuma redundância, mas sim um sistema limpo que pode ser estendido facilmente e que não tem problemas com o RAID0.
  • Compre um segundo HDD grande, crie um espelho, use o SSD como você descreveu: elimina o problema de discos e velocidades de disco de tamanhos diferentes, oferece redundância, mantém o SSD flexível.
  • Compre os SSDs n e faça o RAIDZ1 / 2/3. SSDs menores são bastante baratos hoje em dia e não sofrem atrasos de reconstrução, tornando o RAIDZ1 interessante novamente.
  • Use outro sistema de arquivos ou gerenciador de volume com recursos híbridos, o ZFS no topo, se necessário. Isso não é visto como ideal, mas também não funciona com dois discos vdevs em um pool ... pelo menos você obtém exatamente o que deseja e algumas coisas boas do ZFS (instantâneos etc.) no topo, mas eu não faria isso. conte com o desempenho estelar.
por 19.08.2016 / 14:54
2
  1. If I set up SSD for ZIL + L2ARC, how hard is it to re-set it up with different partition sizes?

Não é recomendado colocar ZIL e L2ARC no mesmo disco. O ZIL e o L2ARC competirão por recursos e poderão ter um desempenho ruim. Portanto, para um melhor desempenho, use dois discos individuais e certifique-se de realmente se beneficiar de um deles, ZIL e L2ARC. O ZIL é usado para gravações de sincronização. Se o seu fluxo de trabalho tiver uma baixa taxa de gravação de sincronização, você provavelmente não precisará de um ZIL.

Além disso, os requisitos de SSD para ZIL e L2ARC não são exatamente os mesmos. O ZIL deve ter baixa latência e alta IOPS (por exemplo, ZeusRAM) e geralmente é de baixa capacidade. O L2ARC, por outro lado, deve ser de maior capacidade (dependendo da quantidade de RAM).

O ZIL e o L2ARC podem ser separados do conjunto, portanto, não deve ser muito difícil reparticionar o disco. Aqui está um blog que descreve um par ZIL / L2ARC espelhado no FreeBSD. No Linux pode ser um pouco diferente, mas julgue a si mesmo que isso é difícil .

Usando um par de SSDs para ZIL e L2ARC no FreeNAS

  1. If I use SSD for L2ARC, is its capacity included in total available pool capacity, or is the pool capacity limited by HDD alone?

A capacidade do pool é limitada apenas pelo HDD.

  1. Is L2ARC retained after system reboot, or does it have to be re-populated?

As implementações atuais não retêm o L2ARC após a reinicialização. Mas há uma solicitação de recursos e ela provavelmente será implementada em algum momento no futuro.

L2ARC Persistente

  1. Does data have to be copied from ZIL to L2ARC even if both are on same physical SSD?

Não é assim que funciona. O ZIL e o L2ARC servem diferentes propósitos e os dados não se movem diretamente do ZIL para o L2ARC.

  1. ZFS obviously notices the difference in size between SSD and HDD partitions, but does ZFS automatically recognize the relative performance of SSD and HDD partitions? In particular,

Até onde eu sei, o desempenho da unidade não é levado em conta quando as gravações são distribuídas.

  1. How are writes distributed across the SSD and HDD when both are relatively empty?

Isso depende do layout do pool (espelhos, RAIDZ) e do tamanho relativo da unidade. Unidades maiores são favorecidas no RAIDZ.

  1. Does ZFS try to do anything smart with data shuffling once the SSD part of the zpool fill up? In particular,

Sim, mas somente se você usar o SSD como L2ARC, é exatamente para isso que o L2ARC foi projetado.

  1. If the SSD part of zpool is filled up, does ZFS ever anticipate that I will have more writes soon and tries to move data from SSD to HDD in the background?
  2. If the SSD part of zpool is filled up, and I start accessing a bunch of data off HDD, and not so much off SSD, does ZFS make any effort to swap the hot data to SSD?

Veja acima, use o SSD como L2ARC.

Ainda melhor não é confiar no L2ARC, em vez de fornecer ARC suficiente (= mais RAM) para não requerer um L2ARC.

    
por 19.08.2016 / 09:39

Tags