DEV Community

Emanuel Cascone
Emanuel Cascone

Posted on • Edited on

Tornando hds velhos mais rápidos que um ssd - criando "cluster" de hds

Algumas criptomoedas utilizam hds para minerar - sim, é estranho mas isso acontece - e elas precisam de velocidade para fazer tal, então se você for um minerador ou precisar de um super ssd, cá está este artigo para você.

Então, como auxílio, descrevo neste artigo as principais formas de usar o máximo de desempenho de HDS de modo a terem uma velocidade semelhante a de um ssd ao mesmo tempo que possuem uma quantidade de gigas maiores.

Para tal, usaremos o conceito descrito como RAID 0 e iremos criar uma hierarquia de LVMs.

Em resumo, RAID 0 é distribuir os arquivos em blocos intercalados em cada HD, assim é possível fazer com que a soma da velocidade dos HDS seja equivalente a velocidade total de leitura e gravação dos blocos. A imagem a seguir demonstra a organização em blocos:

E a LVM(LOGICAL VOLUME MANAGER) tem como função principal criar volumes lógicos, ou seja, descrever ao sistema operacional a existência de um amontoado de discos que juntos formam somente um.

Se os HDS tiverem velocidades diferentes, recomendo que leiam até o final do artigo

Pronto, entendido os termos acima, temos que criar um ambiente que seja do tamanho necessário para fazer coisas do dia a dia, acredito que 256GB sejam o suficiente.

Tendo já instalados os pacotes necessários(lvm2), pode-se dar início ao processo de desenvolvimento.

Assim, inicia-se testando a velocidade dos HDS que serão utilizados. Caso haja HDS com o dobro de velocidade dos demais, separe-os e mais abaixo será descrito o que fazer com eles.

Tendo separados os HDS e agrupados por velocidades semelhantes, cria-se partições da forma que será mencionada e usa os comando para criar uma LVM:

#pvcreate /dev/[caminhoDoHD2] /dev/[caminhoDoHD2]...

#vgcreate [nome do grupo] /dev/[caminhoDoHD2] /dev/[caminhoDoHD2]...

#lvcreate --type raid0 -L[TamanhoDaLVM] --stripes [ÑumeroDeHDsMaisLentos] --stripesize [TamanhoDosBlocos] -n [NomeDaLVM] [NomeDoGrupo]

mkfs.ext4 /dev/[NomeDoGrupo]/[NomeDaLVM]

pvcreate, cria rótulos físicos.

vgcreate, cria grupos de partições.

lvcreate, cria disco lógico.

mkfs.ext4, monta o disco com o formato ext4

Para determinar o tamanho dos blocos e da LVM a ser utilizada, é necessário levar em consideração a quantidade e velocidade dos HDs disponíveis. Antes de iniciar o processo de criação da LVM, é importante ter em mente que a RAID 0 geralmente opera com a velocidade do HD mais lento, ou seja, a velocidade média de leitura e gravação será comparável à multiplicação da velocidade do HD mais lento com a quantidade de HDs na LVM (VelocidadeHDMaisLento * QuantidadeDeHDs = Velocidade da LVM).

Dessa forma, é preciso criar uma hierarquia de LVMs. Por exemplo, considerando HD1, HD1, HD1, HD1, HD2, HD2, sendo que HD2 possui o dobro da velocidade de HD1, podemos criar a seguinte configuração:

  • LVM1 = (HD1 + HD1 + HD1 + HD1) = 4 * velocidadeHD1
  • LVM2 = (HD2 + HD2) = 4 * velocidadeHD1
  • LVMMaster = LVM1 + LVM2 = 8 * velocidadeHD1

No entanto, é importante notar que, para que a RAID 0 funcione corretamente, os HDs devem ser particionados de acordo com o grupo em que serão inseridos, para que a LVMMaster tenha o tamanho de 256G. Assim, o HD de cada grupo deve ser particionado de modo que sua respectiva LVM tenha exatamente a metade do tamanho da LVMMaster.

Além disso, é importante considerar o tamanho do bloco. Recomenda-se que todas as LVMs tenham um tamanho de bloco de 256, uma vez que os arquivos gerados durante a plotagem são grandes.

Uma vantagem desse processo é que é possível usar até pendrives, o que pode aumentar a velocidade da LVM e torná-la comparável à SDDS.

Em caso de dúvidas, estou à disposição para responder nos comentários.😬

Top comments (0)