Migração de disco on-line do ZFS

4

Gostaria de saber se o ZFS pode lidar com o seguinte. Digamos que eu tenha o FreeBSD instalado em um zpool com dois discos físicos de 500GB em uma configuração espelhada. Estes formam a partição raiz, então apenas um máximo de 20GB está sendo usado.

Mais tarde, gostaria de substituir os discos físicos por dois SSDs pequenos em uma configuração espelhada. Existe uma maneira de fazer isso online? Minha idéia era adicionar esses discos ao zpool como espelhos extras, aguardar a conclusão do resilvering e depois remover os drives antigos. O problema é que esses novos discos seriam menores que os originais.

Uma ideia que tive foi apenas particionar os discos de 500 GB, de modo que o ZFS receba, digamos, 30 GB de espaço em cada disco físico, sendo o restante desperdiçado. Dessa forma, os SSDs teriam mais espaço, então eu não chegaria a um problema de encolhimento. O problema é que dessa maneira eu preciso estimar antecipadamente o tamanho dos futuros discos de substituição. Existe uma maneira de evitar isso?

    
por ttt 04.09.2013 / 20:24

2 respostas

5

Você está certo de que, se o vdev for o disco inteiro, quando você alternar para SSDs, eles teriam que ter pelo menos esse tamanho, não é possível "encolher" para discos menores (é claro, você pode aumentar para discos maiores) . Você também está correto em usar partições para que os vdevs sejam menores que os futuros SSDs, e você teria que adivinhar o tamanho desses SSDs.

Como alternativa, se o servidor puder acomodar todos os 4 discos ao mesmo tempo, mesmo que por um curto período de tempo, você poderá criar o zpool da maneira que quiser agora e usar enviar / receber para transferir os dados para os novos SSDs. . Isso exige que todos os dispositivos sejam conectados ao mesmo tempo. Uma pequena ressalva, a operação de envio / recebimento só pode enviar de um instantâneo - para que você não possa duplicar um disco "ao vivo" e precisará fazer adaptações para isso (o tempo de inatividade pode ser bem curto adicionando um pouco de complexidade). / p>

Ainda mais complicado é realmente possível armazenar o "enviar" para um arquivo intermediário em outro disco em algum lugar, então "receber" a partir dele. Então você só precisa de 3 discos no servidor a qualquer momento. E mais complicado ainda, os 4 discos podem estar em servidores diferentes e enviar / receber podem ser canalizados através do ssh ou mesmo do netcat.

    
por 04.09.2013 / 20:40
1

Não consigo pensar em nenhuma maneira óbvia de fazer isso.

Por enquanto, como você precisa particionar os discos raiz de qualquer maneira (para adicionar bootcode), e não soa como algo que deve acontecer com frequência, sugiro apenas criar uma partição pequena (< 20GB) para o pool raiz. Se precisar de espaço extra, você pode criar um segundo pool fora do espaço restante. Quando se trata de colocar os SSDs, basta particioná-los, adicionar bootcode, 'zfs anexá-los' ao pool raiz, então 'zfs separar' os originais (ou 'zfs replace' ao invés de 'zfs attach' e 'zfs detach' ).

    
por 04.09.2013 / 20:37

Tags