Substituição planejada de disco em um nó
A substituição planejada é feita enquanto o disco ainda está funcionando: ele chegou ao fim da vida útil, seu modelo não é mais suportado ou ele apresenta sinais de falha iminente. Ela difere da substituição de emergência em um ponto importante: quem determina a sequência é você, e não uma falha. Isso significa que você pode preparar um disco substituto, acender o indicador no gabinete correto e substituir o disco sem deixar o pool sem redundância nem por um minuto.
No modelo do vStack Center, um disco tem três atributos independentes. Confundi-los é a principal fonte de erros neste procedimento. Nenhum deles pode ser deduzido de outro.
| Atributo | Onde é visível | O que significa | O que o altera |
|---|---|---|---|
| Integridade | Coluna Status na aba Disk props | O estado real do disco | O nó, com base nas condições reais |
| Papel | Somente pela API | Papel do disco: livre, particionado, membro de pool, spare | Consulta ao disco, marcação como spare, remoção do rótulo de spare, substituição |
| Online no cluster | Somente pela API | O disco é disponibilizado na fabric do cluster e fica visível para todos os nós | Colocação do disco online no cluster e remoção do disco do cluster |
A substituição em si é uma única operação. Ela não "remove" o disco do gabinete: ela muda o pool para o dispositivo substituto e inicia o resilver. O disco antigo é removido fisicamente depois, quando o pool não o usa mais.
As operações com discos físicos, exceto o acendimento de indicadores, não estão disponíveis na interface web. Um administrador usa a API para substituir um disco, marcá-lo como spare e removê-lo do cluster — consulte a referência da API. A interface tem outra finalidade neste procedimento: mostrar o disco, sua localização no gabinete, a integridade do pool e o status do resilver.
A substituição é a operação mais perigosa do subsistema de discos, por isso tem sua própria proteção contra perda de dados. Antes de enviar o comando, o vStack Center consulta o nó sobre o papel real do disco substituto e só envia o comando se o disco substituto estiver livre: spare ou não utilizado. Se o disco substituto estiver em uso, se o estado dele não puder ser determinado ou se o dispositivo com defeito e o novo dispositivo forem o mesmo, a substituição é rejeitada antes de o comando ser enviado ao nó. Substituições simultâneas no mesmo pool não são permitidas.
Todos os comandos do subsistema de discos são assíncronos: um comando aceito significa "encaminhado ao agente do nó". O resultado real chega na resposta do nó e fica visível na próxima vez que você ler a lista de discos ou o estado do pool.
Pré-requisitos
- O papel Cluster master (role_id=1), necessário para todas as operações com discos físicos;
- A flag
feature.physical_disc_management: sem ela, todo o subsistema de discos fica indisponível. A flag está nas opções do cluster; - Um disco substituto no mesmo nó: livre ou já marcado como spare. Um disco substituto em outro nó não pode ser usado; a substituição opera dentro de um único nó;
- O nome do pool e o caminho do dispositivo a ser substituído são conhecidos;
- Nenhuma outra substituição está em andamento no pool: apenas uma substituição por pool de cada vez;
- vStack Center versão 3.0.5: as operações com discos físicos foram introduzidas nesta versão.
Etapa 1. Encontre o disco e sua localização no gabinete
Identifique o disco de três formas: pela entrada na lista de discos, pelo caminho do dispositivo (exigido pelo comando de substituição) e pela localização no gabinete, para remover o disco correto.
-
Abra Provider Data Center → Server Nodes e selecione o nó; depois, expanda a seção Disks. A mesma lista, filtrada por pool, está disponível no cartão do pool, na seção Pool Disks. Abra o pool a partir da tabela ZFS pools em Storage Resources.
-
Alterne entre as abas: elas mostram visões diferentes da mesma lista. A coluna ID relaciona as linhas entre todas as abas, e há uma busca acima da tabela (Search in table).
Aba Colunas Finalidade nesta etapa Disk props ID, Model, Size (GB), Status Identificar o modelo, o tamanho e a integridade ZFS props Pool name, Vdev_pool_name, Vdev_guid, Vdev_pool_guid Certificar-se de que o disco pertence ao pool correto Placement Enclosure_device, Enclosure_id, Dev_index, Device Encontrar o gabinete e o slot LED on panel Led_fault, Led_locate Verificar se o indicador está aceso Timestamps Created, Last_seen Determinar se o registro do disco está atualizado -
Anote o nó e Device para o comando de substituição, e Enclosure_device e Dev_index para acender o indicador. Os campos Pool name e Vdev_pool_name preenchidos confirmam que o disco é membro de um pool, e não um disco livre.
Essas tabelas não mostram o papel do disco nem a flag "online no cluster"; a API os fornece. Verifique-os antes da substituição: o papel determina qual disco pode ser usado como substituto.
Etapa 2. Acenda o indicador do disco no gabinete
Escolher o slot errado custa um segundo disco, por isso acenda o indicador antes de ir à sala de servidores. Há dois indicadores: localização ("é este") e falha.
- Na seção Disks do cartão do nó, vá para a aba Front view ou Inner view. Cada disco tem ali botões de indicador de localização e de falha.
- Ligue o indicador de localização do disco a ser substituído.
- Verifique se o indicador está realmente aceso na aba LED on panel, nas colunas Led_fault e Led_locate.
Você pode executar a mesma operação pela API. Nesse caso, informe o nome do gabinete no formato
/dev/sesN, e não como exibido na coluna Enclosure_device. Outro
formato é rejeitado com o código -24307, e um gabinete desconhecido, com -24316.
Etapa 3. Registre a integridade do pool antes da operação
Registre o estado inicial antes de fazer alterações; caso contrário, você não terá com o que comparar após a substituição.
- Abra Provider Data Center → Storage Resources. A tabela ZFS pools contém as colunas GUID, Name, Health, Consuming, Scrubbing, Resilvering, Current node e Capacity (RAW).
- Anote Health, Resilvering e Current node do pool em que o disco será substituído. Inicie a substituição planejada somente em um pool íntegro. Um pool degradado exige outro procedimento, descrito em "Recuperação de um pool degradado".
- Abra o pool e verifique a seção Properties: Capacity, Provisioned, Used e Free indicam se há espaço suficiente para o resilver.
A tabela e a página do pool leem o banco de dados do vStack Center e exibem o último estado registrado. A API fornece a árvore atual do pool com o estado de cada dispositivo. Você precisará dela se as informações da interface divergirem do estado real.
Etapa 4. Prepare o disco substituto
O disco substituto deve estar livre; caso contrário, a proteção bloqueará o comando. "Livre" significa um papel "spare" ou "não utilizado". O papel no banco de dados pode estar desatualizado, por isso atualize-o primeiro consultando o nó diretamente.
- Encontre candidatos na seção Disks do cartão do nó: na aba ZFS props, um disco livre tem os campos Pool name e Vdev_pool_name vazios. Verifique Size (GB): o disco substituto deve ser pelo menos do mesmo tamanho que o disco substituído.
- Atualize o papel do candidato consultando o nó diretamente pela API: o nó informa sobre o disco pelo caminho do dispositivo, e o vStack Center registra o papel atual. Para um disco que ainda não foi inventariado, a consulta não altera nada; primeiro, inventarie esse disco a partir da página do nó.
- Se o disco substituto estiver simplesmente livre, você pode deixá-lo como está: a substituição aceita discos spare e não utilizados. Se você mantém um spare designado no nó, marque o disco como spare pela API. Esta é uma operação destrutiva: o nó grava um rótulo de serviço no disco; por isso, ele recusa a operação em um disco com dados ativos, a menos que a rotulação seja forçada.
- Leia novamente a lista de discos e certifique-se de que o Pool name do disco substituto continua vazio.
Etapa 5. Substitua o disco
Agora emita um único comando. Um administrador o executa pela API. Todas as verificações ocorrem antes de o comando ser enviado ao nó, portanto uma chamada inválida não chegará ao disco.
Prepare o seguinte:
- O nó que contém os dois discos;
- O nome do pool em que a substituição está sendo feita;
- O caminho do dispositivo a ser substituído, da coluna Device;
- O caminho do disco substituto, que deve ser diferente do caminho do dispositivo substituído.
Um comando aceito significa apenas "enviado ao nó". O resultado real chega na resposta do nó. Em caso de sucesso, o novo dispositivo é marcado como membro do pool. Em caso de falha, um erro é retornado, e o disco antigo não é marcado automaticamente como defeituoso: seu papel permanece inalterado.
Etapa 6. Aguarde o resilver
O próprio pool restaura a redundância; o vStack Center apenas exibe o processo.
- Abra Storage Resources e acompanhe as colunas Resilvering e Health do pool em que o disco está sendo substituído. O valor um em Resilvering significa que o pool está restaurando a redundância após a substituição.
- A substituição está concluída quando Resilvering volta a zero e Health permanece íntegro.
- Verifique a composição do pool: no cartão do pool, na aba Placement da seção Pool Disks, o disco substituto deve aparecer no lugar do disco antigo.
O vStack Center não mostra o progresso em porcentagem; há apenas um indicador de que o processo está em andamento. Estime a duração a partir do tamanho do pool na seção Properties.
Etapa 7. Desconecte e remova o disco antigo
Enquanto um disco está online no cluster, o cluster o considera parte do cluster. Antes de removê-lo fisicamente, limpe essa flag. A operação usa a API e remove o LUN da fabric. Especifique o disco pelo número de série (preferível) ou pelo caminho do dispositivo.
Não remova um disco do cluster enquanto ele ainda for membro de um pool ativo: o pool ficará degradado. Verifique a seção Pool Disks para se certificar de que o pool usa o disco substituto, e não o disco antigo. O nó protege layouts de dados ativos e recusará a operação, mas você não deve contar com essa recusa em vez de verificar.
Após a chamada, leia novamente a lista de discos: a flag "online no cluster" do disco foi limpa. Agora você pode remover o disco fisicamente.
Conclusão do trabalho
- Apague os dois indicadores: cartão do nó → seção Disks → aba Front view ou Inner view. Verifique o resultado na aba LED on panel.
- Restaure a reserva de discos spare. O disco substituto agora está no pool, e não resta nenhum spare no nó: coloque um novo disco online no cluster e marque-o como spare pela API.
- Atualize o inventário após as alterações físicas: execute um inventário do nó
para a classe
sese depoiscam. Caso contrário, a lista de discos manterá uma entrada do disco removido com um Last_seen desatualizado. - Verifique o estado final na aba ZFS props: o novo membro do pool tem os campos Pool name e Vdev_pool_name preenchidos, enquanto o Pool name do spare está vazio.
Verificação do resultado
| O que verificar | Onde ver | Resultado esperado |
|---|---|---|
| O pool usa o novo disco | Cartão do pool, Pool Disks → Placement | O disco substituto tomou o lugar do disco antigo |
| O resilver terminou | Storage Resources | Resilvering = 0, Health íntegro |
| O novo disco está registrado como membro do pool | Pool Disks → ZFS props | Os campos Pool name e Vdev_pool_name do disco substituto estão preenchidos |
| O disco antigo foi removido do cluster | Pela API | A flag "online no cluster" foi limpa |
| Os indicadores estão apagados | Seção Disks → LED on panel | Led_fault e Led_locate estão apagados |
| A reserva de discos spare foi restaurada | Pela API | O nó tem um disco com o papel "spare" e Pool name vazio |
Se algo der errado
| O que você vê | Causa | O que fazer |
|---|---|---|
| Código de erro -24907 | O disco substituto não está livre: seu papel não é "spare" nem "não utilizado" | Libere o disco ou escolha outro; atualize o papel consultando o nó diretamente |
| Código de erro -24908 | Não foi possível determinar o estado do disco substituto: o nó não respondeu ou a solicitação excedeu o tempo limite | A substituição foi rejeitada intencionalmente. Verifique a conectividade com o nó e consulte o disco novamente |
| Código de erro -24905 | O dispositivo a ser substituído e o novo dispositivo são o mesmo | Especifique dispositivos diferentes |
| Código de erro -24906 | Já há uma substituição em andamento neste pool | Aguarde o término da substituição atual: uma substituição por pool |
| Código de erro -24902 | O pool está vazio ou não existe no nó | Confira o nome do pool com a coluna Name da tabela ZFS pools; o pool pode não estar importado neste nó |
| Código de erro -24903 | O caminho do dispositivo a ser substituído não foi informado | Use o caminho da coluna Device |
| Código de erro -24904, -24502, -24402, -24803 | A validação do formato do caminho do dispositivo falhou | Use um caminho no formato /dev/daN |
| Código de erro -24504 | Uma operação destrutiva já está em andamento no disco | Aguarde a resposta do nó: duas operações destrutivas não podem ser executadas no mesmo disco |
| Código de erro -24503 | O disco já está marcado como spare | Não é necessário repetir; verifique o papel do disco |
| Código de erro -24603 | O disco não está marcado como spare, portanto não há rótulo a remover | Verifique o papel do disco antes de remover o rótulo |
| Código de erro -24307 | Formato incorreto do nome do gabinete | Use um nome no formato /dev/sesN, e não como exibido na coluna Enclosure_device |
| Código de erro -24316 | O gabinete não foi encontrado | Verifique Enclosure_id e Enclosure_device na aba Placement; se divergirem, colete o inventário novamente |
| Código de erro -24311, -24313, -24315 | O valor do indicador não é 0 nem 1, ou nenhum indicador foi informado | Informe pelo menos um indicador com valor 0 ou 1 |
| Código de erro -24802 | Não foi especificado nem um número de série nem um caminho de disco | Informe pelo menos um identificador do disco |
| Código de erro -24901, -24501, -24601, -24801, -24401, -24301, -24201 | A flag feature.physical_disc_management está desabilitada | Habilite o gerenciamento de discos físicos nas opções do cluster |
| Código de erro -403 | A operação está disponível apenas para o papel Cluster master | Entre com um papel de nível de cluster |
| O comando é aceito, mas nada mudou na lista de discos | O comando apenas foi encaminhado ao agente do nó; o resultado chega depois | Abra as telas novamente; verifique Last_seen para saber se os dados estão atualizados |
| A marcação do disco como spare foi bem-sucedida, mas o papel dele não mudou | O disco ainda não foi inventariado, portanto não há registro em que armazenar o papel | Execute um inventário do nó para a classe cam e tente novamente |
| O pool entrou em DEGRADED depois que o disco foi removido | O disco foi removido antes de o pool mudar para o disco substituto | Recoloque o disco no gabinete e siga o procedimento de recuperação |
| A substituição foi bem-sucedida, mas ainda não há redundância | O pool usa o disco substituto, e não resta nenhum spare no nó | Coloque um novo disco online no cluster e marque-o como spare |
Limitações
Não é possível iniciar uma verificação de integridade do pool (scrub) a partir do vStack Center; essa operação não está disponível. A coluna Scrubbing apenas informa se um processo iniciado no nó está em execução.
O vStack Center também não pode adicionar um disco a um pool como um novo dispositivo. Colocar um disco online no cluster o torna visível para os nós, mas a composição do pool é alterada no nó. Substituir um membro existente do pool é a única operação de composição de pool disponível no vStack Center.
A API fornece a propriedade autoreplace do pool. Se ela estiver desabilitada, um disco spare
não será substituído automaticamente, e a substituição sempre deverá ser iniciada por um administrador.
Veja também
- O modelo da camada de armazenamento e a origem da capacidade e da integridade do pool — "Pools de armazenamento".
- O mapa do pool e as consultas diretas ao nó — "Visualização dos pools do cluster".
- O procedimento de emergência quando o pool já perdeu a redundância — "Recuperação de um pool degradado".
- Colocação dos discos de um novo nó online no cluster — "Colocação de um novo nó em serviço".
Métodos da API
Operações da API nesta página: pd-list, pd-status-map, pd-led, pd-info,
pd-spare, pd-unspare, pd-replace, pd-use, pd-unuse,
pd-pools-status, pool-map-by-guid, pools-get, node-inventory — consulte a
referência da API.