iSCSI target介紹及LIO實操入門

前文介紹了iSCSI的基本架構及啓動器的基本操做,也就是在客戶端的操做。今天咱們介紹一下目標器的相關概念、開源實現和基本操做。Linux操做系統下面有不少目標器的開源實現,好比LIO、SCST和TGT等,本文以CentOS下的LIO爲例進行介紹。前端

image

LIO架構簡介

Linux-IO Target在Linux內核中(linux 2.6.38後),用軟件實現各類SCSI Target,其支持的SAN技術中全部流行的存儲協議包括Fibre Channel(Qlogic,linux3.5)、FCoE(linux3.0)、iSCSI(linux 3.1)、iSER (Mellanox InfiniBand,linux3.10), SRP (Mellanox InfiniBand,linux3.3), USB等,同時還能爲本機生成模擬的SCSI設備,以及爲虛擬機提供基於virtio的SCSI設備。Linux-IO Target使用戶可以使用相對廉價的Linux系統實現SCSI、SAN的各類功能,而不用購買昂貴的專業設備。linux

image

上圖顯示了Linux-IO Target的各個組件。LIO模擬了通用的SCSI設備,而且實現了SPC-3和SPC-4。接着,經過各類各樣的backstore對象,來導入真正的後端存儲,最後鏈接上各類前端Fabric模塊,來導出模擬的SCSI設備。不管是Fibre Channel、FCoE、iSCSI仍是vhost(即virtio),都只是一種Fabric技術,咱們能夠將其理解成傳輸協議,而在這些傳輸協議中傳輸的SCSI命令則老是由核心的SCSI設備處理的。要支持新的Fabric技術,並不須要修改核心的SCSI設備和後端存儲模塊,只須要按照該Fabric技術的規範實現對SCSI命令的傳輸就能夠了。iSCSI技術就是把SCSI命令放在TCP/IP中傳輸,vhost技術就是把SCSI命令放在virtio隊列中傳輸。shell

Generic Target Engine:實現了SAM中規定的一個SCSI target的功能,主要是SCSI協議的解析。它經過Fabric模塊和initiator通訊,經過backstore和具體的存儲設備通訊。編程

Fabric modules:實現了LIO的前端,即SCSI協議傳輸層的模塊。能夠經過Fabric Hardware Abstraction Layer(F-HAL)來爲LIO增長新的fabric模塊。後端

Backstores:實現了LIO的後端,即訪問磁盤數據的方式。能夠經過Storage Hardware Abstraction Layer(S-HAL)在LIO中增長新的存儲硬件的支持。一般使用BLOCKIO和FILEIO。bash

配置管理方法

Linux-IO Target則在內核態實現了對Target的模擬,配置管理則採用了更爲「現代化」的基於sysfs的方式,提供了友好的用戶態管理工具。從內核的2.6.38版起,Linux內核都包含Linux-IO Target的相關模塊。在用戶態,各大發行版都打包了targetcli和rtslib,其中targetcli程序用於配置、管理,rtslib則提供Python編程接口。架構

targetcli簡介tcp

targetcli是Linux-IO Target的用戶態的管理配置工具。用戶能夠使用yum或apt-get直接從各大發行版的官方倉庫安裝,對於較老的linux版本須要本身編譯源碼安裝。targetcli提供一個相似shell的界面,各類Target、TPG、LUN、backstore對象則被組織成目錄樹的形式,用戶能夠用ls、cd命令來瀏覽目錄樹,用create、delete命令來建立和刪除各類對象。瀏覽配置,就是瀏覽目錄樹,建立刪除各類對象,就是在目錄樹的各級節點中建立新的節點。同時targetcli還提供了常見的shell命令輔助編輯功能,例如TAB智能補全、上下鍵切換命令歷史、Ctrl + R搜索命令歷史。凡有不熟悉的命令,均可以用help命令查詢使用說明。工具

安裝targetcliui

在CentOS 7下執行以下命令能夠安裝targetcli:

# yum -y install targetcli
複製代碼

啓動target服務

# systemctl start target
複製代碼

設置開機啓動服務

# systemctl enable target
複製代碼

如防火牆未關閉則設置防火牆運行3206端口,關閉則不用執行此步驟

# firewall-cmd--permanent --add-port=3260/tcp
# firewall-cmd-reload
複製代碼

配置目標器資源

咱們這裏配置一個目標器資源,並添加導出的磁盤資源,這樣在啓動器端就能夠鏈接該目標器,並訪問該磁盤資源了。目標器端的管理很是簡單,就是經過targetcli實現對資源的管理。首先假設咱們已經有一塊獨立的磁盤sdc了

1. root權限運行targetcli

# targetcli
複製代碼

2. 創建一個塊存儲 注意:server1.disk(名稱server1可自定義),/dev/sdc爲上面新建的分區名稱。切換到以下目錄,並執行建立命令

/> cd /backstores/block
/> create server1.disk /dev/sdc

複製代碼

3. 配置ISCSI Target命名 注意:命名在同一子網內確保是惟一的,命名格式爲:iqn.yyyy-mm.<主機名反寫>:自定義名稱(自定義名稱內不能有下劃線)

/> cd /iscsi 
/> create iqn.1997-05.com.test:itworld123
複製代碼

4. 建立ACL容許ISCSI客戶機鏈接 注意:iqn.1997-05.com.test:client1爲客戶機ISCSI名稱。

/>cd /iscsi/iqn.2017-03.com.example:disk1/tpg1/acls
/>create iqn.2017-03.com.example:client1
複製代碼

5. 建立lun(target塊設備的邏輯單元)

/>cd /iscsi/iqn.1997-05.com.test:itworld123/tpg1/luns 
/> create /backstores/block/server1.disk
複製代碼

至此,咱們對Linux下的目標器(target)有了一個基本的瞭解,而且清楚瞭如何進行配置和資源導出。

相關文章
相關標籤/搜索