É possível aumentar as partições no RAID1

5

Estou pensando em construir um NAS para a casa. Será um servidor simples de arquivo, impressora, rsync e bit-torrent executando o FreeNAS . O servidor terá duas unidades SATA de 3,5 "e planejo espelhá-las usando o software RAID1.

Eu tenho duas perguntas:

  1. Qual sistema de arquivos devo usar, o UFS ou ZFS padrão? Tanto quanto eu entendi de vários posts do blog ZFS é muito memória e CPU com fome, vai funcionar com o VIA C7? Eu gosto da ideia de snapshots do ZFS, mas posso viver sem eles se for muito exigente.

  2. Atualmente, tenho duas unidades: 640 GB e 1 TB. Se eu usá-los no RAID-1, o tamanho total do array será o tamanho mínimo dos dois discos, ou seja, 640 GB. Está tudo bem por enquanto, mas o que acontecerá se em um ano eu tiver uma nova unidade, digamos, de 1,5 TB? A matriz RAID deve ser reconstruída quando eu substituir a unidade menor pela nova, mas será possível aumentá-la de 640 GB para o novo mínimo - 1 TB sem perder os dados?

Obrigado e desculpe se estou fazendo perguntas triviais, sou um cara de software.

UPDATE: Para responder à segunda pergunta, esta postagem do blog explica como aumentar uma partição RAID1 após substituir uma das unidades.

    
por Alexander Kojevnikov 30.10.2009 / 11:55

2 respostas

2

Regras do ZFS, mas é restrito por escolha de hardware ( estabilidade do ZFS ), já que os C7s são 32 bits (a wikipedia afirma que eles usam o Conjunto de instruções x86) O ZFS pode não ser a solução que você procura. Se você decidir de outra forma (ele protege você de corrupção de dados e discos com falhas), há alguns recursos úteis. projetos sobre

RAID array should rebuild when I replace the smallest drive with the new one, but will it be possible to grow it from 640GB to the new minimum - 1TB without losing the data?

Não deve ser um problema (nunca usei o FreeNAS), com controladores RAID de hardware eu fiz isso muitas vezes:

  1. backup de todos os seus dados:)
  2. remova o disco menor da matriz
  3. insira o novo disco
  4. reconstrua a matriz usando o disco original como principal

Como alternativa, se você quiser um redimensionamento dinâmico totalmente indolor da matriz e redundância enorme, obtenha um Drobo modelos mais novos são marcadamente melhores) - você não pode executar isso como um servidor simples no entanto. Assim, você poderia executar um SheevaPlug de baixíssimo consumo como o servidor ( barato como chips ) e ligue o Drobo nele. Essa é a minha solução ultra escalável de baixa potência recomendada (limitada apenas pela capabilidade atual máxima do HDD).

    
por 30.10.2009 / 14:22
2

A partir do kernel linux versão 2.6.11 você pode criar compartilhamentos ext3 redimensionáveis. Recentemente eu fiz exatamente isso que você está perguntando sobre um servidor CentOS 5.4, que tinha um raid1 usando um drive de 300GB e 500GB. Eu queria atualizar o espelho, então comprei uma unidade de 1 TB que substituiria a unidade de 300 GB.

Primeiro, é como eu criei originalmente o raid1 com as unidades de 300 + 500 GB

Eu normalmente uso o fdisk para criar uma única partição em uma unidade, marcando o tipo de partição como fd (linux RAID). Em seguida, uso o mdadm para criar um array raid1 de software.

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdb1

Em seguida, coloco um grupo LVM (denominei-o lvm-raid) no topo da matriz raid1.

vgcreate -s 8M lvm-raid /dev/md0

Determine quantas extensões físicas o Volume Group tem disponível. Você pode usar o comando vgdisplay lvm-raid e procurar a linha "Total PE". No meu exemplo, era 59617. Com essa informação, agora posso criar um volume lógico dentro do grupo de volume lvm-raid.

lvcreate -l 59617 lvm-raid -n lvm0

Por fim, coloco a partição ext3 no volume lógico.

mkfs.ext3 /dev/lvm-raid/lvm0

... E aqui está como migrei o raid1 para o disco de 500 GB + 1 TB

Eu adicionei o drive de 1TB como um hot spare para o raid1 e sincronizei como um membro. Uma vez que foi sincronizado eu falhei e, em seguida, posteriormente, removi a unidade de 300GB. Isso me permitiu trazer o array raid1 para até 500GB, já que o drive de 500GB era agora o menor membro da matriz. Minhas anotações sobre esse passo estão faltando detalhes, mas acho que fiz o seguinte:

mdadm --manage --add /dev/md0 /dev/sda1
mdadm --manage /dev/md0 --fail /dev/hda1

...wait for it to sync...
cat /proc/mdstat
...wait for it to sync...
cat /proc/mdstat

...sync is done...

mdadm /dev/md0 -r /dev/hda1

Aumente o ataque ao máximo. tamanho dos membros restantes da matriz. Neste caso, temos uma unidade de 500GB e 1TB na raid 1, para que possamos aumentar a raid para 500GB.

mdadm --grow /dev/md0 --size=max

Uma vez que o array raid tinha até 500GB, eu executei os seguintes comandos para usar o espaço extra disponível no LVM e, eventualmente, o compartilhamento ext3 real.

Primeiro, consegui o volume físico para usar o espaço extra.

pvresize /dev/md0

Em seguida, executei o comando pvdisplay / dev / md0 para determinar quantas "extensões livres" estavam disponíveis. No meu caso, era 23845. Então eu corri este comando para absorvê-los no volume lógico.

lvextend -l +23845 /dev/lvm-raid/lvm0

Por fim, executei o comando resize2fs para adicionar o espaço extra no compartilhamento ext3.

resize2fs /dev/lvm-raid/lvm0

Veja como é o resize2fs quando está em execução:

resize2fs 1.39 (29-May-2006)
Filesystem at /dev/lvm-raid/lvm0 is mounted on /export/raid1; on-line resizing
required Performing an on-line resize of /dev/lvm-raid/lvm0 to 122095616 (4k) blocks. 
The filesystem on /dev/lvm-raid/lvm0 is now 122095616 blocks long.

E quando tudo estiver pronto, o df agora mostra isso:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/lvm--raid-lvm0
                      459G  256G  180G  59% /export/raid1
    
por 28.12.2009 / 06:53

Tags