Grande parte das informações básicas relacionadas a dispositivos é tratada em Componentes de um pool de armazenamento do ZFS. Depois da criação de um conjunto, é possível efetuar várias tarefas para gerenciar os dispositivos físicos dentro do conjunto.
Anexando e desanexando dispositivos em um pool de armazenamento
Criando um novo conjunto ao dividir um conjunto de armazenamento ZFS espelhado
Colocando dispositivos off-line e on-line em um pool de armazenamento
É possível adicionar espaço de disco dinamicamente a um conjunto ao adicionar um novo dispositivo virtual de nível superior. Este espaço de disco fica disponível imediatamente a todos os conjuntos de dados no conjunto. Para adicionar um novo dispositivo virtual a um pool, use o comando zpool add. Por exemplo:
# zpool add zeepool mirror c2t1d0 c2t2d0 |
O formato para especificar os dispositivos virtuais é o mesmo para o comando zpool create. Os dispositivos são verificados para determinar se estão em uso e o comando não pode alterar o nível de redundância sem a opção -f. O comando também suporta a opção -n para que seja possível realizar uma simulação. Por exemplo:
# zpool add -n zeepool mirror c3t1d0 c3t2d0 would update 'zeepool' to the following configuration: zeepool mirror c1t0d0 c1t1d0 mirror c2t1d0 c2t2d0 mirror c3t1d0 c3t2d0 |
Esta sintaxe de comando pode adicionar dispositivos espelhados c3t1d0 e c3t2d0 à configuração existente do conjunto zeepool.
Para obter mais informações sobre como é realizada a validação de dispositivos virtuais, consulte Detectando dispositivos em uso.
No exemplo a seguir, outro espelho é adicionado à uma configuração espelhada do ZFS em um sistema do Oracle Sun Fire x4500.
# 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 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool add tank mirror c0t3d0 c1t3d0 # 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 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 c0t3d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 errors: No known data errors |
Da mesma forma, os discos extras podem ser adicionados a uma configuração RAID-Z. O exemplo a seguir mostra como converter um conjunto de armazenamento com um dispositivo RAID-Z que contém três discos em um conjunto de armazenamento com dois dispositivos RAID-Z que contém três discos cada.
# zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 c1t4d0 ONLINE 0 0 0 errors: No known data errors # zpool add rzpool raidz c2t2d0 c2t3d0 c2t4d0 # zpool status rzpool pool: rzpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rzpool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c1t3d0 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 c2t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 c2t4d0 ONLINE 0 0 0 errors: No known data errors |
O exemplo abaixo mostra como adicionar um dispositivo de log espelhado a um conjunto de armazenamento espelhado.Para obter mais informações sobre a utilização de dispositivos de log no conjunto de armazenamento, consulte Configurando dispositivos de log do ZFS separados.
# zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors # zpool add newpool log mirror c0t6d0 c0t7d0 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 logs mirror-1 ONLINE 0 0 0 c0t6d0 ONLINE 0 0 0 c0t7d0 ONLINE 0 0 0 errors: No known data errors |
Você pode anexar um dispositivo de registro em um dispositivo existente de registro para criar um dispositivo de registro espelhado. Essa operação é idêntica à anexação de um dispositivo em um pool de armazenamento não-espelhado.
Dispositivos de log podem ser removidos utilizando o comando zpool remove. O dispositivo de log espelhado no exemplo anterior pode ser removido ao especificar o argumento mirror-1. Por exemplo:
# zpool remove newpool mirror-1 # zpool status newpool pool: newpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM newpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 c0t5d0 ONLINE 0 0 0 errors: No known data errors |
Se a configuração do conjunto contém apenas um dispositivo de log, é recomendado remover o dispositivo de log ao especificar o nome do dispositivo. Por exemplo:
# zpool status pool pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 c0t8d0 ONLINE 0 0 0 c0t9d0 ONLINE 0 0 0 logs c0t10d0 ONLINE 0 0 0 errors: No known data errors # zpool remove pool c0t10d0 |
É possível adicionar ao seu conjunto de armazenamento ZFS e removê-los se não forem mais necessários.
Use o comando zpool add para adicionar dispositivos de cache. Por exemplo:
# zpool add tank cache c2t5d0 c2t8d0 # 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 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 cache c2t5d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 errors: No known data errors |
Os dispositivos de cache não podem ser espalhados ou fazer parte de uma configuração RAID-Z.
Use o comando zpool remove para remover dispositivos de cache. Por exemplo:
# zpool remove tank c2t5d0 c2t8d0 # 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 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 errors: No known data errors |
Atualmente, o comando zpool remove suporta apenas remover reservas, dispositivos de log e de cache. Os dispositivos fazem parte da configuração de pool espelhado principal e podem ser removidos usando o comando zpool detach. Dispositivos não-redundantes e RAID-Z não podem ser removidos de um conjunto.
Para obter mais informações sobre como utilizar dispositivos de cache em um conjunto de armazenamento ZFS, consulte Criando um conjunto de armazenamento do ZFS com dispositivos de cache.
Além do comando zpool add, é possível utilizar o comando zpool attach para adicionar um novo dispositivo a um dispositivo existente espelhado ou não espelhado.
Se estiver anexando um disco para criar um conjunto raiz espelhado, consulte Como criar um conjunto raiz espelhado (pós-instalação).
Se for substituir um disco em um conjunto raiz ZFS, consulte Como substituir um disco no pool raiz ZFS.
Neste exemplo, zeepool é um espelho bidirecional existente que é transformado em um espelho tridirecional ao anexar c2t1d0, o novo dispositivo, ao dispositivo existente c1t1d0.
# zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach zeepool c1t1d0 c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 12:59:20 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 592K resilvered errors: No known data errors |
Se o dispositivo existente é parte de um espelho bidirecional, a anexação do novo dispositivo criará um espelho quadridirecional, e assim por diante. Em qualquer caso, o novo dispositivo começa a realizar resilvering imediatamente.
Além disso, é possível converter um conjunto de armazenamento não redundante em um conjunto de armazenamento redundante utilizando o comando zpool attach. Por exemplo:
# zpool create tank c0t1d0 # zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 errors: No known data errors # zpool attach tank c0t1d0 c1t1d0 # zpool status tank pool: tank state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 14:28:23 2010 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 73.5K resilvered errors: No known data errors |
O comando zpool detach pode ser usado para desanexar um dispositivo de um pool de armazenamento espelhado. Por exemplo:
# zpool detach zeepool c2t1d0 |
Entretanto, esta operação falha se nenhuma outra réplica válida dos dados existir. Por exemplo:
# zpool detach newpool c1t2d0 cannot detach c1t2d0: only applicable to mirror and replacing vdevs |
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 |
O ZFS permite que dispositivos sejam colocados off-line ou on-line. Quando o hardware não é confiável ou não funciona corretamente, o ZFS continua a ler ou gravar dados no dispositivo, pressupondo que a condição é apenas temporária. Se a condição não for temporária, é possível instruir o ZFS a ignorar o dispositivo colocando-o off-line. O ZFS não envia solicitações a um dispositivo off-line.
Não é necessário colocar os dispositivos off-line para substituí-los.
É possível utilizar o comando zpool offline quando for necessário desconectar o armazenamento temporariamente. Por exemplo, se for necessário desconectar fisicamente uma matriz de um conjunto de switches Fibre Channel e conectar a matriz a um conjunto diferente, é possível utilizar os LUNs da matriz que foram utilizados nos conjuntos de armazenamento do ZFS. Depois da matriz ser reconectada e estar operacional no novo conjunto de switches, é possível colocar os mesmos LUNs on-line. Os dados que foram adicionados aos conjuntos de armazenamento enquanto os LUNs estavam off-line podem sofrer resilvering nos LUNs depois de serem colocados on-line.
Esta situação é possível, pressupondo que os sistemas em questão reconhecem o armazenamento depois de serem anexados aos novos switches, possivelmente através de controladores diferentes, e os conjuntos são configurados como configurações RAID-Z ou espelhados.
É possível colocar um dispositivo off-line com o uso do comando zpool offline. Se o dispositivo for um disco, ele pode ser especificado pelo caminho ou por um nome abreviado. Por exemplo:
# zpool offline tank c1t0d0 bringing device c1t0d0 offline |
Considere os pontos a seguir ao tornar um dispositivo off-line:
Não é possível colocar um pool off-line no momento em que se torna falho. Por exemplo, não é possível colocar off-line dois dispositivos de uma configuração raidz1, nem colocar off-line um dispositivo virtual de nível superior.
# zpool offline tank c1t0d0 cannot offline c1t0d0: no valid replicas |
Por padrão, o estado OFF-LINEé persistente. O dispositivo permanece off-line quando o sistema é reiniciado.
Para colocar um dispositivo temporariamente off-line, use a opção zpool offline -t. Por exemplo:
# zpool offline -t tank c1t0d0 bringing device 'c1t0d0' offline |
Quando o sistema é reiniciado, este dispositivo volta automaticamente ao estado ONLINE.
Quando um dispositivo é colocado off-line, ele não é desanexado do pool de armazenamento. Se tentar utilizar o dispositivo colocado off-line em outro conjunto, mesmo depois de o conjunto original ter sido destruído, será exibida uma mensagem semelhante à seguinte:
device is part of exported or potentially active ZFS pool. Please see zpool(1M) |
Se desejar utilizar o dispositivo off-line em outro conjunto de armazenamento depois de ter destruído o conjunto de armazenamento original, primeiro coloque o dispositivo online, e então destrua o conjunto de armazenamento original.
Outra forma de utilizar um dispositivo de outro conjunto de armazenamento, enquanto mantém o conjunto de armazenamento original, é substituindo o dispositivo existente no conjunto de armazenamento original por outro dispositivo semelhante. Para obter informações sobre a substituição de dispositivos, consulte Substituindo dispositivos em um pool de armazenamento.
Os dispositivos off-line aparecem no estado OFF-LINE quando é consultado o estado do conjunto. Para obter informações sobre consultas de status do pool, consulte Consultando status de pool de armazenamento do ZFS.
Para obter mais informações sobre a integridade de dispositivos, consulte Determinando o status de integridade de pools de armazenamento do ZFS.
Depois de colocar um dispositivo off-line, ele pode ser colocado novamente on-line com a utilização do comando zpool online. Por exemplo:
# zpool online tank c1t0d0 bringing device c1t0d0 online |
Quando um dispositivo é colocado on-line, quaisquer dados que tenham sido gravados no conjunto são sincronizados novamente com o dispositivo recém disponível. Observe que não é possível utilizar dispositivos on-line para substituir um disco. Se ao colocar um dispositivo off-line, substituir o dispositivo e colocá-lo on-line, ele permanece no estado de falho.
Se tentar colocar um dispositivo falho on-line, será exibida uma mensagem semelhante à seguinte:
# zpool online tank c1t0d0 warning: device 'c1t0d0' onlined, but remains in faulted state use 'zpool replace' to replace devices that are no longer present |
Também pode ser possível visualizar a mensagem de disco falho exibida no console ou escrita no arquivo /var/adm/messages. Por exemplo:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Wed Jun 30 14:53:39 MDT 2010 PLATFORM: SUNW,Sun-Fire-880, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: 504a1188-b270-4ab0-af4e-8a77680576b8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device. |
Para obter mais informações sobre a substituição de um dispositivo falho, consulte Reparando um dispositivo faltando.
É possível utilizar o comando zpool online -e para expandir um LUN. Por padrão, um LUN que é adicionado a um conjunto não é expandido ao seu tamanho total a não ser que a propriedade do conjunto autoexpand esteja ativada. É possível expandir o LUN automaticamente ao utilizar o comando zpool online -e, mesmo se o comando LUN já estiver on-line ou se o LUN estiver atualmente off-line. Por exemplo:
# zpool online -e tank c1t13d0 |
Se um dispositivo for colocado off-line devido a uma falha que cause erros a serem listados na saída zpool status, você poderá limpar as contagens de erro com o comando zpool clear.
Se especificado sem argumentos, este comando limpará todos os erros de dispositivos dentro do pool. Por exemplo:
# zpool clear tank |
Se um ou mais dispositivos forem especificados, este comando limpará somente erros associados aos dispositivos especificados. Por exemplo:
# zpool clear tank c1t0d0 |
Para obter mais informações sobre a limpeza de erros de zpool, consulte Apagando erros transitórios.
É possível substituir um dispositivo em um pool de armazenamento usando o comando zpool replace.
Se estiver substituindo fisicamente um dispositivo por outro dispositivo na mesma localização em um conjunto redundante, então só é preciso identificar o dispositivo substituído. O ZFS reconhece que o dispositivo é um disco diferente no mesmo local em alguns hardwares. Por exemplo, para substituir um disco falho (c1t1d0) ao remover o disco e substituindo-o na mesma localização, utilize a sintaxe semelhante à seguinte:
# zpool replace tank c1t1d0 |
Se estiver substituindo um dispositivo em um conjunto de armazenamento com um disco em uma localização física diferente, é necessário especificar ambos dispositivos. Por exemplo:
# zpool replace tank c1t1d0 c1t2d0 |
Se for substituir um disco no pool raiz ZFS, consulte Como substituir um disco no pool raiz ZFS.
A seguir, as etapas básicas para substituir um disco:
Coloque o disco off-line, se necessário, com o comando zpool offline.
Remova o disco que será substituído.
Insira o disco de substituição.
Execute o comando zpool replace. Por exemplo:
# zpool replace tank c1t1d0 |
Coloque o disco on-line outra vez com o comando zpool online.
Em alguns sistemas, como o Sun Fire x4500, é necessário desconfigurar o disco antes de colocá-lo off-line. Se estiver substituindo um disco na mesma posição de slot neste sistema, então é possível apenas executar o comando zpool replace como descrito no primeiro exemplo nesta seção.
Para um exemplo de substituição de um disco em um sistema Sun Fire X4500, consulte Exemplo 11–1.
Considere o seguinte ao substituir dispositivos em um conjunto de armazenamento ZFS:
Se a propriedade autoreplace do conjunto for definida como on, qualquer dispositivo novo encontrado na mesma localização física que um dispositivo que antes pertencia ao conjunto será automaticamente formatado e substituído. Não é necessário utilizar o comando zpool replace quando esta propriedade estiver ativada. Este recurso pode não estar disponível em todos os hardwares.
O tamanho do dispositivo de substituição deve ser igual ou maior que o menor disco em um uma configuração espelhada ou RAID-Z.
Quando um dispositivo de substituição que é maior no tamanho que o dispositivo que está substituindo é adicionado ao conjunto, não é expandido automaticamente para seu tamanho total. O valor da propriedade do conjunto autoexpand determina se um LUN de substituição é expandido para seu tamanho total quando o disco é adicionado ao conjunto. Por padrão, a propriedade autoexpand é desativada. É possível ativar esta propriedade ao expandir o tamanho do LUN antes ou depois de adicionar o maior LUN ao conjunto.
No exemplo a seguir, dois discos de 16 GB em um conjunto espelhado são substituídos por dois discos de 72 GB. A propriedade autoexpand é ativada depois das substituições do disco para expandir os tamanho completo do LUN.
# zpool create pool mirror c1t16d0 c1t17d0 # zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t16d0 ONLINE 0 0 0 c1t17d0 ONLINE 0 0 0 zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 76.5K 16.7G 0% ONLINE - # zpool replace pool c1t16d0 c1t1d0 # zpool replace pool c1t17d0 c1t2d0 # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 16.8G 88.5K 16.7G 0% ONLINE - # zpool set autoexpand=on pool # zpool list pool NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 68.2G 117K 68.2G 0% ONLINE - |
Substituir muitos discos em um conjunto grande é demorado devido ao resilvering de dados nos novos discos. Além disso, deve ser considerada a execução do comando zpool scrub entre as substituições de disco para garantir que os dispositivos de substituição estejam operacionais e que os dados estejam sendo gravados corretamente.
Se um disco defeituoso foi substituído automaticamente por um sobressalente, pode ser necessário desanexar o sobressalente depois que o disco defeituoso for substituído. Para obter mais informações sobre a desanexação de um sobressalente, consulte Ativando e desativando sobressalentes no pool de armazenamento.
Para obter mais informações sobre a substituição de dispositivos, consulte Reparando um dispositivo faltando e Substituindo ou reparando um dispositivo modificado.
O recurso de sobressalentes permite identificar os discos que poderiam ser usados para substituir um dispositivo falho ou defeituoso em um ou mais pontos de armazenamento. A atribuição de um dispositivo como reserva significa que o dispositivo não é um dispositivo ativo em um conjunto, mas se um dispositivo ativo no conjunto falhar, o reserva substituirá automaticamente o dispositivo falho.
Os dispositivos podem ser designados como sobressalentes nas seguintes situações:
Quando o conjunto é criado com o comando zpool create.
Após o pool ser criado com o comando zpool add.
Dispositivos reservas podem ser compartilhados entre vários conjuntos, mas os sobressalentes não podem ser compartilhados entre vários conjuntos em sistemas diferentes.
Os exemplos a seguir mostram atribuir dispositivos como reservas quando o conjunto é criado:
# zpool create trinity mirror c1t1d0 c2t1d0 spare c1t2d0 c2t2d0 # 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 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t2d0 AVAIL c2t2d0 AVAIL errors: No known data errors |
O exemplo a seguir mostra como atribuir reservas ao adicioná-los a um conjunto depois que o conjunto é criado:
# zpool add neo spare c5t3d0 c6t3d0 # zpool status neo pool: neo state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM neo ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c3t3d0 ONLINE 0 0 0 c4t3d0 ONLINE 0 0 0 spares c5t3d0 AVAIL c6t3d0 AVAIL errors: No known data errors |
Os sobressalentes podem ser removidos de um pool de armazenamento com o uso do comando zpool remove. Por exemplo:
# zpool remove zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t1d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c1t3d0 AVAIL errors: No known data errors |
Um reserva não pode ser removido se estiver sendo utilizado atualmente por um conjunto de armazenamento.
Considere o seguinte quando estiver utilizando reservas ZFS:
Atualmente, o comando zpool remove pode ser utilizado apenas para remover reservas, dispositivos de cache e log.
Para adicionar um disco como um reserva, o reserva deve ter tamanho igual ou maior ao tamanho do maior disco no conjunto. É permitido adicionar um disco menor como um sobressalente de um pool. Entretanto, quando o sobressalente menor é ativado, automaticamente ou com o comando zpool replace, a operação falha com um erro semelhante ao seguinte:
cannot replace disk3 with disk4: device is too small |
Os sobressalentes são ativados das seguintes maneiras:
Substituição manual: substitui um dispositivo falho em um conjunto de armazenamento por um reserva utilizando o comando zpool replace.
Substituição automática: quando a falha é detectada, um agente FMA examina o conjunto para verificar se existem reservas disponíveis. Se existirem, ele substituirá o dispositivo falho por um sobressalente disponível.
Se um reserva atualmente em uso falha, o agente desanexa tal sobressalente, cancelando assim a substituição. O agente tenta, então, substituir o dispositivo por outro sobressalente, se houver um disponível. Este recurso é atualmente limitado pelo fato de o mecanismo de diagnóstico do ZFS emitir falhas somente quando um dispositivo desaparece do sistema.
Se substituir fisicamente um dispositivo falho por um sobressalente ativo, é possível reativar o dispositivo original, utilizando o comando zpool detach para desanexar o sobressalente. Se definir a propriedade autoreplace do conjunto como on, o sobressalente é desanexado e devolvido automaticamente para o grupo disponível quando o novo dispositivo for inserido e a operação on-line terminar.
Substitua manualmente um dispositivo com um reserva utilizando o comando zpool replace. Consulte Exemplo 4–8.
Um dispositivo falho é substituído automaticamente quando um sobressalente está disponível. Por exemplo:
# zpool status -x pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver completed after 0h0m with 0 errors on Mon Jan 11 10:20:35 2010 config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 88.5K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors |
Atualmente, é possível desativar um reserva das seguintes maneiras:
Ao remover o reserva do conjunto de armazenamento.
Ao desanexar um reserva depois que o disco falho é substituído fisicamente. Consulte Exemplo 4–9.
Ao permutar temporariamente ou permanentemente o reserva. Consulte Exemplo 4–10.
Neste exemplo, o comando zpool replace é utilizado para substituir o disco c2t1d0 com o reserva c2t3d0.
# zpool replace zeepool c2t1d0 c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered spares c2t3d0 INUSE currently in use errors: No known data errors |
Então, desanexe o disco c2t1d0.
# zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:00:50 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered errors: No known data errors |
Neste exemplo, o disco falho (c2t1d0) é substituído fisicamente e o ZFS é notificado ao utilizar o comando zpool replace.
# zpool replace zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 90K resilvered c2t1d0 ONLINE 0 0 0 spares c2t3d0 INUSE currently in use errors: No known data errors |
Então, é possível utilizar o comando zpool detach para retornar o reserva para o grupo disponível. Por exemplo:
# zpool detach zeepool c2t3d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed with 0 errors on Wed Jan 20 10:08:44 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 spares c2t3d0 AVAIL errors: No known data errors |
Se deseja substituir um disco falho ao permutar temporariamente ou permanentemente em um reserva que está atualmente substituindo-o, então desanexe o disco original (falho). Se o disco falho é substituído eventualmente, então é possível adicioná-lo de volta ao conjunto de armazenamento como um sobressalente. Por exemplo:
# zpool status zeepool pool: zeepool state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-2Q scrub: resilver in progress for 0h0m, 70.47% done, 0h0m to go config: NAME STATE READ WRITE CKSUM zeepool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c1t2d0 ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 c2t1d0 UNAVAIL 0 0 0 cannot open c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t3d0 INUSE currently in use errors: No known data errors # zpool detach zeepool c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:46:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered errors: No known data errors (Original failed disk c2t1d0 is physically replaced) # zpool add zeepool spare c2t1d0 # zpool status zeepool pool: zeepool state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Wed Jan 20 13:48:46 2010 config: NAME STATE READ WRITE CKSUM zeepool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 70.5M resilvered spares c2t1d0 AVAIL errors: No known data errors |