三種iSCSI target管理工具的比較


1. iSCSI簡介

從協議層次的角度看,通常所說的SCSI通常是指一組包含塊命令、控制器管理、系統命令和enclosure服務等內容的協議規范,對應於回話層;而其下的物理通道和鏈接方式就對應在數據鏈路層,SCSI命令可以通過串口、Fibre Channel、SAS、infiniband、Internet、USB、PCIE等進行傳輸。iSCSI就是一種把異地存儲資源通過TCP/IP網絡映射到本地邏輯存儲設備的SCSI實現。不同於NFS向用戶提供按文件為單位訪問遠程存儲的方式,它向用戶提供了以塊方式訪問遠程存儲資源的接口,也就是說用戶可以在本地/dev/下看到iSCSI映射后的磁盤。通常所說的target端是指遠端存儲資源所在的主機,比如存儲服務器;而initiator端是指鏈接到target端並會訪問遠端存儲資源的節點。

 

2. iSCSI target管理工具的特點

基於iSCSI的網絡屬性,很直觀地我們能想到它基本上是基於server-client模型。提供存儲資源的target相當於server,而使用遠程存儲資源的initiator端相當於client。基於現有的iSCSI協議規范,能夠開發出target端和initiator端工具。在Linux系統上,initiator端工具可以用iscsiadm,目前大部分os都自帶有這款工具;而target端的工具由於直接和性能和存儲管理相關,數量更多,目前常見的有targetcli、targetadm、ietadm,它們各有所長,分別能適用不同的場合。

 

2.1小巧玲瓏的LIO targetcli

相對而言,targetcli是最新的target管理工具,內核態基於Linux 2.6.38開始引入的Linux IO Target,用戶態提供了targetcli命令和python開發庫rtslib,為用戶提供了友好的操作界面。為此,現在大部分Linux OS發現版本默認都自帶了LIO targetcli。在缺省沒有安裝的linux OS上,用戶可以參考下面的命令進行安裝:

yum install targetcli.noarch

 

如果重啟后,發現target異常,需要檢查下面兩個后台服務是否開啟:

systemctl start targetd.service

systemctl start target.service

2.2功能完備的tgtadm

在LIO出現之前,tgtadm是首選的target管理工具,被用到企業存儲解決方案當中。除了LUN管理、ACL控制等功能之外,它還提供了對已連接上的initiator的檢測和iSNS服務的支持。雖然界面沒法和LIO的targetcli相比,但是不乏功能強大的命令來完成各種操作。

 

用戶可以通過下面的命令來安裝它:

yum install scsi-target-utils.x86_64

同樣tgtadm后台依賴於tgtd的默默運行,雖然你可以打開debug選項來調試。

 

下面給出了常用命令的一些例子:

創建一個target:

tgtadm --lld iscsi --op new --mode target --tid 2 -T iqn.2016-09.com.sborst:storage.sdc3

往target里面新建一個lun:

tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 1 -b /dev/sdc3

用下面的命令可以顯示剛創建的target和lun:

tgtadm --lld iscsi --op show --mode target

在target端可以通過類似下面的命令來添加portal信息:

tgtadm --lld iscsi --op new --mode portal --param portal=10.1.1.111:3260

添加ACL列表:

tgtadm --lld iscsi --op bind --mode target --tid 2 -I ALL,

 

2.3精益求精的ietadm

tgtadm創建的SCSI設備實際都是在用戶態中實現的,存在性能瓶頸。為了解決這個問題,企業級別的target管理工具((iSCSI Enterprise Target) 營運而生,它依賴內核模塊iscsi_trgt.ko來幫助iSCSI設備的創建。此外,ietadm提供了以配置腳本的方式來設置和管理target及權限,還提供了顯示discovery列表的功能。

 

從https://sourceforge.net/projects/iscsitarget/files/latest/download?source=typ_redirect

載到源代碼之后,整個目錄是這個樣子的:

[root@localhost iscsitarget-1.4.20.2]# ls

ChangeLog dkms.conf  etc      iscsitarget.spec  Makefile  README             README.mcs     RELEASE_NOTES

COPYING   doc        include  kernel            patches   README.initiators README.vmware  usr

 

用戶可以make && make install, 然后make生成ietadm和它依賴的后台服務ietd。接着啟動ietd服務后,就可以創建自己的LUN和ACL了。根據http://czmmiao.iteye.com/blog/2055805的描述,還有許多腳本可以用來控制哪些initiator可以discovery target,

/etc/init.d/iscsi-target iscsitarget的啟動腳本
/etc/ietd.conf iscsitarget的配置文件
/etc/initiators.allow控制initiator對target的訪問權限。
/etc/initiators.deny控制initiator對target的訪問權限。
/etc/iet/targets.allow控制不同target的被訪問權限。
/etc/ietd.conf
Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
Lun 0 Path=/dev/sda1,Type=fileio
Alias lun0
大致說明:
Target iqn.2001-04.com.example:storage.disk2.sys1.xyz 表示該ISCSI Target 的命名,命名在同一子網內應該是唯一的,標准命名方式為:
"Target "+ target名字 (格式如下:iqn.yyyy-mm.<reversed domain name>[:identifier] )
“Lun 0 Path=/dev/sda1”表示塊設備號為0,映射的磁盤為/dev/sda1。
本次配置中Type的設定為"fileio",當然也可以針對需要設置為:"file" or "LVM"。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM