Um conjunto de armazenamento ZFS espelhado pode ser clonado rapidamente como um conjunto de backup ao utilizar o comando zpool split.
Atualmente, este recurso não pode ser utilizado para dividir um conjunto raiz de espelhado.
É possível utilizar o comando zpool split para desanexar discos de um conjunto de armazenamento ZFS espelhado para criar um novo conjunto com um dos discos desanexados. O novo conjunto possuirá conteúdo idêntico ao conjunto original de armazenamento ZFS espelhado.
Por padrão, uma operação zpool split em um conjunto espelhado desanexa o último disco do conjunto recém criado. Depois da operação de separação, importe o novo conjunto. Por exemplo:
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool split tank tank2 # zpool import tank2 # zpool status tank tank2 pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 errors: No known data errors pool: tank2 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank2 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors |
É possível identificar qual disco deve ser utilizado para o conjunto recém criado ao especificá-lo com o comando zpool split. Por exemplo:
# zpool split tank tank2 c1t0d0 |
Antes que a real operação de divisão ocorra, os dados na memória são descarregados para os discos espelhados. Depois que os dados são esvaziados, o disco é desanexado do conjunto e atribuído a um novo GUID de conjunto. O novo GUID de conjunto é gerado para que o conjunto possa ser importado no mesmo sistema no qual foi dividido.
Se o conjunto a ser dividido possui pontos de montagem não padrões e o novo conjunto é criado no mesmo sistema, então é necessário utilizar a opção zpool split -R para identificar um diretório raiz alternativo para o novo conjunto para que qualquer ponto de montagem existente não entre em conflito. Por exemplo:
# zpool split -R /tank2 tank tank2 |
Se não utilizar a opção zpool split -R e for possível visualizar que os pontos de montagem entram em conflito quando tentam importar o novo conjunto, importe o novo conjunto com a opção -R. Se o novo conjunto é criado em um sistema diferente, então especificar um diretório raiz alternativo não deve ser necessário a não ser que ocorra um conflito no ponto de montagem.
Revise as considerações a seguir antes de utilizar o recurso zpool split:
Este recurso não está disponível para configurações RAIDZ ou conjunto não redundante de vários discos.
Operações de aplicativo e dados devem ser pausados antes de tentar uma operação zpool split.
Tendo em discos essa honra que, ao invés de ignorar, o comando de cache de gravação de esvaziamento do disco é importante.
Um conjunto não pode ser dividido se o resilvering estiver sendo processado.
Dividir um conjunto espelhado é o ideal quando composto de dois ou três discos, onde o último disco no conjunto original é utilizado para o conjunto recém criado. Então, é possível utilizar o comando zpool attach para recriar o conjunto de armazenamento original espelhado ou converter o conjunto recém criado em um conjunto de armazenamento espelhado. Não existe nenhuma maneira atualmente de criar um conjunto espelhado novo de um conjunto espelhado existente ao utilizar este recurso.
Se o conjunto existente é um espelho tridirecional, então o novo conjunto conterá um disco depois da operação de divisão. Se o conjunto existente é um espelho bidirecional, então o resultado é de dois conjuntos não redundantes de dois discos. Será necessário anexar dois discos adicionais para converter os conjuntos não redundantes para conjuntos espelhados.
Uma boa maneira de manter os dados redundantes durante uma operação de divisão é dividir um conjunto de armazenamento espelhado que é composto de três discos para que o conjunto original seja composto por dois discos espelhados depois da operação de divisão.
No exemplo a seguir, um conjunto de armazenamento espelhado chamado trinity, com três discos, c1t0d0, c1t2d0 e c1t3d0, é dividido. Os dois conjuntos resultantes são os conjuntos espelhados trinity, com discos c1t0d0 e c1t2d0, e o novo conjunto, neo, com disco c1t3d0. Cada conjunto possui conteúdo idêntico.
# zpool status trinity pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors # zpool split trinity neo # zpool import neo # zpool status trinity neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors pool: trinity state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM trinity ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors |