共計 4243 個字符,預計需要花費 11 分鐘才能閱讀完成。
這篇文章給大家分享的是有關 Linux 下如何搭建 iSCSI 共享存儲的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
一、簡介
iSCSI(internet 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 可以從許多供應商處購買,包括 Adaptec、Alacritech、Intel 和 QLogic。
iSCSI 目標是 iSCSI 網絡的 服務器 組件。它通常是一個存儲設備,包含您所需的信息并響應來自(一個或多個)啟動器的請求。對于本文,節點 rac1 將是 iSCSI 目標。
二、實驗環境:
1、操作系統關閉防火墻和禁用 SELinux
2、iSCSI 共享存儲拓撲圖:
3、iSCSI 可分享的設備類型有很多,包括鏡像文件(*.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 Number,LUN),這個實驗中有 1 個 LUN。
其他高級設置如 initiator-address、incominguser,大家自己進行配置。
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 // 指定 target 的 IP 和 port,不寫 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
目標端分區:
客戶端查看分區結果:
感謝各位的閱讀!關于“Linux 下如何搭建 iSCSI 共享存儲”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!