ISCSI/LIO - Arch Linux 中文维基

跳至內容

# ISCSI/LIO

出自 Arch Linux 中文维基
< ISCSI
翻譯狀態：

- 本文（或部分內容）譯自 ISCSI/LIO，最近一次同步於 2025-07-13，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

LIO（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` 來查看當前的可用命令。

提示：在該終端內，你可以使用 tab 進行命令補全，也可以使用 `cd` 來查看並選擇路徑。

在啟動目標後（步驟參考上方），你可以通過

    # targetcli

進入到交互式配置終端。

在該終端下，選定一個塊設備（此處以 `/dev/disk/by-id/md-name-nas:iscsi` 為例）：

    /backstores/block> create md_block0 /dev/disk/by-id/md-name-nas:iscsi

注意：你可以使用任意塊設備，也可以使用 RAID 和 LVM 卷。如果你打算使用 fileio 而不是塊存儲對象，也可以指定一個文件。

然後創建一個 iSCSI 限定名稱（IQN）和目標門戶組（TPG）：

    ...> cd /iscsi
    /iscsi> create

注意：如果要自行指定 IQN，可在 `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 下。

注意：你可以修改自動映射的 LUN，也可以修改其讀寫權限。具體信息可在該步驟時輸入 `help create` 來查看。

確認配置起效後，最後一步是保存配置：

    ...> cd /
    /> saveconfig

這一步將把配置保存在 `/etc/target/saveconfig.json` 文件內。 你現在就可以安全地啟動和停止 `target.service` 了，不用擔心丟失配置。

提示：你可以在使用 `saveconfig` 時將文件名作為參數傳入，也可以使用 `clearconfig` 清空所有配置。

### 認證

目標默認啟用 CHAP 認證。 你可以選擇配置一個密碼，也可以禁用認證。

#### 禁用認證

在 targetcli 中進入到目標的路徑下（例如 /iscsi/iqn.../tpg1），然後：

    .../tpg1> set attribute authentication=0

警告：設置該參數後，知道任一發起方 IQN 的人都可以連接到該目標。建議僅用於測試或家庭環境中。

#### 配置憑據

在 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

分類：​

- 存儲
- 網絡

ISCSI/LIO
新增話題