Hyper-V Cluster Shared Volume(叢集共用磁碟區)原理初探

Hyper-V Cluster Shared Volume

這篇是要來解說Hyepr-V在運用Cluster Shared Volume的一些原理

可以先參考了解容錯移轉叢集的叢集共用磁碟區,裡面有段文字其實就有對這個原理稍微提了一下

4

從第一個紅框可以得知,在使用Cluster Shared Volume之後,會將Disk的GUID掛載到%SystemDrive%\ClusterStorage

第二個紅框,我想大部分人會覺得很奇怪,為什麼SAN都斷線了(iSCSI、Fiber、SAS),照理說Node已經沒有CSV的存取能力

為何在上面Online的Virtual Machine還能繼續使用,接下來會解釋這個原理

也會解釋為何一般的Cluster只能單邊I\O、而Hyper-V Cluster Shared Volume在雙邊IO卻不會有問題

 

在Hyper-V啟用Cluster Shared Volume之後,在Hyper-V Cluster裡面的VM都會透過CSV Filter對VHD做IO,而不再是直接IO

在Windows 2008 R2,CSV Filter這個元件是在%Systemroot%\System32\Driver底下的CSVFilter.sys

7

在Windows Server 2012 Beta中,這個元件變成了%Systemroot%\System32\Driver底下的CsvFlt.sys

9

可以透過Cluster.exe這個工具,去將Cluster啟動時的Log記錄下來,就可以證明這些事情了

至於怎麼紀錄Log,可以參考這篇文章How to create the cluster.log in Windows Server 2008 Failover Clustering

 

這是在Windows 2008 R2記錄下來的Log,在Wnidows Server 2012 Beta我找不到紀錄的方法,Sorry

10

 

接著,我們來舉個實際的範例,來驗證這件事情

下圖是一個2 Node的Hyper-V Cluster,在啟用Cluster Shared Volume之後的一個運作邏輯圖

※紅線為Read/Write IO、紫線為Metadata IO,下圖的Cluster Node 1為Storage的Owner

1

在這種情況下啟動時,可以在Performance Monitor中的Cluster Shared Volume CsvVolume跟Csvfs這兩個WMI命名空間中看到

※在Windows 2008 R2中是叫Cluster Shared Volume

※我的Performance Monitor有啟動VM的是在第二台,跟上圖的啟動是相反的,Sorry

6

接著將VM切換到另一部Host上,再看看他的IO會變得如何

2

11

會發現Read\Write IO都跑到新的主機上,如果啟動VM的Host並不是Storage Onwer,Metadata IO會流向Storage Onwer

 

接著,示範將SAN的連接線給中斷(直接拔除)

3

12

我們可以從上圖看到,iSCSI確實斷線了,然而對VM的IO會開始走ReDirector IO,透過其他網路的路由將IO重新導向到Owner上

不過,在Windows Server 2008 R2中,這時Storage的連線狀態會出現Redirected access,在Windows Server 2012 Beta中並不會(如上圖)

8

不過,在Windows Server 2008 R2中,如果發生過SAN斷線,則需要手動將Redirected access變更回正常Director

而在Windows Server 2012 Beta並不需要去手動更改的動作,它將會自動切換回來