收集叢集的診斷資料

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

儲存空間直接存取中有各種診斷工具,可供您用來收集疑難排解 Azure Stack HCI 和 Windows Server 叢集所需的資料。 在本文中,我們將著重於安裝和使用 SDDC 診斷工具,以收集可協助您診斷叢集的相關資訊。

由於記錄檔和其他資訊都很密集,因此本文中所顯示的資訊對於疑難排解已呈報且可能需要將資料傳送給 Microsoft 以進行分級的進階問題非常實用。

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

您可以使用 Windows Admin Center (1812 版開始):

  • 安裝 SDDC 診斷工具,並讓它們保持在最新狀態
  • 排程每日診斷執行 (這些會對您的系統產生較低的影響,通常在背景執行需要不到五分鐘的時間,而且在您的叢集上不會超過 500 MB)
  • 如果您需要為其提供支援或自行分析的診斷資訊,請參閱先前收集的診斷資訊

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

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

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

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

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

  3. 除非您看到下列螢幕擷取畫面,否則資料收集不會完成。 若要查看收集的診斷資訊,請選擇 [下載] (.zip) 或 [檔案中開啟] 工具。

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

使用 PowerShell 安裝 Get-SDDCDiagnosticInfo

您可以使用 Get-SDDCDiagnosticInfo PowerShell Cmdlet (也稱為 Get-PCStorageDiagnosticInfo,先前稱為 Test-StorageHealth) 收集記錄檔,並針對容錯移轉叢集 (叢集、資源、網路、節點)、儲存空間 (實體磁碟、磁碟櫃、虛擬磁碟)、叢集共用磁碟區、SMB 檔案共用和重複資料刪除等,執行健康情況檢查。

安裝指令碼的方法有兩種:PowerShell 資源庫和 GitHub。 兩者都如下所述。

PowerShell 資源庫是 GitHub 存放庫的快照集。 請注意要從資源庫安裝項目需要最新版本的 PowerShell 資源庫模組,其在 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 目錄解壓縮至由 $env:PSModulePath 指向的正確 PowerShell 模組路徑

# 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)、未篩選的事件記錄 (容錯移轉叢集、磁碟診斷、Hyper-V、儲存空間等),以及儲存體診斷資訊 (作業記錄)。 如需有關所收集資訊的最新資訊,請參閱 GitHub 讀我檔案 (我們收集的資料)

如何從 Get-SDDCDiagnosticInfo 取用 XML 檔案

您可以從 Get-SDDCDiagnosticInfo Cmdlet 收集的資料裡所提供的 XML 檔案中取用資料。 這些檔案包括虛擬磁碟、實體磁碟、基本叢集資訊,以及其他 PowerShell 相關輸出的相關資訊。

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

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

後續步驟

請在這裡提出問題,以提供您想要查看的意見反應。 此外,您也可以提交提取要求,以提供對指令碼的實用變更。