來自 維基百科:iSCSI 可以通過基於 IP 的網絡訪問存儲設備。
提供受訪的實體是 目標(target),發起訪問的實體稱為 發起者(initiator)。
本文講述如何通過 Open-iSCSI[失效連結 2021-11-15 ⓘ] 的 initiator 訪問 iSCSI target。
安裝
概覽
下圖顯示各組件是如何協同工作的。更詳細的版本參見:Open-iSCSI 模塊
+-------------------------------------------------------+ | Targets & Sessions configuration Database (DBM based) | +-------------------------------------------------------+ +--------------------------+ +----------------------------------+ | 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[失效連結 2021-05-17 ⓘ]:
持久化的配置通過一個 DBM 資料庫實現,它包括兩個表:
- 發現表(Discovery table)(/etc/iscsi/send_targets)
- 節點表(Node table)(/etc/iscsi/nodes)
配置
啟動服務
iscsid
由一個 systemd單元 來管理。
用 systemd 啟動 open-iscsi.service
。
You only have to include the IP of the target as SERVER
in /etc/conf.d/open-iscsi
at the client.
發現目標
# iscsiadm -m discovery -t sendtargets -p <portalip>
刪除廢舊目標
# iscsiadm -m discovery -p <portalip> -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 設備在 /dev 設備樹中的位置:
ls -lh /dev/disk/by-path/*
。
在伺服器端(target)的 acl 配置中應當包含客戶端的 iqn(位於客戶端的 /etc/iscsi/initiatorname.iscsi
)。
iscsiadm
的許多操作要求 iSCSI 的守護進程 iscsid
處於運行狀態。To verify that this is the case,
check the status of the open-iscsi.service
.
參閱
- iSCSI Boot Booting Arch Linux with / on an iSCSI target.