05: 什麼是WSFC以及如何修復ESXi啟動時間長的問題

歡迎轉載,請註明出處!

正文:

        Windows ServerFailover Clusters(WSFC),以前稱為MicrosoftCluster Service(MSCS),是Windows Server的一種群集技術,允許在群集配置中運行多個Windows Server。有許多用例可以使用像SQL database,DFS namespace, file server這樣的高可用性配置......當虛擬化沒有像現在廣泛使用時,Windows群集是最常用的方式。你可以在高可用中運行多個物理伺服器,這對於服務來說是很重要的。vSphere已經提供了運行虛擬Windows故障轉移群集節點的可能性,最新版本的vSphere甚至還包括在節點運行時將節點遷移到另一台主機的能力。

       在本文中,我們將重點介紹虛擬化Windows群集的存儲方面以及它如何影響ESXi主機的啟動時間。

技術背景

     

VMFS背景

在VMFS版本3中,只要虛擬機想要寫入存儲在數據存儲上的磁碟,ESXi主機就會在LUN本身上發出SCSI-3預留,從而阻止任何其他主機同時寫入,從而導致延遲對環境的關注。這種鎖定機制在VMFS 5中被per-vmdk鎖替換,允許多個主機同時寫入同一數據存儲。任何SCSI-3預留命令都將被文件系統(VMFS 5)攔截和刪除。

      WSFC / MSCS共享磁碟

MSCS的故障轉移機制依賴於對數據使用共享卷和稱為仲裁的較小共享卷,該共享卷用於確定群集的運行狀況。每個群集角色都有一個活動節點,其他是被動節點,等待計劃內或計劃外故障轉移時接管。Windows群集的一個細節是主動節點在共享卷(因此LUN)上保留持久的SCSI-3預留。由於我們在前一章中提到的內容,因此需要在物理模式下使用原始設備映射(RDM)磁碟以允許主動節點鎖定LUN。主動節點運行且LUN被鎖定後,其他主機無法寫入,這是為了防止數據損壞。

       ESXi啟動時間問題,

作為其引導過程的一部分,ESXi將掃描存儲並嘗試訪問LUN以收集有關它們的信息。現在,就像我們之前建議的那樣,如果WSFC活動節點當前正在對也提供給引導主機的LUN進行鎖定,則它將無法訪問該LUN並繼續嘗試,直到它決定轉移到下一個LUN。。這裡的問題是,在這樣做之前需要相當長的時間,並且你擁有的WSFC啟用LUN越多,ESXi主機完成其啟動順序所需的時間就越長。使用許多RDM啟動可能需要1個多小時,而沒有配置任何或設置正確的設置幾分鐘(稍後會詳細介紹)。

     如果在引導序列期間按ALT + F12以顯示vmkernel日誌,將看到如下消息:

如何解決它

       我們需要告訴ESXi,MSCS群集中使用的LUN始終是保留的,因此不會嘗試訪問它們。為此,我們將使用esxcli將LUN標記為「

 

Perennially reserved

 

」。

       請注意,不應在承載VMFS數據存儲的LUN上啟用此標誌。

Shell / SSH

      首先找到LUN的規範名稱(naa。)。使用PowerCLI比使用Web客戶端更容易,因為可以看到連接到虛擬機的硬碟的ScsciCanonicalName屬性。

PS> Get-VMMSCS-Node-1 | Get-HardDisk -DiskType RawPhysical | 選擇scsicanonicalname

ScsiCanonicalName ------ naa.60001xxxxxxxxxxxxxxxxxxxxxxxacbc naa.60001xxxxxxxxxxxxxxxxxxxxxxxacbb naa.60001xxxxxxxxxxxxxxxxxxxxxxxacba naa.60001xxxxxxxxxxxxxxxxxxxxxxxacbd naa.60001xxxxxxxxxxxxxxxxxxxxxxxacb9 naa.60001xxxxxxxxxxxxxxxxxxxxxxxacb8

     使用SSH或控制台連接ESXi主機

esxcli存儲核心設備setconfig -d naa.id -perennially-reserved =true

     如果只有少數主機具有很少的RDM,這種方法很好,但隨著擴展,它會變得非常麻煩。你還需要確定naa的名字。下一種方法使用PowerCLI,效率更高,更不容易出錯。

PowerCLI

     更簡單的方法是使用PowerCLI設置Perennially保留標誌。示例下方提供的功能將RDM Hard Disk對象作為參數,因此不存在選擇託管VMFS數據存儲的LUN的風險。該腳本將負責查找規範名稱並使用Get-EsxCLI -V2cmdlet設置標誌。

例1:

     將標誌設置為true在所有vSphere主機上匹配MSCS-Node- *的VM的所有RDM LUN。

PS> Set-PerenniallyReserved -PerenniallyReserved $ True -VMHost(Get-VMHost)-HardDisk(Get-VMMSCS-Node- * | Get-HardDisk -DiskType RawPhysical)

例2:

     如果僅將RDM磁碟用於MSCS群集,則很可能希望標記群集中存在的任何RDM磁碟的LUN。以下將在所有主機上的所有RDM磁碟上將該標誌設置為true。

PS> Set-PerenniallyReserved -PerenniallyReserved $ True -VMHost(Get-VMHost)-HardDisk(Get-VM |Get-HardDisk -DiskType RawPhysical)

PowerCLI功能

函數集-PerenniallyReserved{

參數(

[Parameter(Mandatory = $true)] [ValidateSet($ True,$ False)] [string] $ PerenniallyReserved,

[參數(Mandatory = $true)] [VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost []] $ VMHost,

[參數(Mandatory = $true)] [VMware.VimAutomation.ViCore.Types.V1.VirtualDevice.RawHardDisk []] $ HardDisk )

#循環每個主機foreach($ esx in $ VMHost){

寫輸出「 - 處理$($ esx.name)」

#準備esxcli $ EsxCLI = Get-EsxCli -VMHost $ esx -V2

$ ArgList = $EsxCLI.storage.core.device.list.CreateArgs()$ ArgSet = $ EsxCLI.storage.core.device.SetConfig.CreateArgs()$ ArgSet.perenniallyreserved = $ PerenniallyReserved

#循環當前主機foreach中的每個磁碟($ HardDisk中的$ disk){

$ ArgList.device =$ ArgSet.device = $ disk.ScsiCanonicalName

#檢查是否已處於必需狀態,否則更改它$ ErrorActionPreference =「 SilentlyContinue 」 $ PR = $ EsxCLI.storage.core.device.list.Invoke($ ArgList)$ ErrorActionPreference =「Continue」

if($ PR){

#檢查已經PR $ PR = $ PR.IsPerenniallyReserved

if($ PR -eq $PerenniallyReserved){

寫入輸出「$($disk.ScsiCanonicalName)已經處於$($ esx.name)的預期狀態 - 常年保留:$ PR」

} else {

#在lun上設置保留

$ exec = $EsxCLI.storage.core.device.SetConfig.Invoke($ ArgSet)

$ NewPR = $EsxCLI.storage.core.device.list.Invoke($ ArgList).IsPerenniallyReserved

if($ PR -ne $ NewPR){

寫輸出「$($ esx.name) - $($disk.ScsiCanonicalName)保留狀態已更改:$ PR => $ NewPR」

} else {

寫警告「$($ esx.name) - $($disk.ScsiCanonicalName)保留狀態不變:$ PR => $ NewPR」

}

}

} else {

在$($ esx.name)上找不到寫入警告「$($disk.ScsiCanonicalName)」

} }

}

}

基準

     以下測試是在具有MSCS群集配置中使用的10個RDM磁碟的主機上完成的。

Perennially reserved

Initiate reboot

Host is not responding

Established a connection

Reboot time

TRUE

15:01:53

15:03:45

15:08:49

00:05:04

FALSE

10:30:07

10:31:44

11:05:14

00:33:30

寫在最後的話

     正如你所看到的那樣,主機在標誌關閉時需要超過33分鐘才能重新啟動,並且只需要超過5分鐘,標誌就會超過28分鐘。如果有20個主機逐個修補(需要重啟),這將使該過程快9小時30分鐘!

     雖然這個問題已經存在了幾年,但對於我們大多數人來說仍然是一個發現,因為不是每個人都使用或者可以使用RDM磁碟。

TIFY致力於IT行業產品、銷售的學習、討論、分享

感謝您的

關注,

您的每一次

分享

,都是最大的鼓勵

長按下圖識別二維碼進入「

微社區

」參與討論

更多

學習資料

,請訪問TIFY官方論壇:

www.tify.club


推薦閱讀:

在整個宇宙中,時間不復存在?
提升專註力,解決中斷的四步|閃電時間管理8
什麼時間可以開始拜太歲?該怎麼拜
【讀片時間】第0477期:上皮樣血管內皮瘤
哪些忘記的時間

TAG:時間 | 修復 | 問題 | 什麼 |