盡管精簡置備(Thin Provisioning)技術是一種提升資源使用效率的有效方式,但是如果管理員沒有對存儲陣列容量進行有效監控,那么這種技術可能會為虛擬環境帶來一系列問題。
我的一位朋友經營著一家非常成功的小型公司,每天都會收到很多來自全球各地的電子版設計文件,然后根據這些文件制造產品。突然有一天他告訴我公司的vSphere環境出現問題,制造工廠當中的所有虛擬機全部離線;由于公司業務依賴于從設計到生產的高效流程,因此這種問題將會帶來很大影響。
像很多其他小型企業一樣,我的朋友自己管理一部分IT環境,而將某些技術性較強的領域外包給服務提供商進行管理。現有的IT環境已經正常運行很長時間了,并且之前我對vSphere環境進行檢查時并沒有發現任何問題。出現問題的虛擬環境當中有幾臺ESXi服務器以及一些小型iSCSI存儲陣列。iSCSI陣列當中的所有虛擬機都是通過精簡置備方式進創建的,有些虛擬機連接了一些大型原始設備以處理大規模設計文件。在這個實例當中,精簡置備方式成為問題的根本來源,阻礙了設計流程的正常進行。
何時使用精簡置備技術
精簡置備技術自身伴隨著某些風險。如果擁有足夠的空間來存儲所有已經創建的虛擬機,那么就沒有必要使用精簡置備技術。如果使用精簡置備技術,那么就可能會超額分配磁盤空間——也就是說,你為所有虛擬機分配的總磁盤空間超過了現有的物理空間。如果不使用精簡置備技術,現有空間將不足以存儲這些虛擬機,存儲容量將會被很快耗盡。如果過度使用某種資源,那么就會面臨著資源完全耗盡的風險。當CPU、網絡或者內存資源被耗盡的時候,虛擬機就會變得十分緩慢;而當磁盤空間被耗盡的時候,那些使用精簡置備方式創建的虛擬機都會被迫停止運行,而我的朋友所遇到的正是這種情況。
對于這種情況來說,問題和虛擬機無關,因為每臺虛擬機當中的所有磁盤仍然顯示擁有空閑空間;而且也不是vSphere數據存儲的問題,每個數據存儲都顯示擁有空閑空間允許精簡置備虛擬磁盤文件增長。問題在于底層硬盤空間已經被用盡,存儲陣列也在使用精簡置備技術并且已經被超額分配。為ESXi服務器分配的所有磁盤容量之和已經超過了陣列能夠容納的極限。這意味著陣列沒有其他地方來存儲額外的數據。當每臺精簡置備虛擬機需要寫入新的數據時,就需要占用更多的數據存儲空間。陣列不能夠接受這種寫操作,因此虛擬機被迫停止運行,以保護現有數據的完整性。由于每臺虛擬機都是通過精簡置備方式創建的,因此一段時間之后所有的虛擬機都將被迫停止運行,從而導致工廠當中的所有工作流程中止。
上面所描述的僅僅是一些理論知識,現在我們開始具體分析問題是如何發生的。從根本上來說,企業沒有對超額分配的存儲陣列空間進行足夠的監控。如果企業對陣列的剩余空間進行了恰當監控,那么系統就會及時發出告警,管理員也就擁有足夠的響應時間來防止問題的發生。這又回到了如何管理精簡置備所帶來的風險這個話題。這家公司對于虛擬機和數據存儲配置了監控和通知機制,但是并沒有對存儲陣列配置足夠的監控和告警機制。如果沒有合理監控磁盤使用情況,那么就不能超額分配使用資源,這是一個非常簡單的道理。對于磁盤空間來說,防止問題發生要比解決問題容易的多。一旦虛擬機由于缺少磁盤空間而被迫停止運行,那么將其恢復到正常狀態將是一件十分困難的事情。
監控存儲陣列空間
當問題出現的時候,我的朋友非常自然地想到向服務提供商的專家求助。專家確認問題是由于陣列空間不足所導致,陣列當中沒有額外的空間可以分配。擴展磁盤空間的唯一方式就是購買新的硬件。相比于前期建立良好的監控機制,這個過程要困難的多。存儲陣列限制新的磁盤必須和現有磁盤具有相同的容量和速度,而這個陣列已經是三年之前購買的了。如果現有的磁盤機架沒有空閑插槽,那么問題將會變得更加復雜。
為了擴展空間,存儲陣列需要新的磁盤機架和新的磁盤,但是它們必須和之前的模型相互匹配。如果有一到兩個月時間進行準備,那么這種情況還是可控的,但是現在所有的服務器都已經停止運行,根本沒有時間來購買新的硬件。為了恢復服務,唯一的方式就是刪除已經停止運行的虛擬機,從備份當中恢復。
如果你的存儲環境當中使用了精簡置備技術,那么必須密切監控存儲陣列的可用空間。必須在存儲空間被耗盡之前有所行動。使用精簡置備的層級越多,耗盡所有存儲空間和影響服務的可能性就越大。由于這種問題終究會發生,只是時間早晚的問題,因此針對任何空間不足的情況制定計劃十分重要。