設定 iSCSI 啟動程式

iSCSI 啟動程式也稱為用戶端,它可用來連接任何 iSCSI 目標。這不僅僅限於上述 iSCSI 目標解決方案。iSCSI 啟動程式的組態涉及兩個主要步驟 — 探查可用的 iSCSI 目標和設定 iSCSI 工作階段。這兩個步驟都可以使用 YaST 來完成。

使用 YaST 設定 iSCSI 啟動程式的組態

組態分為三個索引標籤。服務索引標籤可用來在開機時啟用 iSCSI 啟動程式。同時會提供設定用於該探查的唯一啟動程式名稱iSNS 伺服器。iSNS 的預設連接埠為 3205連接的目標索引標籤會提供目前已連接 iSCSI 目標的綜覽。它和探查的目標索引標籤一樣,提供為系統新增新目標的選項。最開始請從探查的目標索引標籤開始。它提供在網路上探查 iSCSI 目標的可能性。

  1. 使用探查開啟探查對話方塊。

  2. 輸入 IP 位址,並視需要變更連接埠。

  3. 若有需要,請新增內送外送驗證。

  4. 按一下下一步開始探查。

探查成功後,使用登入啟用目標。系統會詢問使用所選 iSCSI 目標的驗證資訊。按一下「下一步」以完成組態。如果一切順利,現在目標就會出現在連接的目標中。

接著,就可以使用虛擬 iSCSI 設備。請用 lsscsi 尋找實際設備:

lsscsi
[1:0:0:0]   disk    IET      VIRTUAL-DISK     0     /dev/sda

手動設定 iSCSI 啟動程式

iSCSI 連線的探查和組態都需要執行中的 iscsid。第一次執行搜索時,會在 /var/lib/open-iscsi 目錄中建立 iSCSI 啟動程式的內部資料庫。

如果您的探查受到密碼保護,請提供驗證資訊給 iscsid。因為執行第一次探查時,內部資料庫還不存在,所以這時無法使用該資料庫,而必須編輯 /etc/iscsid.conf 組態檔案來提供資訊。若要新增您的搜索密碼資訊,請將下列幾行加到 /etc/iscsid.conf 結束處:

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <username>
discovery.sendtargets.auth.password = <password>

探查會將收到的所有值儲存在永久的內部資料庫中。此外,它會顯示所有偵測到的目標。請使用 iscsiadm -m discovery --type=st --portal=<targetip>執行這個探查。輸出應該類似以下資訊:

149.44.171.99:3260,1 iqn.2006-02.com.example.iserv:systems

若要探查 iSNS 伺服器上可使用的目標,請使用 iscsiadm --mode discovery --type isns --portal <targetip> 指令

針對 iSCSI 目標上定義的每個目標,會各出現一行。請參閱第 12.2.4 節「iSCSI 用戶端資料庫」,了解如何取得更多有關儲存資料的詳細資訊。

iscsiadm 特殊的 --login 選項會建立所有需要的設備:

iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --login

新產生的設備會顯示在 lsscsi 的輸出中,而且現在可以用 mount 來存取。

在 iSCSI 設備上設定 LVM 自動組件

由於 udev 支援 LVM 啟動,因此當偵測到所有需要的實體磁碟區之後,各 LVM 磁碟區群組就會透過 udev 自動啟動。

udev 中的 LVM 自動組件會使用 udev 輔助程式 collect。此程式會將要檢查的抽象 ID 做為第一個引數,後跟元件 ID 的清單。如果呼叫此程式時,每個元件 ID 都是做為第一個引數,則程式會傳回 0。

因此,對於自動組件,指定磁碟區群組的實體磁碟區 UUID 會註冊為 collect 的引數清單。udev (或 vol_id) 能夠偵測出設備上的實體磁碟區 UUID,因此可做為第一個引數傳遞至 collect

當已使用所有實體磁碟區 UUID 呼叫 collect 後 (即 udev 已收到所有元件設備的事件),下一個規則就會觸發,呼叫 vgchange -a y <vgname>,該磁碟區群組即會啟動。

設定方法

使用程序檔 /usr/share/doc/packages/lvm2/lvm-vg-to-udev-rules.sh。該程序檔會將您希望自動啟動的磁碟區群組做為引數,並會產生所需的 udev 規則。現在,重新啟動 iSCSI 即可啟動磁碟區群組。若要在開機時自動啟動陣列,您必須將 iSCSI 元件設備切換為 automatic,以便啟動器在開機時自動登入目標。

iSCSI 用戶端資料庫

iSCSI 啟動程式探查到的所有資訊都儲存在位於 /var/lib/open-iscsi 的兩個資料庫檔案中。一個資料庫用來探查目標,一個資料庫用於已探查到的節點。存取資料庫時,您必須先選取要從探查資料庫或從節點資料庫中取得資料。使用 iscsiadm-m discovery-m node 參數就可以做到這一點。使用 iscsiadm 而且只搭配其中一個參數,可提供儲存記錄的綜覽:

iscsiadm -m discovery
149.44.171.99:3260,1 iqn.2006-02.com.example.iserv:systems

這個範例中的目標名稱為 iqn.2006-02.com.example.iserv:systems。與這個特殊資料集相關的所有動作都需要這個名稱。若要檢查 ID iqn.2006-02.com.example.iserv:systems 的資料記錄內容,請使用下列指令:

iscsiadm -m node --targetname iqn.2006-02.com.example.iserv:systems
node.name = iqn.2006-02.com.example.iserv:systems
node.transport_name = tcp
node.tpgt = 1
node.active_conn = 1
node.startup = manual
node.session.initial_cmdsn = 0
node.session.reopen_max = 32
node.session.auth.authmethod = CHAP
node.session.auth.username = joe
node.session.auth.password = ********
node.session.auth.username_in = <empty>
node.session.auth.password_in = <empty>
node.session.timeo.replacement_timeout = 0
node.session.err_timeo.abort_timeout = 10
node.session.err_timeo.reset_timeout = 30
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
....

若要編輯這其中一個變數的值,請使用 iscsiadm 指令搭配 update 作業。例如,如果希望 iscsid 在初始化時登入 iSCSI 目標,請將 node.startup 變數設定為 automatic 值:

iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --op=update --name=node.startup --value=automatic

使用 delete 作業可移除過時的資料集。如果目標 iqn.2006-02.com.example.iserv:systems 不再是有效記錄,請使用 iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --op=delete 指令刪除這筆記錄。請謹慎地使用此選項,因為該選項會刪除記錄,而不提供其他確認提示。

若要取得所有探查目標的清單,請執行 iscsiadm -m node 指令。

如需更多資訊

iSCSI 通訊協定已存在多年,所以有許多評鑑報告和其他文件,將 iSCSI 與 SAN 解決方案做比較、測試其效能基準或僅僅說明各種硬體解決方案。以下是 open-iscsi 相關詳細資訊的重要網頁:

  • http://www.open-iscsi.org/

  • http://www.open-iscsi.org/cgi-bin/wiki.pl

  • http://www.novell.com/coolsolutions/appnote/15394.html

此外也有一些線上文件。請參閱 iscsiadmiscsidietd.confietd 的手冊頁,以及 /etc/iscsid.conf 組態檔案範例。