最近在研究Windows 2012的存储子系统以及Windows 2012提供的集群及高可用等功能,感觉CSV还是不太好理解的,下面的资料还不错有利于我们对Hyper-V以及CSV的理解。
=====================================================
源地址:http://xiaojun200412.blog.163.com/blog/static/1734598720128121151223/
Hyper-V Cluster Shared Volume 原理初探
這篇是要來解說Hyepr-V在運用Cluster Shared Volume的一些原理
可以先參考了解容錯移轉叢集的叢集共用磁碟區,裡面有段文字其實就有對這個原理稍微提了一下
從第一個紅框可以得知,在使用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
在Windows Server 2012 Beta中,這個元件變成了%Systemroot%\System32\Driver底下的CsvFlt.sys
可以透過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
接著,我們來舉個實際的範例,來驗證這件事情
下圖是一個2 Node的Hyper-V Cluster,在啟用Cluster Shared Volume之後的一個運作邏輯圖
※紅線為Read/Write IO、紫線為Metadata IO,下圖的Cluster Node 1為Storage的Owner
在這種情況下啟動時,可以在Performance Monitor中的Cluster Shared Volume CsvVolume跟Csvfs這兩個WMI命名空間中看到
※在Windows 2008 R2中是叫Cluster Shared Volume
※我的Performance Monitor有啟動VM的是在第二台,跟上圖的啟動是相反的,Sorry
接著將VM切換到另一部Host上,再看看他的IO會變得如何
會發現Read\Write IO都跑到新的主機上,如果啟動VM的Host並不是Storage Onwer,Metadata IO會流向Storage Onwer
接著,示範將SAN的連接線給中斷(直接拔除)
我們可以從上圖看到,iSCSI確實斷線了,然而對VM的IO會開始走ReDirector IO,透過其他網路的路由將IO重新導向到Owner上
不過,在Windows Server 2008 R2中,這時Storage的連線狀態會出現Redirected access,在Windows Server 2012 Beta中並不會(如上圖)