Coletar dados de diagnóstico com espaços de armazenamento diretosCollect diagnostic data with Storage Spaces Direct

Aplica-se a: Windows Server 2019, Windows Server 2016Applies to: Windows Server 2019, Windows Server 2016

Há várias ferramentas de diagnóstico que podem ser usadas para coletar os dados necessários para solucionar problemas de espaços de armazenamento diretos e Cluster de Failover.There are various diagnostic tools that can be used to collect the data needed to troubleshoot Storage Spaces Direct and Failover Cluster. Neste artigo, nos concentraremos em Get-SDDCDiagnosticInfo – uma ferramenta de um toque que coletará todas as informações relevantes para ajudá-lo a diagnosticar seu cluster.In this article, we will focus on Get-SDDCDiagnosticInfo - a one touch tool that will gather all relevant information to help you diagnose your cluster.

Considerando que os logs e outras informações que Get-SDDCDiagnosticInfo são denso, as informações sobre como solucionar problemas apresentados a seguir serão úteis para solução de problemas avançada de problemas que foram escalados e que talvez exigir dados a serem enviados à Microsoft para triagem.Given that the logs and other information that Get-SDDCDiagnosticInfo are dense, the information on troubleshooting presented below will be helpful for troubleshooting advanced issues that have been escalated and that may require data to be sent to Microsoft for triaging.

Instalando o Get-SDDCDiagnosticInfoInstalling Get-SDDCDiagnosticInfo

O Get-SDDCDiagnosticInfo cmdlet do PowerShell (também conhecido comoThe Get-SDDCDiagnosticInfo PowerShell cmdlet (a.k.a. Get-PCStorageDiagnosticInfo, anteriormente conhecido como StorageHealth teste) pode ser usado para coletar logs e executar verificações de integridade para Clustering de Failover (Cluster, recursos, redes, nós), (espaços de armazenamento Discos físicos, compartimentos, discos virtuais), eliminação de duplicação, compartilhamentos de arquivos SMB e Volumes Compartilhados do Cluster.Get-PCStorageDiagnosticInfo, previously known as Test-StorageHealth) can be used to gather logs for and perform health checks for Failover Clustering (Cluster, Resources, Networks, Nodes), Storage Spaces (Physical Disks, Enclosures, Virtual Disks), Cluster Shared Volumes, SMB File Shares, and Deduplication.

Há dois métodos de instalação do script, que são estruturas de tópicos abaixo.There are two methods of installing the script, both of which are outlines below.

O da Galeria do PowerShell é um instantâneo do repositório GitHub.The PowerShell Gallery is a snapshot of the GitHub Repo. Observe que a instalação de itens da Galeria do PowerShell requer a versão mais recente do módulo PowerShellGet, que está disponível no Windows 10, no Windows Management Framework (WMF) 5.0 ou no instalador baseado em MSI (para PowerShell 3 e 4).Note that installing items from the PowerShell Gallery requires the latest version of the PowerShellGet module, which is available in Windows 10, in Windows Management Framework (WMF) 5.0, or in the MSI-based installer (for PowerShell 3 and 4).

Você pode instalar o módulo executando o seguinte comando no PowerShell com privilégios de administrador:You can install the module by running following command in PowerShell with administrator privileges:

Install-PackageProvider NuGet -Force
Install-Module PrivateCloud.DiagnosticInfo -Force
Import-Module PrivateCloud.DiagnosticInfo -Force

Para atualizar o módulo, execute o seguinte comando no PowerShell:To update the module, run the following command in PowerShell:

Update-Module PrivateCloud.DiagnosticInfo

GitHubGitHub

O repositório GitHub é a versão mais recente do módulo, já que estamos continuamente estiver iterando aqui.The GitHub Repo is the most up-to-date version of the module, since we are continually iterating here. Para instalar o módulo do GitHub, baixe o módulo mais recente a partir o arquivamento e extraia o diretório PrivateCloud.DiagnosticInfo para o caminho correto de módulos do PowerShell apontado pelo $env:PSModulePathTo install the module from GitHub, download the latest module from the archive and extract the PrivateCloud.DiagnosticInfo directory to the correct PowerShell modules path pointed by $env:PSModulePath

# Allowing Tls12 and Tls11 -- e.g. github now requires Tls12
# If this is not set, the Invoke-WebRequest fails with "The request was aborted: Could not create SSL/TLS secure channel."
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$module = 'PrivateCloud.DiagnosticInfo'
Invoke-WebRequest -Uri https://github.com/PowerShell/$module/archive/master.zip -OutFile $env:TEMP\master.zip
Expand-Archive -Path $env:TEMP\master.zip -DestinationPath $env:TEMP -Force
if (Test-Path $env:SystemRoot\System32\WindowsPowerShell\v1.0\Modules\$module) {
    rm -Recurse $env:SystemRoot\System32\WindowsPowerShell\v1.0\Modules\$module -ErrorAction Stop
    Remove-Module $module -ErrorAction SilentlyContinue
} else {
    Import-Module $module -ErrorAction SilentlyContinue
} 
if (-not ($m = Get-Module $module -ErrorAction SilentlyContinue)) {
    $md = "$env:ProgramFiles\WindowsPowerShell\Modules"
} else {
    $md = (gi $m.ModuleBase -ErrorAction SilentlyContinue).PsParentPath
    Remove-Module $module -ErrorAction SilentlyContinue
    rm -Recurse $m.ModuleBase -ErrorAction Stop
}
cp -Recurse $env:TEMP\$module-master\$module $md -Force -ErrorAction Stop
rm -Recurse $env:TEMP\$module-master,$env:TEMP\master.zip
Import-Module $module -Force

Se você precisar obter este módulo em um cluster offline, baixe o zip, mova-o para o nó do servidor de destino e instale o módulo.If you need to get this module on an offline cluster, download the zip, move it to your target server node, and install the module.

Coletando LogsGathering Logs

Depois que você tiver habilitado a canais de evento e concluir o processo de instalação, você pode usar o cmdlet do PowerShell Get-SDDCDiagnosticInfo no módulo para obter:After you have enabled event channels and completed the installation process, you can use the Get-SDDCDiagnosticInfo PowerShell cmdlet in the module to get:

  • Relatórios de integridade do armazenamento, além de obter detalhes sobre os componentes não íntegroReports on storage health, plus details on unhealthy components
  • Relatórios de capacidade de armazenamento por pool, o volume e o volume com eliminação de duplicaçãoReports of storage capacity by pool, volume and deduplicated volume
  • Logs de eventos de todos os nós de cluster e um relatório de resumo de erroEvent logs from all cluster nodes and a summary error report

Suponha que seu cluster de armazenamento tem o nome "CLUS01".Assume that your storage cluster has the name "CLUS01".

Para executar em um cluster de armazenamento remoto:To execute against a remote storage cluster:

Get-SDDCDiagnosticInfo -ClusterName CLUS01

Para executar localmente no nó de armazenamento em cluster:To execute locally on clustered storage node:

Get-SDDCDiagnosticInfo

Para salvar os resultados em uma pasta especificada:To save results to a specified folder:

Get-SDDCDiagnosticInfo -WriteToPath D:\Folder 

Aqui está um exemplo de como isso acontece em um cluster real:Here is an example of how this looks on a real cluster:

New-Item -Name SDDCDiagTemp -Path d:\ -ItemType Directory -Force
Get-SddcDiagnosticInfo -ClusterName S2D-Cluster -WriteToPath d:\SDDCDiagTemp

Como você pode ver, o script também fará a validação do estado atual do clusterAs you can see, script will also do validation of current cluster state

tela de powershell de coleta de dados

Como você pode ver, todos os dados estão sendo gravados em pasta SDDCDiagTempAs you can see, all data are being written to SDDCDiagTemp folder

dados na captura de tela de Gerenciador de arquivo

Depois que o script será concluído, ele criará o ZIP em seu diretório de usuáriosAfter script will finish, it will create ZIP in your users directory

dados zip na captura de tela do powershell

Vamos gerar um relatório em um arquivo de textoLet's generate a report into a text file

#find the latest diagnostic zip in UserProfile
    $DiagZip=(get-childitem $env:USERPROFILE | where Name -like HealthTest*.zip)
    $LatestDiagPath=($DiagZip | sort lastwritetime | select -First 1).FullName
#expand to temp directory
    New-Item -Name SDDCDiagTemp -Path d:\ -ItemType Directory -Force
    Expand-Archive -Path $LatestDiagPath -DestinationPath D:\SDDCDiagTemp -Force
#generate report and save to text file
    $report=Show-SddcDiagnosticReport -Path D:\SDDCDiagTemp
    $report | out-file d:\SDDCReport.txt
    

Para referência, aqui está um link para o relatório de exemplo e zip de exemplo.For reference, here is a link to the sample report and sample zip.

Para exibir isso no Windows Admin Center (versão 1812 em diante), navegue até a diagnóstico guia. Como você ver na captura de tela abaixo, você pode:To view this in Windows Admin Center (version 1812 onwards), navigate to the Diagnostics tab. As you see in the screenshot below, you can

  • Instalar as ferramentas de diagnósticoInstall diagnostic tools
  • Atualizá-los (se estiverem desatualizadas),Update them (if they are out-of-date),
  • Agendar execuções diárias de diagnóstico (elas têm um baixo impacto em seu sistema, normalmente levam < 5 minutos no segundo plano e não ocupam mais de 500mb em seu cluster)Schedule daily diagnostic runs (these have a low impact on your system, usually take <5 minutes in the background, and won't take up more than 500mb on your cluster)
  • Modo de exibição anteriormente coletadas informações de diagnóstico se você precisar dar a ele a oferecer suporte ou analisá-los.View previously collected diagnostic information if you need to give it to support or analyze it yourself.

captura de tela de diagnóstico wac

Saída de Get-SDDCDiagnosticInfoGet-SDDCDiagnosticInfo output

A seguir estão os arquivos incluídos na saída de Get-SDDCDiagnosticInfo compactada.The following are the files included in the zipped output of Get-SDDCDiagnosticInfo.

Relatório de resumo de integridadeHealth Summary Report

O relatório de resumo de integridade é salvo como:The health summary report is saved as:

  • 0_CloudHealthSummary.log0_CloudHealthSummary.log

Esse arquivo é gerado depois de analisar todos os dados coletados e visa fornecer um rápido resumo do seu sistema.This file is generated after parsing all the data collected and is meant to provide a quick summary of your system. Ele contém:It contains:

  • Informações do sistemaSystem information
  • Visão geral de integridade do armazenamento (número de nós para cima, recursos online, volumes compartilhados do cluster online, os componentes não íntegro, etc.)Storage health overview (number of nodes up, resources online, cluster shared volumes online, unhealthy components, etc.)
  • Obter detalhes sobre os componentes não íntegro (recursos de cluster que estão offline, com falha ou pendente online)Details on unhealthy components (cluster resources that are offline, failed, or online pending)
  • Informações de firmware e driverFirmware and driver information
  • Pool de disco físico e detalhes de volumePool, physical disk, and volume details
  • Desempenho de armazenamento (desempenho de contadores são coletados)Storage Performance (performance counters are collected)

Este relatório está sendo atualizado continuamente para incluir as informações mais úteis.This report is being continually updated to include more useful information. Para obter informações mais recentes, consulte o README GitHub.For the latest information, see the GitHub README.

Logs e arquivos XMLLogs and XML files

O script é executado o log de vários scripts de coleta e salva a saída como arquivos xml.The script runs various log gathering scripts and saves the output as xml files. Podemos coletar logs de cluster e a integridade, informações do sistema (MSInfo32), logs de eventos não filtrados (clustering de failover, o diagnóstico de dis, hyper-v, espaços de armazenamento e muito mais) e informações de diagnóstico de armazenamento (logs operacionais).We collect cluster and health logs, system information (MSInfo32), unfiltered event logs (failover clustering, dis diagnostics, hyper-v, storage spaces, and more), and storage diagnostics information (operational logs). Para as últimas informações sobre quais informações são coletadas, consulte a README GitHub (o que podemos coletar).For the latest information on what information is collected, see the GitHub README (what we collect).

Como consumir os arquivos XML de Get-PCStorageDiagnosticInfoHow to consume the XML files from Get-PCStorageDiagnosticInfo

Você pode consumir os dados dos arquivos XML fornecidos nos dados coletados pelo Get-PCStorageDiagnosticInfo cmdlet.You can consume the data from the XML files provided in data collected by the Get-PCStorageDiagnosticInfo cmdlet. Esses arquivos têm informações sobre o virtual disks, discos físicos, informações de cluster básico e outro PowerShell relacionados ao saídas.These files have information about the virtual disks, physical disks, basic cluster info and other PowerShell related outputs.

Para ver os resultados dessas saídas, abra uma janela do PowerShell e execute as etapas a seguir.To see the results of these outputs, open a PowerShell window and run the following steps.

ipmo storage
$d = import-clixml <filename> 
$d

O que esperar a seguir?What to expect next?

Muitas melhorias e novos cmdlets para analisar a integridade do sistema SDDC.A lot of improvements and new cmdlets to analyze SDDC system health. Fornecer comentários sobre o que você deseja ver apresentando questões aqui.Provide feedback on what you'd like to see by filing issues here. Além disso, fique à vontade contribuir com alterações úteis para o script, enviando uma solicitação de pull.Also, feel free to contribute helpful changes to the script, by submitting a pull request.