數據存儲產業服務平臺

存儲SCSI鎖解讀:Windows Cluster篇

SCSI鎖的作用:

在一個共享存儲的環境下,多臺前端主機可能會同時訪問同一臺存儲設備,如果此時多臺主機在同一時點上對一個LUN進行寫操作,那么可想而知這個LUN將不知道哪個數據先寫,哪個數據后寫。為了防止這種情況發生而導致的數據損壞,所以就有了SCSI鎖的概念。通過SCSI Reservation機制來進行SCSI鎖的操作,目前絕大多數的磁盤都支持‘SCSI reservvation命令‘。如果一臺主機給磁盤傳輸了一條SCSI Reservation命令,則這個磁盤對于其他的主機就處于鎖定狀態。如果有其他的主機給已經被鎖定的磁盤發送讀寫請求,則會收到‘reservation conflict’報錯信息。如果保留SCSI鎖的主機崩潰,或者其他主機給磁盤發送‘break reservation或者reset target命令,用來解除SCSI鎖。然后,第二個主機發送I/O請求之前需要重新發送SCSI Reservation命令給磁盤。

SCSI鎖的分類:

SCSI鎖有兩種類型:SCSI-2 Reservation和SCSI-3 Reservation。一個LUN上只能存在一種類型的SCSI鎖。

SCSI-2 Reservation只允許設備被發出SCSI鎖的Initiator訪問,也就是主機的HBA。比如主機1上的HBA1對訪問的LUN加上SCSI-2鎖,此時即使主機1的HBA2也無法訪問這個LUN。所以SCSI-2 Reservation也被稱為Single Path Reservation。

SCSI-3 Reservation(Persistent Reservation)是使用PR Key來對磁盤進行加鎖。通常一臺Host會有唯一的PR Key,不同的主機對應的PR Key也不同。所以一般SCSI-3 Reservation通常被應用在多通路的共享環境下面。這里SCSI-3 Reservation也稱之為Persistent Reservation。

Windows Cluster中的SCSI鎖:

Windows 2003集群中使用SCSI-2 reserve/release命令。作為非持久的reservation,所以集群中的一臺節點會持有SCSI-2 Reservation的鎖,然后每過3秒會重新刷新一次。如果故障轉移發生,則切換節點主機會在相應的磁盤上放置SCSI-2 Reservation然后維護SCSI鎖。如果所有節點主機上的集群服務都會關閉,Reservation也不會保留。

Windows 2008集群中使用SCSI-3 persistent reservation機制。如果磁盤從主機上沒有正確移除,集群使用的磁盤(Cluster Disk)會保留著這些Reservation。鎖對應的SCSI鎖會一直存在于相應的磁盤之上,即使集群服務被關閉或者磁盤對于主機取消掩飾(unmasked)。所以,有些時候需要強行移除磁盤上的Reservation。

在Windows環境中,移除Reservation移除的命令是(disknumber可以在Windows的Disk Management中找到)

未經允許不得轉載:存儲在線-存儲專業媒體 » 存儲SCSI鎖解讀:Windows Cluster篇
精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走