你可以嘗試一下http://evms.sourceforge.net/ 〔Enterprise Volume Management System
〕,和lvm2是一樣的
不过具体支持具体snapshot个数我也不清楚。
這兩天我再去編譯一下kernel試試看可否解決這個問題,謝謝你!
我也是在網咖工作,對這個問題也很感興趣。
能否貼下你的bash shell小程式,我這邊測試多人并發訪問同一個target的時候經常出問題。
目前 ,我在Linux端建立了一個 target software (用的open-source的iSCSI Enterprise Target) ,我在Linux上掛了兩塊硬盤, 一個是系統盤, 另外一個 data盤被shared 了(全是ntfs格式的)
我用兩臺PC (WindowsXP)做測試 , 當都用Microsoft Initiator 2.03 連接這個target成功後, 並分別 auto-mount Linux端shared那個盤後, 當兩臺PC同時要在mounted的盤上創建目錄的時候, 我發現 ,當時兩臺PC是都成功的創建目錄了。 但是 當他們 umount的時候, 再重新連接的時候, 發現只有一個 用戶的創建的目錄還在 ,另外一個用戶創建的目錄丟失了
這個問題是我一開始玩iscsi target就碰到的...
是因為iet本身並沒有支援共享碟的"超級保護", 而且它是走"磁區"封包區塊的方式,也就是說,它基本上是假設一次一個使用者讀寫,就跟我們單機磁碟的用法一樣,如果一個磁區同時有兩個user存取自然就會產生資料毀損.
雖然用cluster的方式可避免多人共用iscsi磁區時資料毀損(我已經試過了..),但不是我們網咖要的共享碟"超級保護",在這裡不討論.
Iscsi Enterprise Target支援三種ISCSI Target的方式:檔案,實體硬碟,LVM分割區
所以在網咖的環境要做"超級保護", 要用lvm2開snapshot,因為lvm2的快照是"可寫入的"這對我們的"超級保護"有極大的作用.
我們將lvm2建立一個大的共享碟(例如:200GB),再建立32個快照,每個2GB,將ISCSI連進來的USER每人分配一個快照,它可自由修改共享碟的內容,但不會改到共享碟的內容, 而平時要修改共享碟時,就用iscsi"超級使用者",連進來就讓它直接連接到共享碟修改.
每五分鐘檢查一次連線狀況,如果user離線就將該user組快照刪除/重建.
(cat /proc/net/iet/session ,這個檔就是目前連入的iscsi使用者的狀況,可用ietadm去變更一些參數)
這個方法我已實際使用過了,是可行的. 但有一些問題還要解決:
1.就是32個快照上限的限制問題.
2.當用iscsi"超級使用者"連入修改,因為32個快照是隨時監視"共享碟"變化的,也就是說,如果你在共享碟修改500MB資料,在32個快照就會寫入16GB的資料,會讓系統效能降低很多,目前的解決方法是先將所有USER停機,刪除所有快照,再UPDATE資料,再重建快照,恢復連線.
3.有時user端的快照資料寫滿時(2GB),會造成整個FEDORA主機當機(要重開機),這點原因還不明.