Skip to content

antony@notes:~/suse$ cat "Getting-Started-configuring-iSCSI-on-SLES-15-SP5.md"

Getting Started, configuring iSCSI on SLES 15 SP5

2023-11-08· suse ·SLE HAE

Getting Started, configuring iSCSI on SLES 15

Preface

本篇文章會主要會先介紹 iSCSI 是什麼,它的架構長得如何,以及它如何運作,最後實際在 SLES 15 SP5 上部屬與設定 iSCSI

可以透過點擊以下目錄,選擇想看的內容,跳轉至特定章節

:::warning

:::spoiler {state=“open”} 目錄

[TOC]

:::

1. 什麼是 iSCSI ?

  • iSCSI:Internet Small Computer System Interface
    • iSCSI 是一種儲存網路的通訊協定,它可簡化區塊儲存設備和伺服器之間透過 TCP/IP 網路進行的 SCSI 封包傳輸。
    • 讓 Server 能夠透過 TCP/IP 的技術直接存取硬碟
    • ISCSI 讓建立共享儲存網路成為可能,在這個網路中,多個伺服器和用戶端可以存取中央儲存資源,就像存取本機連線的裝置一樣。
    • iSCSI 利用了 TCP/IP 的 port 860 和 3260 作為溝通的管道。

1.1. iSCSI 和 NFS 差在哪?

iSCSI 是由 IBM 發明的基於乙太網路的儲存協議,該協議與 NFS 協議都是為了解決儲存資源共享問題的解決方案。兩者意圖一致,只不過兩者是不同的實作方式,前者在客戶機上呈現的是一個 Block Device ( 區塊設備 ),而後者則是目錄樹。

image.png

iSCSI 是一種儲存設備遠端映射技術,它可以將一個遠端伺服器上的儲存設備映射到本地,並呈現為一個區塊設備(說白了就是磁碟)。從一般使用者的角度,映射過來的磁碟與本機安裝的磁碟毫無差異。

image.png

:::info

:::spoiler {state=“open”} “block devices” 和 “raw disk” 又差在哪 ???


Block devices file

  • 當透過區塊裝置檔案存取硬碟時,系統會先將資料讀取或寫入記憶體中的緩衝區,再將資料傳輸到實際的硬碟。
  • 優點:可以改善對實體磁碟的輸入輸出效能。

Character device file

  • 字元裝置檔案 (character device file) 也稱為原始裝置檔案 (raw device file)。
  • 字元裝置檔案會一次傳輸一個字元到裝置。
  • 磁帶機通常透過字元裝置檔案存取。

:::

2. 它如何運作 ?

iSCSI 主要是透過 TCP/IP 的技術,將儲存設備端透過 iSCSI target ( iSCSI 標的 ) 功能,做成可以提供磁碟的伺服器端,再透過 iSCSI initiator ( iSCSI 初始化用戶 ) 功能,做成能夠掛載使用 iSCSI target 的用戶端,如此便能透過 iSCSI 協定來進行磁碟的應用了。

也就是說,iSCSI 這個架構主要將儲存裝置與使用的主機分為兩個部分,分別是:

  • iSCSI target:就是儲存設備端,存放磁碟或 RAID 的設備,目前也能夠將 Linux 主機模擬成 iSCSI target 了!目的在提供其他主機使用的『磁碟』。
  • iSCSI initiator:就是能夠使用 target 的用戶端,通常是伺服器。 也就是說,想要連接到 iSCSI target 的伺服器,也必須要安裝 iSCSI initiator 的相關功能後才能夠使用 iSCSI target 提供的磁碟就是了。

image.png

2.1. 舉例

  1. iSCSI LIO target server 和 iSCSI initiator servers 在區域網路 IP 層傳送 SCSI 封包進行通訊。
  2. 當 initiator server 上執行的應用程式開始查詢在 iSCSI LIO target 的 Disk 中的資料時,作業系統會產生必要的 SCSI 命令。
  3. 然後,SCSI 指令被嵌入 IP 封包,並由 iSCSI initiator 的軟體進行必要的加密。
  4. 這些資料包透過內部 IP 網路傳輸到對應的 iSCSI LIO target server。

LIO 是 Linux 的標準開源 multiprotocol SCSI target。 LIO 取代了 SCSI target 框架,成為 Linux 核心版本 2.6.38 及更高版本的標準統一儲存目標器。

3. 在 SLES 15 SP5 上部屬 iSCSI

3.1. 安裝 iSCSI initiator

在每一台 iSCSI initiator 機器執行以下命令

$ sudo zypper in -y open-iscsi yast2-iscsi-client

3.2. 安裝 iSCSI LIO Target Server

在每一台 iSCSI LIO Target Server 機器執行以下命令

$ sudo zypper in -y yast2-iscsi-lio-server

3.3. 設定 iSCSI LIO Target Server

3.3.1. 準備儲存空間

iSCSI LIO Target 可使用具有 Linux、Linux LVM 或 Linux RAID 檔案系統 ID 的未格式化分割區。

  1. 在兩台機器上多新增了兩顆 100 G 的 Disk
sle-ha-1:~ # lsblk /dev/sdb
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb    8:16   0  100G  0 disk

sle-ha-2:~ # lsblk /dev/sdb
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb    8:16   0  100G  0 disk

將 Disk 或 partition 設定為 iSCSI Target 後,切勿直接透過其本機路徑進行存取,不要在 target server 上掛載分割區。

3.3.2. 設定 iSCSI LIO Target Service 開機自動啟動

iSCSI LIO Target Service 預設要手動啟動,可以將服務設定為在系統啟動時自動啟動。

  1. Start YaST and launch Network Services › iSCSI LIO Target.
$ sudo yast2 iscsi-lio-server
  1. Switch to the Service tab

  2. 設定開機自動啟動 iSCSI Targets 服務

┌Service Configuration─────────────────────────────────────────┐
│Current status: Inactive                                      │
│After writing configuration:                                  │
│Start▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒↓                                  │
│After reboot:                                                 │
│Start on boot▒↓                                               │
└──────────────────────────────────────────────────────────────┘
  • After writing configuration: Start
  • After reboot: Start on boot

3.3.3. 設定 iSCSI LIO target group

  1. Start YaST and launch Network Services › iSCSI LIO Target.

  2. Switch to the Targets tab.

  3. Click Add, then define a new iSCSI LIO target group and devices:

    • Target: iqn.2023-11.com.example
    • Identifier: ha1-disk
    • Portal Group: 1
    • IP Address: 10.12.2.11
    • Port Number: 3260
    • [x] Bind all IP addresses

image.png

  1. Add a new initiator entry for the selected iSCSI LIO target group.

    • 在 Lun 區塊下點擊 add
    • LUN Path: /dev/sdb

image.png

  1. Click Finish to save and apply the settings.

3.4. 設定 iSCSI initiator

  1. Start YaST and launch Network Services › iSCSI Initiator.

  2. Switch to the Service tab.

  3. 設定開機自動啟動服務

$ sudo yast2 iscsi-client
  • After writing configuration: Restart
  • After reboot: Start on boot

image.png

  1. Switch to the Discovered Targets tab.
  2. Connect Targets

image.png

  1. Startup and Authentication
  • Startup: automatic
  • Next

image.png

  1. 確認 Connected Targets

確認都沒問題後點擊 OK

image.png

  1. 檢查
# lsscsi
[0:0:0:0]    disk    QEMU     QEMU HARDDISK    2.5+  /dev/sda
[0:0:0:1]    disk    QEMU     QEMU HARDDISK    2.5+  /dev/sdb
[2:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0
[3:0:0:0]    disk    LIO-ORG  IBLOCK           4.0   /dev/sdc
[4:0:0:0]    disk    LIO-ORG  IBLOCK           4.0   /dev/sdd

參考文章