Open-iSCSI
本文講述如何通過 Open-iSCSI initiator 訪問 iSCSI 目標。
安裝[編輯 | 編輯原始碼]
安裝 open-iscsi包 包。
概覽[編輯 | 編輯原始碼]
下圖顯示各組件是如何協同工作的。更詳細的版本參見:Open-iSCSI 模塊(已過時)。
+--------------------------------------------------------+ | Targets & Sessions configuration files and directories | +--------------------------------------------------------+ +--------------------------+ +----------------------------------+ | iscsiadm | | iscsid: iSCSI daemon | | | | | | * Command line tool |<--->| * Implements Session management | | * Manages database of | | * Communicates with iscsiadm | | sessions and targets | | and iscsi kernel modules | +--------------------------+ +---------------+------------------+ | User space | - - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - - - - - - Kernel v +-----------------------------------------------------------+ | kernel modules: scsi_transport_iscsi, iscsi_tcp, libiscsi | +-----------------------------------------------------------+
來自 Open-iSCSI README:
配置持久化由一套文件及目錄樹實現,一共包括在兩個目錄中:
/etc/iscsi/
變更為 /var/lib/iscsi/
。這一遷移過程不是自動的,需要先斷開所有目標並停止服務,手動遷移後再重新連接。另外,需檢查文件系統權限。
/etc/iscsi/
應只包含 initiatorname.iscsi
和 iscsid.conf
- 發現目錄
/var/lib/iscsi/send_targets
:包含由目標地址命名的目錄 - 節點目錄
/var/lib/iscsi/nodes
:包含由特定設備的 ION(ISCSI Unique Name)命名的目錄
配置[編輯 | 編輯原始碼]
啟動服務[編輯 | 編輯原始碼]
iscsid
由一個 systemd 單元來管理。
啟動 iscsid.service
或是 iscsid.socket
。
ISCSI Qualified Name (IQN)[編輯 | 編輯原始碼]
IQN 被用於識別每個設備。
Open-ISCSI 將它的 initiator IQN 存放於 /etc/iscsi/initiatorname.iscsi
文件中,格式為 InitiatorName=iqn
在安裝過程中會生成初始 IQN,如果你想生成新的 IQN,可以使用 iscsi-iname
工具來輸出新的 IQN。
認證[編輯 | 編輯原始碼]
如果 ISCSI 目標要求 initiator 進行認證,則需要更新配置文件(/etc/iscsi/iscsid.conf
)的內容。
下列參數用於驗證從 initiator 到目標的登錄會話:
node.session.auth.authmethod = CHAP node.session.auth.username = initiators_username node.session.auth.password = initiators_password
如果目標啟用了雙向驗證,則需要額外修改下列參數:
node.session.auth.username_in = targets_username node.session.auth.password_in = targets_password
如果目標需要驗證才能獲取節點清單(少數情況下出現),則需要額外修改下列參數:
discovery.sendtargets.auth.authmethod = CHAP discovery.sendtargets.auth.username = initiators_username discovery.sendtargets.auth.password = initiators_password
如果目標啟用了雙向驗證,則需要額外修改下列參數:
discovery.sendtargets.auth.username_in = targets_username discovery.sendtargets.auth.password_in = targets_password
/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port,1/default
並按需添加或編輯選項。[1]發現目標[編輯 | 編輯原始碼]
向目標請求節點清單:
# iscsiadm --mode discovery --portal target_ip --type sendtargets
成功後,節點和目標的信息會保存到你的 initiator 中。
手動添加目標[編輯 | 編輯原始碼]
# iscsiadm -m node --target targetname --portal target_ip -o new
可以在伺服器不允許發現時使用該方法。
刪除廢舊目標[編輯 | 編輯原始碼]
# iscsiadm -m discovery -p target_ip -o delete
登錄到有效的目標[編輯 | 編輯原始碼]
# iscsiadm -m node -L all
或者,登錄到指定目標
# iscsiadm -m node --targetname=targetname --login
登出:
# iscsiadm -m node -U all
信息[編輯 | 編輯原始碼]
對於運行中的會話
# iscsiadm -m session -P 3
上面命令輸出的最後一行會顯示連接到的設備名,比如
Attached scsi disk sdd State: running
對於已知節點
# iscsiadm -m node
在線修改卷大小[編輯 | 編輯原始碼]
如果 iscsi 塊設備包含一個分區表,則不能在線修改卷大小。這種情況下必須首先卸載文件系統,然後再調整相關分區的大小。
- 重新掃描當前會話中的活動節點。
# iscsiadm -m node -R
- 在多路徑環境中,也必須重新掃描多路徑下的卷信息。
# multipathd -k"resize map sdx"
- 完成後再調整文件系統大小。
# resize2fs /dev/sdx
提示[編輯 | 編輯原始碼]
檢查已連接的 iSCSI 設備[編輯 | 編輯原始碼]
可以用下列命令檢查已連接的 iSCSI 設備在 /dev/
設備樹中的位置:
$ ls -l /dev/disk/by-path/ip-*
啟動時登錄到目標[編輯 | 編輯原始碼]
要在啟動時登錄到目標,需啟用 iscsi.service
服務,並確保節點的配置(/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port
)中包含 node.startup = automatic
一項。
排障[編輯 | 編輯原始碼]
客户端 IQN[編輯 | 編輯原始碼]
你可能需要在服務端(target)的賬户配置中添加客户端的 IQN(位於 /etc/iscsi/initiatorname.iscsi
)。
調試 iSCSI daemon[編輯 | 編輯原始碼]
可以使用如下命令以調試模式運行 iSCSI daemon(確保已停止 iscsid.service
):
# iscsid -d 8 -c /etc/iscsi/iscsid.conf -i /etc/iscsi/initiatorname.iscsi -f