ESX的NFS存儲Failover機制Q&A


ESX的NFS存儲一般都會配置備份鏈路。當主鏈路出現故障時自動切換到備份鏈路上,這叫作Failover。

問:何時發起failover?答:當發現存儲鏈路失敗時。

問:如何判斷一條存儲鏈路中斷了?答:找不到心跳了唄。

問:心跳是怎麼回事?怎樣纔算找不到心跳?
答:一般ESX Host會每隔必定的間隔(HeartbeatFrequency)發起一次到存儲的心跳檢測,每次心跳檢測必須在必定的時間內(HeartbeatTimeout)收到回覆,不然就算是一次心跳檢測失敗(HeartbeatFailure),連續失敗到必定的次數(HeartbeatMaxFailure)就算鏈路失敗。

這些參數應該修改成如下推薦的值 (不管是NetApp仍是EMC的NAS設備)
  • NFS.HeartbeatDelta (NFS.HeartbeatFrequency in ESX 3.x)   12
  • NFS.HeartbeatTimeout         5
  • NFS.HeartbeatMaxFailures   10
上面這些推薦參數值的含義是:NFS.HeartbeatFrequency=12說明每12秒會發起一次心跳檢測。5秒沒有響應就算Timeout,一直累計到10次沒有響應纔算NFS存儲丟失,才發起failover的動做。這中間其實通過了12s*10+5s=125秒時間。也就是說,真正要發起一次failover事件,ESX Host要等上125秒。 問:那麼,在這125秒內,從VM的角度看,發生了什麼情況呢? 答:VM會發現其vSCSI控制器上鍊接的磁盤中止響應,這取決於Guest OS會忍受多長時間的磁盤不響應才認爲是一個error (delayed write error),當這個IO error發生在Guest OS的系統盤時,就會致使OS崩潰。Windows操做系統默認的disk Timeout是60秒。也就是說,當ESX Host還在125秒的等待時間內而不去執行Failover動做時,Guest OS就已經崩潰了。在Guest級別HA啓用的狀況下,Guest OS會在NFS Storage恢復的時候重啓。可是從新配置Guest OS的參數以使其也可以等待125秒不是更好嗎?如何作到?用Regedit,修改HKLM\System\CurrentControlSet\Services\Disk下的TimeOutValue值爲125便可。(修改註冊表有風險,請必定先備份後修改) 注:本文是讀書筆記 【參考文檔】 (1) Scott Lowe, 《Mastering VMware vSphere 4.0》 chapter 6
相關文章
相關標籤/搜索