Existe alguma maneira de impedir que o Storage Spaces Direct adicione automaticamente discos?

8

Aqui está um problema em um WSFC (Windows Server Failover Cluster) 2016 que hospeda uma Instância de Cluster de Failover SQL (FCI) que emprega o Storage Spaces Direct (S2D). Em cada servidor, após a criação inicial bem-sucedida, o S2D adicionou automaticamente um volume RAID não utilizado ao pool de armazenamento (embora o S2D não possa ser criado em volumes RAID e insista absolutamente em discos não montados). Agora está quebrado, devido a - até onde eu pude descobrir - exatamente isso. Como conseqüência, o disco virtual está offline, derrubando todo o cluster. Ele não volta a ficar on-line devido a um recurso de rede de cluster ausente. Os discos em questão podem ser retirados, mas não removidos. O reparo do disco virtual não é executado, o teste de compatibilidade de cluster reivindica uma configuração inválida.

Esta é uma nova configuração. Então, eu poderia simplesmente excluir o disco virtual, o cluster ou até os servidores e começar de novo. Mas antes de sermos produtivos, preciso ter certeza de que isso nunca mais acontecerá. O sistema disparando no joelho virtual para uma parada fatal, adicionando desnecessariamente e incorretamente um disco não suportado, não é uma plataforma que possamos implantar. Então, principalmente, preciso de uma maneira de impedir que isso aconteça, em vez de repará-lo agora. Meu palpite é que impedir uma configuração do S2D de pegar mais discos do que foi criado seria suficiente. O custo de uma interação potencialmente mais manual durante uma substituição real do disco é insignificante para o clusterf ... que temos aqui. Por mais que eu tenha procurado a documentação até agora, no entanto, não consigo encontrar nenhuma maneira de controlar isso. A menos que esteja faltando alguma coisa, nem o Set-StoragePool,

Qualquer ajuda ou dica seria muito apreciada.

A seguir, são apresentados mais detalhes sobre o exposto acima: Temos duas máquinas servidores HPE DL380 Gen9 duplamente conectadas entre si por Ethernet de 10 GB com capacidade RDMA e via 1 GB à rede do cliente. Cada recurso possui um controlador RAID HP ??? e um simples controlador HBA HP ?? (já que o S2D exige e funciona apenas em discos não montados diretamente conectados). A configuração de armazenamento compreende um OS-RAID no controlador RAID, um Files-RAID no controlador RAID e o conjunto de discos conectados diretamente no HBA destinado ao S2D.

Configurei 2 datacenter do Windows Servers 2016 nos OS-RAIDs, instalei o recurso WSFC, executei e passei no teste de compatibilidade de cluster, incluindo a opção S2D, criei o cluster sem armazenamento, adicionei uma testemunha de compartilhamento de arquivo (em uma máquina separada), habilitei o S2D no pool de armazenamento, que consistia automaticamente em todos os discos não organizados, e em cima desse pool criou um disco virtual do tipo espelho e usou o NTFS como sistema de arquivos, já que esse deveria ser o FS de escolha para uma FCI do SQL instalação.

Em seguida, instalei o SQL 2016 standard edition como um FCI nesse cluster, importei um banco de dados e testei tudo. Tudo estava bem. O banco de dados estava ali e mais rápido do que nunca. O failover forçado e automático foi fácil. Tudo parecia bom.

No dia seguinte, tentamos usar o RAID de arquivos restante. A primeira coisa foi mudar o nível do RAID, pois não gostamos da pré-configuração. Logo após excluir o volume RAID pré-configurado e criar um novo (em cada servidor), detectamos que o cluster estava inoperante. Pelo que pude descobrir até agora, o volume Files-RAID pré-configurado foi entretanto adicionado automaticamente ao pool e, como acabamos de excluí-lo, ele estava ausente no pool. Enquanto verifiquei, encontrei o novo Files-RAID, enquanto ainda estava sendo criado, já mostrado como uma unidade física do pool. Portanto, o pool agora incluía 2 volumes RAID em cada servidor, um dos quais nem existia. Esses volumes (mas não seus discos) são listados pelo Get-PhysicalDisk junto com os discos realmente físicos no HBA, não tendo certeza se isso é regular.

Consegui retirar esses discos físicos (ou seja, aqueles que são realmente os volumes RAID) e agora estão marcados como aposentados. Mas eles ainda estão na piscina e não posso removê-los agora, tentando fazer isso falhar. Um Repair-VirtualDisk deve reconstruir o disco virtual para um estado adequado apenas nos discos restantes (passei por isso: https://social.technet.microsoft.com/Forums/windows/en-US/dbbf317b-80d2-4992- b5a9-20b83526a9c2 / espaço de armazenamento-remova-disco-físico? forum = winserver8gen ), mas esse trabalho termina imediatamente, "com êxito", é claro, sem nenhum efeito.

A tentativa de alternar o disco virtual novamente online falha, informando que um recurso de cluster de rede está indisponível. Pelo que entendi, isso só poderia se referir ao pool de armazenamento (disponível), pois os discos ausentes não são recursos de cluster. O pool não mostra erros para corrigir. A execução do teste de compatibilidade de cluster exige uma configuração não adequada para um cluster.

Não consigo encontrar nenhuma parte que possa se mover mais um centímetro, a coisa toda parece um impasse para sempre. Alguma idéia de como impedir que um WSFC em execução se processe dessa maneira?

Não encontrei nenhuma mensagem de erro que achei particularmente esclarecedora e não queria bombardear ainda mais a página publicando todas elas. Se alguém quiser obter detalhes específicos, entre em contato.

Muito obrigado pelo seu tempo, pessoal!

Karsten

Atualização conforme solicitado pelo Sr. Raspberry insira a descrição da imagem aqui

Karsten Köpnick
fonte
3
Você poderia nos compartilhar uma lista de suas unidades e seus tipos de ônibus? Comando PoweShell: Get-PhysicalDisk -CanPool $true | Sort Model | ft FriendlyName, BusType, CanPool, OperationalStatus, HealthStatus, Usage, SizeAlém disso, há alguma chance de você ter cometido um erro ao reconfigurar o File-RAID atribuindo uma unidade S2D a um novo RAID?
Sr. Raspberry
2
Qual é o objetivo do S2D + SQL Server? Por que você deseja gastar dinheiro em VMs licenciadas ilimitadas se não planeja (na verdade não pode ...) executar nenhuma? O SQL Server 2016 pode executar o AlwaysOn Basic AG, mesmo com o Standard, e você pode economizar MUITO
BaronSamedi1958
@Senhor. Framboesa: atualizei a entrada com a lista de discos físicos. Observe que eu deixei de fora "-CanPool $ true", pois nenhum é poolável.
Karsten Köpnick
3
@ KarstenKöpnick: Bem, eu sugiro que você considere o SQL Server AlwaysOn FCI + StarWind Virtual SAN Free. Essa configuração faria o trabalho melhor no seu caso de cluster de 2 nós por um custo menor e é muito mais fácil de implantar e gerenciar sem esses problemas. starwindsoftware.com/…
Sr. Raspberry
1
"S2D foi o caminho a percorrer parecia" Bem ... Boa sorte com isso :)
BaronSamedi1958

Respostas:

5

Sim, você pode desativar o comportamento do pool automático. A experiência não é ótima, mas certamente é viável e suportada. O nome da configuração e a sintaxe de cmdlet de exemplo estão na seção Configurações deste documento público:

https://technet.microsoft.com/en-us/windows-server-docs/failover-clustering/health-service-overview

Essencialmente, execute isso como administrador:

Cluster Get-StorageSubSystem * | Set-StorageHealthSetting -Name "System.Storage.PhysicalDisk.AutoPool.Enabled" - Valor False

Espero que isto ajude! - Cosmos (@cosmosdarwin), Microsoft PM

Cosmos Darwin
fonte
@ CosmosDarvin: Obrigado! Parece que isso poderia funcionar. Preciso ler um pouco mais sobre as profundezas e entender as implicações, depois vou tentar e relatar.
Karsten Köpnick
@ CosmosDarvin: Muito obrigado. Finalmente, tive a chance de me aprofundar no tópico para descobrir possíveis repercussões. Pelo que sei, com essa opção desabilitada, a única conseqüência seria que os discos precisarão ser adicionados ao pool manualmente com um comando Add-PhysicalDisk. O que é uma boa compensação. Não encontrei nenhuma indicação sobre outras complicações ou desvantagens, por isso tentarei. - Só é necessário documentar a necessidade de adicionar discos manualmente em caso de substituição. - Vou relatar os resultados.
Karsten Köpnick
Relatando os resultados: gostaria de acrescentar que não pude reunir nenhuma experiência da vida real com essa abordagem. Decidiu-se adicionar um gabinete de disco e usá-lo em vez do S2D. Substituições de disco em um RAID desse tamanho são uma tarefa frequente e o requisito de ter alguém com experiência suficiente a qualquer momento para executar uma intervenção do PowerShell, mesmo que documentada, para uma simples troca de disco, era vista como uma interrupção de exibição. Olhando dessa maneira, eu concordo totalmente. Por isso, reinstalamos usando o gabinete e não tivemos problemas desde então. - Obrigado a todos pela ajuda amável e especializada.
Karsten Köpnick 28/11
2

A solução alternativa que encontrei para esse problema é alterar o tipo de barramento dos volumes ou discos RAID, alterando-o de um do tipo suportado para um não suportado.

Você precisará identificar o driver do controlador no Gerenciador de dispositivos e, depois de entrar no registro, encontrar o nome do driver no local abaixo.

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SmartPqi \ Parameters

No meu caso, alterei a chave do registro que corresponde ao SAS para RAID

«BusType» = 0x00000008 (RAID) (em vez de 0x0000000a) (SAS)

reinicie a máquina

Após essa alteração, você poderá ter o pool de armazenamento no subsistema Windows Storage em vez de Espaços de Armazenamento em Cluster

Tenha cuidado se você deseja aplicar esse tipo de solução alternativa, pois não é uma solução validada e pode expor seu ambiente de produção a um alto risco.

DragosT
fonte