LIO[失效連結 2022-12-31](LinuxIO)是從 Linux 2.6.38 開始內置在內核的 iSCSI 目標。
安裝
Linux 從 3.1 版本開始自帶 iSCSI 目標框架。
需要用到的兩個內核模塊為 target_core_mod 和 iscsi_target_mod,應已內置在內核中,並會自動加載。
強烈建議使用開放分支版本的包:targetcli-fbAUR,python-rtslib-fbAUR 和 python-configshell-fb包。
啟動/啟用隨 python-rtslib-fbAUR 安裝的 target.service
來加載需要的模塊,載入配置並加載之前保存的 iSCSI 目標配置。
targetcli
以 root 身份運行 targetcli status
來查看使用中配置的相關信息。
你可以使用 targetcli 來創建完整配置文件,具體信息可參考 targetcli(8)。
交互式配置終端會自動為你填充大部分名稱和參數,但你也可以自行指定配置信息。
在終端內的任何時候,你都可以輸入 help
來查看當前的可用命令。
cd
來查看並選擇路徑。在啟動目標後(步驟參考上方),你可以通過
# targetcli
進入到交互式配置終端。
在該終端下,選定一個塊設備(此處以 /dev/disk/by-id/md-name-nas:iscsi
為例):
/backstores/block> create md_block0 /dev/disk/by-id/md-name-nas:iscsi
然後創建一個 iSCSI 限定名稱(IQN)和目標門戶組(TPG):
...> cd /iscsi /iscsi> create
create
後加上想要的名稱。接下來讓 LIO 使用你指定的塊設備作為目標的後端存儲(backstore):
cd
進入到你環境下的 <iqn>/tpg1 路徑。.../tpg1> cd luns .../tpg1/luns> create /backstores/block/md_block0
然後創建一個門戶(portal),這將創建一個守護進程來監聽上行連接:
.../luns/lun0> cd ../../portals .../portals> create
Targetcli 將匯報 LIO 監聽的 IP 及埠(默認為 0.0.0.0(所有地址))。 你至少需要將 IP 提供給客戶端,埠應為標準的 3260 埠。
為了讓客戶端/發起方能夠連接到目標,你需要將發起端的 IQN 加入到目標的配置中:
...> cd ../../acls .../acls> create iqn.2005-03.org.open-iscsi:SERIAL
你應使用發起端的 IQN,而不是照抄 iqn.2005-03.org.open-iscsi:SERIAL
到命令中。
一般可以在 /etc/iscsi/initiatorname.iscsi
找到 IQN。
你需要對每一個用到該目標的發起端都進行該操作。
Targetcli 會自動將創建的 LUN 映射到最近創建的 ACL 下。
help create
來查看。確認配置起效後,最後一步是保存配置:
...> cd / /> saveconfig
這一步將把配置保存在 /etc/target/saveconfig.json
文件內。
你現在就可以安全地啟動和停止 target.service
了,不用擔心丟失配置。
saveconfig
時將文件名作為參數傳入,也可以使用 clearconfig
清空所有配置。認證
目標默認啟用 CHAP 認證。 你可以選擇配置一個密碼,也可以禁用認證。
禁用認證
在 targetcli 中進入到目標的路徑下(例如 /iscsi/iqn.../tpg1),然後:
.../tpg1> set attribute authentication=0
配置憑據
在 targetcli 中進入到目標的具體 ACL 路徑下(例如 /iscsi/iqn.../tpg1/acls/iqn.../),然後:
...> get auth
這將顯示當前的認證憑據。
...> set auth userid=<username in target> ...> set auth password=<password in target> ...> set auth mutual_userid=<username in initiator> (optional) ...> set auth mutual_password=<password in initiator> (optional)
前兩個欄位是目標的用戶名和密碼,發起方會使用該信息登錄到目標。後兩個欄位(以「mutual_」開頭)是發起方的用戶名和密碼(注意,所有發起方都使用同一個用戶名和密碼)。這兩個是可選參數,用於確保發起方僅接受已授權的目標的連接。
小技巧
- 可以使用
targetcli sessions
查看當前開啟的會話。
參考
- targetcli
- Persistent block device naming in order to use the correct block device for a target