共用方式為


收集叢集的診斷數據

適用於:Azure Stack HCI 版本 22H2 和 21H2、Windows Server 2022、Windows Server 2019、Windows Server 2016

重要

Azure Stack HCI 現在是 Azure 本機的一部分。 產品檔案重新命名正在進行中。 不過,舊版的 Azure Stack HCI,例如 22H2 會繼續參考 Azure Stack HCI,而且不會反映名稱變更。 深入了解

儲存空間直接存取 中有許多診斷工具,可用來收集數據,以針對 Azure Stack HCI 和 Windows Server 叢集進行疑難解答。 在本文中,我們將著重於安裝和使用 SDDC 診斷工具來收集相關信息,以協助您診斷叢集。

由於記錄和其他資訊密集,本文中提供的資訊有助於針對已呈報的進階問題進行疑難解答,而且可能需要將數據傳送至Microsoft以進行分級。

搭配 Windows Admin Center 安裝和使用診斷工具

您可以使用 Windows Admin Center(1812 版及更新版本)來:

  • 安裝 SDDC 診斷工具並將其保持在最新狀態
  • 排程每日診斷執行 (這些對系統的影響很低,通常需要不到 5 分鐘的時間才能在背景中執行,而且不會佔用超過 500 MB 的叢集)
  • 如果您需要提供診斷資訊來支援或自行分析,請檢視先前收集的診斷資訊

若要安裝 SDDC 診斷工具並開始收集資料,請遵循下列步驟:

  1. 啟動 Windows Admin Center,然後選取 [ 工具 > 診斷]。 如果尚未安裝診斷工具,請按兩下 [ 安裝] 按鈕。

    按兩下 [安裝] 以安裝 SDDC 診斷工具。

  2. 若要開始收集診斷數據,請按兩下 [ 收集]。 您應該會看到「收集診斷資訊」的訊息。 這可能需要幾分鐘的時間。初始數據收集之後,如果您想要每隔 24 小時自動收集數據,請將滑桿變更為 [開啟]。

    按兩下 [收集] 以收集診斷數據。

  3. 在您看到下列螢幕快照之前,數據收集尚未完成。 若要檢視收集的診斷資訊,請選擇 [ 下載] (.zip)[在檔案中開啟] 工具

    若要檢視診斷資訊,您可以下載.zip檔案,或在 [檔案] 工具中開啟。

使用 PowerShell 安裝 Get-SDDCDiagnosticInfo

您可以使用 Get-SDDCDiagnosticInfo PowerShell Cmdlet (也稱為 ,先前稱為 Get-PCStorageDiagnosticInfoTest-StorageHealth)來收集故障轉移叢集 (叢集、資源、網路、節點)、儲存空間 (實體磁碟、機箱、虛擬磁碟)、叢集共用磁碟區、SMB 檔案共用和重複數據刪除的健康情況檢查。

有兩種方法可以安裝腳本:PowerShell 資源庫 和 GitHub。 以下概述這兩者。

PowerShell 資源庫 是 GitHub 存放庫的快照集。 請注意,從 PowerShell 資源庫 安裝專案需要最新版的 PowerShellGet 模組,其可在 Windows 10、Windows Management Framework (WMF) 5.0 或 MSI 安裝程式中取得(適用於 PowerShell 3 和 4)。

我們在此程式期間也安裝最新版 的 Microsoft 網路診斷工具 ,因為 Get-SDDCDiagnosticInfo 依賴此程式。 此指令清單模組包含網路診斷和疑難解答工具,此工具是由 Microsoft Microsoft 核心網路產品群組所維護。

您可以在 PowerShell 中以系統管理員身分執行下列命令來安裝模組:

Install-PackageProvider NuGet -Force
Install-Module PrivateCloud.DiagnosticInfo -Force
Import-Module PrivateCloud.DiagnosticInfo -Force
Install-Module -Name MSFT.Network.Diag

若要更新模組,請在 PowerShell 中執行下列命令:

Update-Module PrivateCloud.DiagnosticInfo

GitHub

GitHub 存放庫是模組的最新版本,因為我們在這裡持續反覆執行。 若要從 GitHub 安裝模組,請從 封存 下載最新的模組,並將 PrivateCloud.DiagnosticInfo 目錄解壓縮到所指向的正確 PowerShell 模組路徑 $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

如果您需要在離線叢集上取得此模組,請下載 zip、將它移至您的目標伺服器節點,然後安裝模組。

使用 PowerShell 收集記錄

啟用事件通道並完成安裝程序之後,您可以使用 Get-SDDCDiagnosticInfo 模組中的 PowerShell Cmdlet 來取得:

  • 報告記憶體健康情況,以及狀況不良元件的詳細數據
  • 依集區、磁碟區和重複數據刪除磁碟區的記憶體容量報告
  • 來自所有叢集節點的事件記錄和摘要錯誤報告

假設您的記憶體叢集名稱 為 「CLUS01」。

若要對遠端記憶體叢集執行:

Get-SDDCDiagnosticInfo -ClusterName CLUS01

若要在叢集記憶體節點上本機執行:

Get-SDDCDiagnosticInfo

若要將結果儲存至指定的資料夾:

Get-SDDCDiagnosticInfo -WriteToPath D:\Folder

以下是在真實叢集上的外觀範例:

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

如您所見,腳本也會驗證目前的叢集狀態:

數據收集PowerShell螢幕快照。

所有資料都會寫入 SDDCDiagTemp 資料夾:

檔案總管 螢幕快照中的數據。

文稿完成之後,它會在用戶目錄中建立 ZIP:

PowerShell 中的數據 ZIP 螢幕快照。

讓我們在文字文件中產生報表:

#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

如需參考,以下是範例報表範例 zip 的連結。

Get-SDDCDiagnosticInfo 輸出

以下是 壓縮輸出 Get-SDDCDiagnosticInfo中包含的檔案。

健康情況摘要報告

健康情況摘要報告會儲存為:

  • 0_CloudHealthSummary.log

此檔案會在剖析所收集的數據之後產生,並旨在提供您系統的快速摘要。 其包含:

  • 系統資訊
  • 記憶體健康情況概觀 (節點數目增加、資源上線、叢集共用磁碟區在線、狀況不良的元件等)
  • 狀況不良元件的詳細資料(離線、失敗或線上擱置的叢集資源)
  • 韌體和驅動程序資訊
  • 集區、實體磁碟和磁碟區詳細數據
  • 記憶體效能(收集效能計數器)

此報表會持續更新,以包含更有用的資訊。 如需最新資訊,請參閱 GitHub 自述檔

記錄檔和 XML 檔案

腳本會執行各種記錄收集腳本,並將輸出儲存為 xml 檔案。 我們會收集叢集和健康情況記錄、系統資訊 (MSInfo32)、未篩選的事件記錄檔(故障轉移叢集、dis 診斷、Hyper-V、儲存空間等等),以及記憶體診斷資訊(作業記錄)。 如需所收集資訊的最新資訊,請參閱 GitHub 自述文件(我們收集的內容)。

如何從 Get-SDDCDiagnosticInfo 取用 XML 檔案

您可以從 Cmdlet 所收集的數據 Get-SDDCDiagnosticInfo 中提供的 XML 檔案取用數據。 這些檔案具有虛擬磁碟、實體磁碟、基本叢集資訊和其他PowerShell相關輸出的相關信息。

若要查看這些輸出的結果,請開啟 PowerShell 視窗並執行下列步驟。

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

下一步

請在這裡提出問題,提供您想要查看內容的意見反應。 此外,您可以提交 提取要求,為腳本提供有用的變更。