同 FC、DAS、NAS、SAN等 存 儲技術相比,iSCSI具有配置簡單,使用方便,通用性好,成本低廉等特點,在實際工作得到較為普遍的應用。當搭建了簡單實用的iSCSI網絡存儲后,默認情況下客戶端都可以隨意的連接和使用iSCSI Target服務器上提供的共享磁盤和分區,這在安全性要求較高的環境中是不允許的。因此,
對上述連接進行認證和授權,是管理iSCSI存儲網絡不可或缺的手段。例如,讓指定的客戶端只能訪問特定的共享分區等。同其他的網絡存儲技術相比,iSCSI在安全管理和認證授權方面有獨到之處,不僅允許針對特定的IP來設置訪問權限,還可以使用賬戶名和密碼的方式進行訪問控制。
這里使用iSCSI Target軟件在Linux主機上配置iSCSI Target。 執 行“tar-xzvf iscsitarget-x.x.x.x.tar”,“cd iscsi target-x.x.x.x”,“make”,“make install”等命令,來裝該軟件,其中的“x.x.x.x”為具體版本。執行“service iscsi-target start”命令,啟動iSCSI Target服務。執 行“vi /etc/iet/ietd.conf”命令,對其配置文件進行編輯,在其中輸入諸如“Target iqn.2016.09.com.xxx.storage.disk2.sys1.xyz”之類的行,其中的“xxx.com”表示具體的域名,該行作用是設置iSCSI Target的名稱,注意其名稱在局域網中應該是唯一的。
添加諸如“Lun 0 Path=/dev/sdc,Type=fileio,Scs iId=xyz,ScsiSN=xyz”之 類的行,用來設置LUN邏輯單元號,表示將某個磁盤設置為共享存儲設備。即塊設備號 為 0,映 射的磁盤為“/dev/sdc”可以根據需要進行修改。之后執行“service iscsi-target restart”命令,重啟iSCSI Target服務讓設置生效。對于Windows客戶機來說,其自帶了iSCSI發起程序,可以快速連接目標iSCSI Target服務器。Linux客戶端可以使用自帶的iSCSI Initiator命 令進行連接。如果沒有該命令,可以執行“yum install iscsi*”命令進行安裝。
這里就以具體的實例說明。在某臺Linux主機上開啟了iSCSI Target服務,其 IP 為 192.168.1.100,提供的共享磁盤為“/dev/sdc”,其容量為 100GB,將該共 享 盤 分 為“/dev/sdc1”和“/dev/sdc2”兩個分區,兩者容量均為50GB。對于前者來說,分配給IP為192.168.1.101的客戶端使用,對于后者來說,分配給IP為192.168.1.102的客戶端使用。因為使用了iSCSI Target這款軟件來搭建iSCSI網絡存儲,所以執行“vi /etc/iet/ietd.conf”命令,打開其配置文件,在其中添加“target iqn.2016-09.net.ixdba:sdc1”,“Lun0Path=/dev/sdc1,Type=fileio”,“targetiqn.2016-09.net.ixdba:sdc2”,“Lun0Path=/dev/sdc2,Type=fileio”等內容,其作用是定義兩個Target,為其分別分配“/dev/sdc1”和“/dev/sdc2”分區。
執行“vi /etc/iet/initiators.allow” 命令,編輯訪問規則文件。該文件的主要作用是定義了客戶機訪問iSCSI Target服務器的規則,例如在其中添加“iqn.2016-09.net.ixdba:sdc1192.168.1.101”,“iqn.2016-09.net.ixdba:sdc2 192.168.1.102”兩行內容。這樣,就限定了不同的IP可以訪問的目標共享磁盤。執行“service iscsitarget restart”命令,重啟iscsi-target服務,為客戶端的訪問做好準備。之后在IP為192.168.1.101的客戶機上執行“/etc/init.d/iscsi restart” 命 令,重啟Initiator服務,其作用是重新執行Target發現操作。執行“iscsiadm -m discovery -t sendtargets-p 192.168.1.100”命令,來查看在iSCSI Target服務器上設定了哪些LUN。
在默認情況下,可以顯示其劃分的所有LUN,因為上面已經對該IP的訪問權限進行了控制,因此其只能看 到“iqn.2000-04.net.ixdba:sdc1”的 LUN。 這 里的“iscsiadm”命令是iSCSI Initiator這一客戶端工具提供的,其作用是用來管理iSCSI配置數據庫文件的。執行“iscsiadm -m node -T xxxxxx -p 192.168.1.100”命令,登錄到目標iSCSI Target服務器上。其中的“xxxxxx”為根據上一個命令獲得的Target名稱。執行“fdisk -l”命令,來查看其可以訪問的共享分區信息,包括其標識信息、容量等。之后就可以使用“fdisk”命令,對其進行分區格式化等操作。
除了在Linux客戶機上訪問以上共享磁盤外,還可以在Windows客戶端進行訪問,例如某Windows主機 的 IP為 192.168.1.102,在Windows控制面板中運行iSCSI發起程序,在其主界面中的“發現”面板中點擊“發現門戶”按鈕,在打開窗口中輸入上述iSCSI Target服務器的IP和端口號,在“目標”欄中輸入“192.168.1.100”,點擊“快速連接”按鈕,就會和目標iSCSI Target服務器進行連接,來獲取可用的Target信息,因為根據以上設定,該IP只能獲得“/dev/sdc2”分區信息,所以在“以發現的目標”欄中值顯示該Target信息,選擇該目標Target項,點擊“連接”按鈕,就可以與其建立連接,在本機磁盤管理窗口中對其進行分區和格式化操作。
除了將客戶端IP和目標iSCSI共享磁盤綁定外,還可以使用賬戶名和密碼檢測機制,來管控客戶端的訪問操作。在iSCSI Target服務器上執行“vi /etc/iet/initiator.allow” 命令,在其中進行合適的修改,例 如 包 含“iqn.2016-0 9.net.ixdba:s d c 1 192.168.1.101”,“iqn.2016-09.net.ixdba:sdc2 192.168.1.102”,“ALL ALL”等行內容,允許客戶端查看所有的iSCSI共享磁盤。執 行“vi /etc/iet/ietd.conf”命令,在該配置文件中添加“Incoming authname securelink”行,其作用是當客戶端針對iSCSI Target服務器執行發現操作時,所需要輸入的賬戶名和密碼,這里的賬戶名為“authname”,密碼為“securelink”。
添 加“Targetiqn.2 0 1 6-0 9.n e t.ixdba:sdc1”,“Incoming authname1 securelink1”,“Lun 0 Path=/dev/sdc1,Type=fileio”行,其作用是當客戶機試圖連接和使用“/dev/sdc1”共享磁盤時,必須輸入的賬戶名和密碼。這里的賬戶名為“authname1”,密碼為“securelink1”。添加“Target iqn.2016-09.net.ixdba:sdc2”,“Incoming authname2 securelink2”,“Lun 0 Path=/dev/sdc2,Type=fileio”行,其作用是當客戶機試圖連接和使用“/dev/sdc2”共享磁盤時,必須輸入的賬戶名和密碼。這里的賬戶名為“authname2”,密碼為“securelink2”。這里的賬戶名和密碼可以跟均需要進行設定,注意,在客戶機上必須設置相同的賬戶名和密碼,才可以順利訪問iSCSI Target服務器。
在某Linux客戶機(例如IP為192.168.10.101)上執行“vi /etc/iscsi/iscsid.conf”命令,對該配置文件進行編輯,添加“node.session.suth.authmethod= CHAP”行,其作用是在登錄iSCSI Target服務器時執行CHAP驗證機制。添加“node.session.auth.username = authname”,“node.session.auth.password = securelink”行,其作用是設置登錄驗證信息,注意其賬戶名和密碼必須域服務器端保持一致。添加“discovery.sendtarget.auth.authmothod = CHAP”行,表示在執行發現操作時,使用CHAP驗證機制。 添 加“discovery.sendtarget.auth.username= authuser1”,“discovery.sendtarget.auth.password= securelink1”行,其作用是在執行發現操作時,必須使用賬戶名為“authname1”,密碼為“securelink1”的認證信息進行連接。
之后執行“/etc/init.d/iscsi restart”命令,重啟Initiator服務。執行“iscsiadm -m discovery -t sendtargets -p 192.168.1.100”命 令,來 查 看 在iSCSI Target服務器上設定了哪些LUN,因為在iSCSI Target服務器上已經允許查詢所有的LUN信息,所以在任何客戶機上都可以查看服務器提供的共享磁盤。但是當執行“fdisk -l”命令時,則只能連接到“/dev/sdc1”共享磁盤,因為根據以認證信息配置,該機只能連接和使用該共享磁盤。之后就可使用“fdisk”命令,對其執行分區格式化等操作。
當然,也可以使用Windows自帶的iSCSI發起程序,也可以實現安全連接。在Windows控制面板中運行iSCSI發起程序,在其主界面中的“發現”面板中點擊“發現門戶”按鈕,在打開窗口中輸入上述iSCSI Target服務器的IP和端口號,點擊“高級”按鈕,在高級設置窗口中選擇“啟用CHAP登錄”選項,在“名稱”欄中輸入上述用于查詢iSCSI Target服務器的賬戶名(例如“authname”),在“目標機密”欄中輸入與之關聯的密碼(例 如“securelink”),點擊“確定”按鈕保存配置信息。
之后打開“目標”面板,在其中的“已發現的目標”欄中顯示目標iSCSI Target服務器提供的兩個Target項目。選擇其中某個項目,點擊“連接”按鈕,在打開窗口中選擇“高級”按鈕,在高級設置窗口中選擇“啟用CHAP登錄”項,在“名稱”欄中輸入上述用于登錄iSCSI Target服務器的賬戶名(例如“authname2”),在“目 標機密”欄中輸入與之關聯的密碼(例如“securelink2”),點擊確定按鈕保存配置信息。這樣,Windows的iSCSI發起程序就順利連接到目標iSCSI Target指服務器上指定的共享分區。當然,這需要服從以上的設定信息。例如,其不能訪問沒有對應登錄權限的共享磁盤。運行“diskmgmt.msc”程序,在磁盤管理窗口中可以看到該共享分區,之后按照常規方式對其進行分區格式化等操作,就可以在本機上使用該共享分區。