一、簡介
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系統的拓撲結構如下:
二、實驗環境
操作系統:CentOS release 6.3 (Final)
iSCSI Target:192.168.1.21 / scsi-target-utils-1.0.24-12.el6_5.i686
iSCSI Initiator:192.168.1.22 / iscsi-initiator-utils-6.2.0.873-10.el6.i686
防火牆已關閉/iptables: Firewall is not running.
SELINUX=disabled
三、准備工作
iSCSI可分享的設備類型有很多,包括鏡像文件(*.img)、分區(partition)、物理硬盤、raid設備、邏輯卷等,下面我們將准備其中的幾種來測試,其他類型大家可以自行測試。
3.1 模擬鏡像
在iSCSI Target的/srv目錄下創建一個200M大小的鏡像文件。
# mkdir /srv/iscsi
# dd if=/dev/zero of=/srv/iscsi/disk1.img bs=1M count=200
# ll -lh /srv/iscsi/disk1.img
3.2 建立分區
創建一個500M大小的分區/dev/sdb1.
# fdisk /dev/sdb
3.3 創建邏輯卷
創建一個800M大小的LV.
# pvcreate /dev/sdc
# vgcreate vg0 /dev/sdc
# lvcreate -L 800M -n lv1 vg0
四、配置iSCSI Target
4.1 安裝tgt
CentOS 自帶了scsi-target-utils 軟件,我們使用該軟件進行target設置。
# yum -y install scsi-target-utils
4.2 配置tgt
tgt的主配置文件為/etc/tgt/targets.conf,下面我們來設置改文件。
在該文件最后新增以下設置:
<target iqn.2014-07.dev.iscsi-target:iscsidisk> backing-store /srv/iscsi/disk1.img backing-store /dev/sdb1 backing-store /dev/vg0/lv1 backing-store /dev/sdd </target>
說明:
iqn = iSCSI Qualified Name
iSCSI target的名稱規則如下:
iqn.2014-07.dev.iscsi-target:iscsidisk
iqn.年份-月份.域名反寫.設備識別
每個在同一個target上的backing-store 稱為邏輯單元號(Logical Unit Number,LUN),這個實驗中有4個LUN。
其他高級設置如initiator-address、incominguser,大家自行查資料。
4.3 啟動iSCSI target
# /etc/init.d/tgtd start
# chkconfig tgtd on
# netstat -tulnp|grep tgt
4.4 查看iSCSI target
# tgt-admin –show
LUN0 是控制器,可以看到各個LUN的大小和磁盤路徑。
至此,iSCSI Target 設定完畢。
五、配置iSCSI Initiator
5.1 安裝initiator
# yum -y install iscsi-initiator-utils
5.2 設置開機啟動
# chkconfig iscsid on
# chkconfig iscsi on
5.3 配置文檔
initiator的配置文檔位於/etc/iscsi/,該目錄下有兩個文件,initiatorname.iscsi 和iscsid.conf,
其中iscsid.conf 是其配置文件,initiatorname.iscsi 是標記了initiator的名稱,它的默認名稱是InitiatorName=iqn.1994-05.com.redhat:b45be5af6021,我們可以根據實際情況進行更改,比較好區分,這里我們修改為InitiatorName=iqn.2014-07.dev.iscsi-initiator:initiator。
因為在target里面,我們並沒有設置訪問限制,所以iscsid.conf 文件並不需要修改。
5.4 偵測target
如果我們事先不知道目標主機的target名稱,我們就需要進行偵測,下面來講解。
# iscsiadm -m discovery -t sendtargets -p 192.168.1.21
說明:
-m discovery //偵測target -t sendtargets //通過iscsi協議 -p IP:port //指定target的IP和port,不寫port的話,默認為3260
5.5 查看nodes
iscsiadm 偵測到的結果會寫入/var/lib/iscsi/nodes/ 中,因此只需啟動/etc/init.d/iscsi 就能夠在下次開機時,自動連接到正確的target了。
# ll -R /var/lib/iscsi/nodes/
偵測信息都寫入了/var/lib/iscsi/nodes/iqn.2014-07.dev.iscsi-target:iscsidisk/192.168.1.21,3260,1/default 文件中了。
5.6 連接target
查看目前系統上面所有的target
# iscsiadm -m node
登錄target
# iscsiadm -m node -T iqn.2014-07.dev.iscsi-target:iscsidisk –login
5.7 查看磁盤情況
# fdisk –l
可以看到,initiator 上面多了四塊硬盤,大小和target上的LUN一致。這時你就可以像使用本地磁盤一樣使用這些iSCSI設備了,下面我們來測試。
5.8 將/dev/sdb 和/dev/sdc 創建成LV掛載使用
創建LV
# pvcreate /dev/sdb /dev/sdc
# vgcreate iscsi /dev/sdb /dev/sdc
# lvcreate -L 1G -n iscsilv iscsi
格式化並掛載
# mkfs.ext4 /dev/iscsi/iscsilv
# mkdir /mnt/iscsi
# vi /etc/fstab
創建測試文件
掛載成功,創建測試文件成功。
5.9 重啟測試
測試成功。
5.10 查看target信息
# tgt-admin --show
可以看到,此時使用該target的initiator 為iqn.2014-07.dev.iscsi-initiator:initiator,也就是我們上面更改的initiatorname,IP地址為192.168.1.22。
至此,iSCSI 置完畢。
David Camp
- 技術交流,請加QQ群:系統運維技術分享Ⅲ:416491168
- 業務合作,請聯系作者QQ:562866602
- 我的微信號:mchina_tang
- 給我寫信:mchina_tang@qq.com
- 我的地址:江蘇·蘇州
我們永遠相信,分享是一種美德 | We Believe, Great People Share Knowledge...