armazenamento do tipo ZFS / Btrfs / LVM2 com recursos avançados no Linux? [fechadas]

2

Eu tenho 3 unidades de disco rígido SATA internas de 7200 RPM idênticas em uma máquina Linux. Estou procurando uma configuração de armazenamento que me dê tudo isso:

  • Diferentes conjuntos de dados (sistemas de arquivos ou subárvores) podem ter diferentes níveis de RAID para que eu possa escolher desempenhos, sobrecarga de espaço e compensações de risco de maneira diferente para diferentes conjuntos de dados enquanto possuo alguns discos físicos (dados muito importantes podem ser 3xRAID1 , dados importantes podem ser 3xRAID5, dados reprodutíveis sem importância podem ser 3xRAID0).
  • Se cada conjunto de dados tiver um tamanho explícito ou um limite de tamanho, a capacidade de aumentar e diminuir o limite de tamanho (off-line, se necessário)
  • Evite módulos fora do kernel
  • R / W ou instantâneos somente leitura de COW. Se for um instantâneo em nível de bloco, o sistema de arquivos deverá ser sincronizado e desativado durante um instantâneo.
  • Capacidade de adicionar discos físicos e, em seguida, aumentar / redistribuir os volumes RAID1, RAID5 e RAID0 para aproveitar o novo eixo e garantir que nenhum eixo esteja mais quente do que o restante (por exemplo, no NetApp, desenvolvendo um grupo RAID-DP por alguns discos não equilibrará o I / O entre eles sem uma redistribuição explícita)

Não é obrigatório, mas é bom para quem tem:

  • Compressão transparente, por arquivo ou subárvore. Melhor ainda se, como a NetApps, analisa os dados primeiro para compressibilidade e apenas comprime os dados compactáveis
  • Desduplicação que não tem grandes penalidades de desempenho ou exige quantidades obscenas de memória (a NetApp faz a desduplicação programada nos fins de semana, o que é bom)
  • Resistência à corrupção de dados silenciosa como o ZFS (isso não é necessário porque nunca vi o ZFS relatar qualquer corrupção de dados nesses discos específicos)
  • Camada de armazenamento, seja automática (com base em regras de armazenamento em cache) ou regras definidas pelo usuário (sim, tenho discos totalmente idênticos agora, mas isso me permitirá adicionar um cache SSD de leitura / gravação no futuro). Se forem regras definidas pelo usuário, essas regras devem ter a capacidade de promover o SSD em um nível de arquivo e não em um nível de bloco.
  • Embalagem com espaço eficiente de arquivos pequenos

Eu tentei o ZFS no Linux, mas as limitações eram:

  • A atualização é um trabalho adicional porque o pacote está em um repositório externo e está vinculado a versões específicas do kernel; não está integrado com o gerenciador de pacotes
  • O IOPS de gravação não é dimensionado com o número de dispositivos em um raidz vdev.
  • Não é possível adicionar discos ao raidz vdevs
  • Não é possível selecionar dados no RAID0 para reduzir a sobrecarga e melhorar o desempenho sem discos físicos adicionais ou dar ao ZFS uma única partição dos discos

ext4 no LVM2 se parece com uma opção, exceto que não posso dizer se posso reduzir, estender e redistribuir em novos volumes lógicos do tipo RAID (obviamente, posso experimentar com o LVM em vários arquivos). Tanto quanto eu posso dizer, ele não tem nenhum dos bons para ter, então eu queria saber se há algo melhor lá fora. Eu olhei para LVM perigos e ressalvas mas, novamente, nenhum sistema é perfeito.

    
por Easter Sunshine 09.12.2012 / 04:59

2 respostas

4

Você está pedindo demais. Estes são requisitos irrealistas, especialmente considerando que você está falando sobre um trio de discos de consumo de baixa velocidade. O que você está planejando?

  • Use o ZFS no Linux e QUATRO discos. Se você está falando sobre expansão, você provavelmente tem espaço para quatro discos de dados. Você não menciona sua distribuição Linux, mas as atualizações não foram um problema com o CentOS 6.x. Os espelhos são expansíveis. Conjuntos RAID-Z1 / 2/3 simplesmente não são. Configure a compactação por sistema de arquivos e conclua com ela. Você pode rebalancear dados copiando. Mas planeje melhor, e os problemas de expansão não serão uma limitação. Isso fornece compactação, instantâneos, camadas e integridade de dados. Esqueça a dedução no ZFS. Você provavelmente não precisa disso. Se fizer isso, você deve planejar os requisitos de recursos necessários.

  • Quanto às limitações do ZFS no Linux, você deve compreender os princípios básicos de planejamento de uma configuração de armazenamento do ZFS . Use um dispositivo ZIL para aumentar a IOPS de gravação.

  • Existem soluções RAID de hardware, como o controlador HP Smart Array linha, que permitiria as diferentes proteções RAID em um único grupo de unidades ... Ele automaticamente reequilibra / redistribui dados durante as expansões. Reduções não são possíveis. Você pode exportar unidades lógicas HP como dispositivos de bloco para o ZFS, para que você obtenha os benefícios do sistema de arquivos, mas também o uso inteligente dos dispositivos de hardware subjacentes. No exemplo abaixo, os zpools vol1 e vol2 são compostos de dispositivos únicos que correspondem a unidade lógica 2 e < strong> logicaldrive 3 da saída do controlador HP RAID:

Informações do pool do ZFS:

[root@ZFS-on-Linux ~]# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol1   119G  48.2G  70.8G    40%  1.00x  ONLINE  -
vol2  99.5G  42.6G  56.9G    42%  1.00x  ONLINE  -

Saída do controlador HP RAID:

Smart Array P400 in Slot 8                (sn: P61630G9SVN702)

   array A (SAS, Unused Space: 609621  MB)


      logicaldrive 1 (72.0 GB, RAID 1+0, OK)
      logicaldrive 2 (120.0 GB, RAID 1+0, OK)
      logicaldrive 3 (100.0 GB, RAID 5, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 146 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 146 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 146 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 146 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 146 GB, OK)

Combine os dois acima e receba mais de seus requisitos.

    
por 09.12.2012 / 05:23
2

Essa é uma lista de desejos que você tem.

Linux md RAID ( mdadm ) + LVM vai te dar a maioria dos requisitos e quase nenhum dos bons -haves.

Você pode gravar seus discos em partições. Faça md RAID com diferentes níveis nas diferentes partições. Coloque os volumes md RAID em grupos de volumes LVM, crie volumes lógicos fora dos VGs. Coloque um sistema de arquivos (como ext4) no LV. Você pode inicializar o md RAID1 se ele não tiver o LVM. Portanto, use o RAID1 sem o LVM para / boot. Os volumes md RAID podem encolher e grow compra adicionando discos, assim como LVM e ext4 .

O LVM pode fazer instantâneos. Mas eles não são COW nativos, então existe uma penalidade de desempenho se os instantâneos usam o mesmo discos físicos. Eles são melhores para capturas temporárias pontuais para backup, e não para instantâneos ilimitados como o ZFS.

Poderia ser algo assim:

sda1 + sdb1 + sdc1 = md0 RAID1
sda2 + sdb2 + sdc2 = md1 RAID10 (yes, you can do odd numbered RAID10)
sda3 + sdb3 + sdc3 = md2 RAID5
sda4 + sdb4 + sdc4 = md3 RAID0

md0 = no LVM, format as ext4, mount as /boot
md1 = LVM, divide into two LVs
      Format one LV as ext4, mount as / (root)
      Use other LV for swap
md2 = LVM, create one LV
      make the LV is smaller than the VG, to leave space for snapshots
      Format the LV as ext4, mount as /data
md3 = LVM, one LV taking the whole VG
      Format as ext4, mounts as /stuff_i_want_to_lose
    
por 09.12.2012 / 06:14