Armazenamento de dados em vários volumes sem striping

1

Eu tenho um servidor de armazenamento em rede com Debian, contendo vários discos rígidos. Essas unidades são montadas em subdiretórios de uma pasta compartilhada de samba. Todos os membros da rede têm acesso total de leitura e gravação.

O problema nesta configuração é a falta de flexibilidade. Os arquivos são armazenados diretamente em uma pasta e, quando a unidade está cheia, os usuários precisam criar uma nova pasta em outro disco rígido.

Qual é possivelmente a melhor solução para obter o espaço distribuído dinamicamente? Isso é com o que eu cheguei até aqui:

  • RAID 0: como cada falha de um único HDD resultaria em perda massiva de dados, o striping não é uma opção
  • RAID 1: minha intenção é reutilizar HDs antigos de tamanhos diferentes, então isso não está funcionando
  • O RAID 5: igual ao anterior, não funciona devido a diferentes tamanhos de HDD
  • LVM: bem legal, já que é extensível, mas existe uma opção para evitar striping? Se não, a falha de um único disco levaria à perda de todos os arquivos armazenados parcialmente neste disco em particular ...
  • btrfs: o gerenciamento de subvolume é bom, mas uma única pasta pode ocupar vários volumes?

Basicamente, eu estou procurando por um sistema tipo LVM sem striping, ou pelo menos a possibilidade de mover todos os arquivos multi-volume manualmente (cron job, etc.) de volta para um único volume.

    
por Finwood 22.07.2014 / 13:42

1 resposta

1

Você pode obter um substituto RAID efetivo diretamente no Linux LVM, sem o mdadm ou um controlador RAID de hardware. Isso permite que você use discos de tamanhos diferentes também.

Você não pode evitar o striping, mas terá faixas redundantes, portanto, uma única falha no disco não perderá nenhum dado.

Simplesmente inicialize todos os discos como volumes físicos LVM, atribua-os ao mesmo grupo de volumes e use os sinalizadores corretos ao configurar volumes lógicos.

-m, --mirrors Mirrors Creates a mirrored logical volume with Mirrors copies. For example, specifying -m1 would result in a mirror with two-sides; that is, a linear volume plus one copy.

Assim, por exemplo, a linha de comando lvcreate -m1 -L 10G -n <name> <volume_group> criaria um volume lógico espelhado ou o equivalente de uma matriz RAID1.

-i, --stripes Stripes Gives the number of stripes. This is equal to the number of physical volumes to scatter the logical volume. When creating a RAID 4/5/6 logical volume, the extra devices which are necessary for parity are internally accounted for. Specifying -i3 would use 3 devices for striped logical volumes, 4 devices for RAID 4/5, and 5 devices for RAID 6.

Se você tiver três discos, 2 seria o número máximo de distribuições (o terceiro é para paridade) e lvcreate --type raid5 -i2 -L 20G -n <name> <volume_group> configuraria o equivalente a três conjuntos RAID5 de disco.

Quando o seu sistema de arquivos é preenchido e você pode adicionar um único disco adicional e estender o LVM e o sistema de arquivos sem criar manualmente novos diretórios e embaralhar os dados.

    
por 22.07.2014 / 13:55