Linux下搭建iSCSI共享儲存

迷倪小魏發表於2017-04-20


一、簡介

     iSCSIinternet SCSI)技術由IBM公司研究開發,是一個供硬體裝置使用的、可以在IP協議的上層執行的SCSI指令集,這種指令集合可以實現在IP網路上執行SCSI協議,使其能夠在諸如高速千兆乙太網上進行路由選擇。iSCSI技術是一種新儲存技術,該技術是將現有SCSI介面與乙太網路(Ethernet)技術結合,使伺服器可與使用IP網路的儲存裝置互相交換資料。

     iSCSI是一種基於TCP/IP 的協議,用來建立和管理IP儲存裝置、主機和客戶機等之間的相互連線,並建立儲存區域網路(SAN)。SAN 使得SCSI 協議應用於高速資料傳輸網路成為可能,這種傳輸以資料塊級別(block-level)在多個資料儲存網路間進行。SCSI 結構基於C/S模式,其通常應用環境是:裝置互相靠近,並且這些裝置由SCSI 匯流排連線。

     iSCSI 的主要功能是在TCP/IP 網路上的主機系統(啟動器 initiator)和儲存裝置(目標器 target)之間進行大量資料的封裝和可靠傳輸過程。

完整的iSCSI系統的拓撲結構如下:

    從本質上說,iSCSI 啟動器是一個客戶端裝置,它連線到伺服器(在本例中是 iSCSI 目標)提供的某一服務,併發起對該服務的請求。iSCSI 啟動器軟體需要安裝在每個 Oracle RAC 節點(rac1 rac2)上。   iSCSI 啟動器可以用軟體實現,也可以用硬體實現。軟體 iSCSI 啟動器可用於大部分主要作業系統平臺。對於本文,我們將使用 iscsi-initiator-utils RPM 中提供的免費 Linux Open-iSCSI 軟體驅動程式。iSCSI 軟體啟動器通常與標準網路介面卡 (NIC)(大多數情況下是千兆位乙太網卡)配合使用。硬體啟動器是一個 iSCSI HBA(或 TCP 解除安裝引擎 (TOE) 卡),它本質上只是一個專用乙太網卡,其上的 SCSI ASIC 可以從系統 CPU 內解除安裝所有工作(TCP SCSI 命令)。iSCSI HBA 可以從許多供應商處購買,包括 AdaptecAlacritechIntel QLogic

      iSCSI 目標是 iSCSI 網路的"伺服器"元件。它通常是一個儲存裝置,包含您所需的資訊並響應來自(一個或多個)啟動器的請求。對於本文,節點rac1 將是 iSCSI 目標。


二、實驗環境:

1、作業系統關閉防火牆和禁用SELinux

2、iSCSI共享儲存拓撲圖:

3iSCSI可分享的裝置型別有很多,包括映象檔案(*.img)、分割槽(partition)、物理硬碟、raid裝置、邏輯卷等,下面我只用物理磁碟分割槽來進行相關測試,其他型別大家可以自己測試。


三、實驗步驟

(一)配置iscsi target:

方案1:命令列配置,立即有效,重啟無效

1、在target上新增一塊磁碟裝置:sdb

2、安裝程式包、啟動服務

[root@rac1 ~]# yum install -y scsi-target-utils

[root@rac1 ~]# service tgtd start

3、建立target

[root@rac1 ~]# tgtadm --lld /dev/sdb --mode target --op new --tid 1 --targetname iqn.2017-04.comcomsys:iscsi.fcdisk

4、建立lun

[root@rac1 ~]# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdb

[root@rac1 ~]# tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1 #刪除lun的方法

5、授權

[root@rac1 ~]# tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 10.1.1.0/24  #限制只有10.1.1.0的網段可訪問

6、檢視已經定義的資訊

[root@rac1 ~]# tgtadm --lld iscsi --mode target --op show


方案2:在配置檔案中定義,重啟有效

1、安裝tgt

RedHat6自帶了scsi-target-utils 軟體,我們使用該軟體進行target設定。

[root@rac1 ~]# yum install scsi-target-utils -y

2、配置tgt

tgt的主配置檔案為/etc/tgt/targets.conf,下面我們來設定該檔案。

在該檔案最後新增以下設定:

說明:

iqn = iSCSI Qualified Name

iSCSI target的名稱規則如下:

iqn.2014-07.dev.iscsi-target:iscsidisk –--->iqn.年份-月份.域名反寫.裝置識別

每個在同一個target上的backing-store 稱為邏輯單元號(Logical Unit NumberLUN),這個實驗中有1LUN

其他高階設定如initiator-addressincominguser,大家自己進行配置。


3、啟動iSCSI target

[root@rac1 ~]# /etc/init.d/tgtd start

[root@rac1 ~]# chkconfig tgtd on

[root@rac1 ~]# netstat -tulnp|grep tgt


4、檢視iSCSI target

[root@rac1 ~]# tgt-admin –show

LUN0 是控制器,可以看到各個LUN的大小和磁碟路徑。

至此,iSCSI Target 設定完畢。


(二)配置iSCSI Initiator

1、安裝initiator

[root@rac1 ~]# yum -y install iscsi-initiator-utils

2、設定開機啟動

[root@rac1 ~]# chkconfig iscsid on

[root@rac1 ~]# chkconfig iscsi on

3、修改配置檔案

initiator的配置文件位於/etc/iscsi/,該目錄下有兩個檔案,initiatorname.iscsi iscsid.conf,其中iscsid.conf 是其配置檔案,initiatorname.iscsi 是標記了initiator的名稱,它的預設名稱是InitiatorName= InitiatorName=iqn.1994-05.com.redhat:2f897b321a2,我們可以根據實際情況進行更改,比較好區分,這裡我們修改為InitiatorName= iqn.2017-04.com.comsys:fcdisk.sdb

因為在target裡面,我們並沒有設定訪問限制,所以iscsid.conf 檔案並不需要修改。


小知識:

[root@rac2 iscsi]#echo "InitiatorName=`iscsi-iname -p iqn.2017-04.com.comsys:fcdisk.sdb`" > /etc/iscsi/initiatorname.iscsi  (使用iscsi-iname命令生成隨機數 )


4、偵測target

如果我們事先不知道目標主機的target名稱,我們就需要進行偵測。

基本格式:iscsiadm -m discovery -d # -t sendtargets -p IP[:PORT]

[root@rac2 iscsi] iscsiadm -m discovery -t sendtargets -p 10.1.1.51

說明:

-m discovery   //偵測target

-t sendtargets  //透過iscsi協議(sendtargets可簡寫為st

-p IP:port   //指定targetIPport,不寫port的話,預設為3260


5、檢視nodes

iscsiadm 偵測到的結果會寫入/var/lib/iscsi/nodes/ 中,因此只需啟動/etc/init.d/iscsi 就能夠在下次開機時,自動連線到正確的target了。

[root@rac2 iscsi] ll -R /var/lib/iscsi/nodes/

偵測資訊都寫入了/var/lib/iscsi/nodes/ iqn.2017-04.com.comsys:iscsi.fcdisk /10.1.1.51,3260,1/default 檔案中了。


6、連線target

檢視目前系統上面所有的target

[root@rac2 iscsi] iscsiadm -m node

補充知識:

連線與退出

基本格式:iscsiadm -m node [ -d debug_level ]  [ [ -T targetname -p ip:port -I ifaceN ] [ -l | -u | -R | -s] ] [ [ -o  operation  ]

[root@rac2 iscsi] iscsiadm -m node -d 1 -T iqn.2017-04.com.comsys:iscsi.fcdisk -p 10.1.1.51:3260 -u #退出

[root@rac2 iscsi] iscsiadm -m node -d 1 -T iqn.2017-04.com.comsys:iscsi.fcdisk -p 10.1.1.51:3260 -o #刪除指定條目


連線target

[root@rac2 ~] iscsiadm -m node -d 1 -T iqn.2017-04.com.comsys:iscsi.fcdisk -p 10.1.1.51:3260 -l


7、檢視磁碟情況

[root@rac2 ~] fdisk –l

可以看到,initiator 上面多了一塊硬碟,大小和target上的LUN一致。這時你就可以像使用本地磁碟一樣使用這些iSCSI裝置了,下面我們來測試。


8、檢視target資訊

[root@rac1 ~] tgt-admin --show


(三)測試

/dev/sdb在目標端進行分割槽,然後在客戶端檢視具體的分割槽情況

[root@rac1 ~]# fdisk /dev/sdb

目標端分割槽:

客戶端檢視分割槽結果:



作者:SEian.G

◇本文在ITPUBhttp://blog.itpub.net/31015730/

     51CTOhttp://seiang.blog.51cto.com/上有同步更新

◇本文itpub地址:http://blog.itpub.net/31015730/viewspace-2137709/

◇本文51CTO地址:http://seiang.blog.51cto.com/10819863/1917934




 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31015730/viewspace-2137709/,如需轉載,請註明出處,否則將追究法律責任。

相關文章