利用ISCSI存儲技術構建IP存儲網路(實戰篇)

火星人 @ 2014-03-09 , reply:0


本文重點介紹如何構建一個PC構架的iSCSI存儲系統,這裡我們選擇一個普通的、性能優良的、可支持多塊磁碟的PC伺服器作為iSCSI target,並且選擇一個成熟穩定的iSCSI target軟體iscsitarget,基本配置環境如表1所示:
表1

這裡將Target主機第三塊硬碟(硬碟標識為/dev/sdc)作為iSCSI共享磁碟,硬碟大小為10G,分別共享給一台windows主機和一台Linux主機,基本結構如圖1所示:

圖1

下面開始詳細介紹iSCSI網路存儲的搭建過程.

一、安裝iSCSI target軟體
安裝iscsitarget軟體是在Target主機上進行的,即上面設定的192.168.12.246主機,這裡我們選擇的target軟體是iscsitarget,讀者可以從http://iscsitarget.sourceforge.net下載相應的版本,這裡下載的是iscsitarget-1.4.20.1.tar.gz,接著開始進行編譯安裝:
[root@iscsi-target iscsi]#tar -xzvf iscsitarget-1.4.20.1.tar.gz
[root@iscsi-target iscsi]#cd iscsitarget-1.4.20.1
[root@iscsi-target iscsitarget-1.4.20.1]#make
[root@iscsi-target iscsitarget-1.4.20.1]#make install
Iscsitarget安裝完畢后,會創建/etc/iet/目錄,此目錄下有Iscsitarget的相關配置文件,接著就可以啟動Iscsitarget服務了,啟動或關閉Iscsitarget服務的命令如下:
[root@iscsi-target iscsi]# service iscsi-target
Usage: /etc/init.d/iscsi-target {start|stop|restart|condrestart|status}
如果要讓iscsi-target服務開機自動運行,需執行如下操作:
[root@iscsi-target iscsi]#chkconfig --level 35 iscsi-target on
到此為止,iscsitarget安裝完成.

二、配置一個簡單的iSCSI target
iSCSI Enterprise Target的主配置文件為/etc/iet/ietd.conf,此文件中的選項默認全部被註釋掉了,有需要用到這些選項時,再將註釋去掉即可.


打開ietd.conf文件,首先找到類似如下行:
#Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
此選項表示該iSCSI Target的命名,先將前面的“#”號去掉, Target的命名在同一子網內應該是唯一的,標準命名方式為:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
 iqn:表示“iSCSI Qualified Name”,簡稱iqn.
 yyyy-mm:表示年份-月份.這裡是2001-04.
 reversed domain name:表示倒過來的域名,這裡是com.example.
 identifier:表示識別代碼,這裡是storage.disk2.sys1.xyz.
接下來,就是要設定 LUN(Logical Unit Number),找到類似如下行:
#Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
將前面的“#”號去掉,“Lun 0 Path=/dev/sdb”表示塊設備號為0,映射的磁碟為/dev/sdb,“Type”值fileio是默認的,可以用於磁碟、file和LVM,這裡設定的是“fileio”,主要用來對一個磁碟進行存儲共享.讀者可以根據自己情況將Path改為需要共享的存儲分區的設備標識.這裡假定共享的設備標識為/dev/sdb.
至此,一個簡單的iSCSI Target已經配置完畢了,啟動iscsi-target服務:
[root@iscsi-target iscsi]# service iscsi-target start

三、在windows上配置iSCSI Initiator
下面的操作是在Initiator的windows主機上進行,即IP為192.168.12.136主機.
微軟對iSCSI Initiator的支持相當完備,讀者可以免費從微軟網站獲得iSCSI Initiator軟體,網址是http://www.microsoft.com/WindowsServer2003/technologies/storage/iscsi/default.mspx
,本章實例下載的版本是Initiator-2.08-build3825-x86fre.exe,接下來開始說明如何讓windows連接iSCSI Target.
安裝完成iSCSI Initiator后,在桌面上會發現啟動圖標,啟動Microsoft iSCSI Initiator后,選擇第二個分頁標籤“Discovery”,然後在“Target Portals”部分點擊“Add”按鈕,跳出“Add Target Portal”窗口,如圖2所示:


圖2

在此窗口下填寫iSCSI Target的ip地址和埠,iSCSI Target地址就是上面設定的Target主機的地址,iSCSI Target的埠默認是3260,除非有特殊設定,填寫完成,點擊OK按鈕.
接下來,選擇第三個分頁標籤“Targets”,如圖3所示,可以看到,iSCSI Initiator已經檢測到了iSCSI Target的名稱,但是此時的iSCSI Target還處於“inactive”狀態,點擊下方“Log On”按鈕,然後彈出“Log On to Target”窗口,接著按下“OK”按鈕來激活Target,此時iSCSI Target已經從“inactive”狀態變為“Connected”狀態.如圖4和圖5所示:

圖3

圖4


圖5

到此為止,windows系統已經識別了iSCSI Target提供的共享磁碟分區,通過windows的磁碟管理器可以看到新增加的磁碟分區,如圖6所示:



圖6

現在就可以使用windows的磁碟管理功能對這塊共享磁碟進行分區、格式化以及掛載等操作了.

四、在Linux上配置iSCSI Initiator
下面的操作是在Initiator的Linux主機上進行,即IP為192.168.12.26主機.
1 安裝Linux版本iSCSI Initiator
現在的主流Linux發行版本默認都自帶了iSCSI Initiator,即Open-iSCSI,如果系統沒有安裝,只需通過光碟找到iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm包,通過rpm方式安裝即可,當然也可以通過yum進行自動安裝,操作如下:
[root@ Initiator iscsi]#yum install iscsi*


安裝完成後,會生成/etc/iscsi主程序配置目錄,其它相關文件的安裝位置為:
/etc/iscsi/iscsid.conf
/etc/rc.d/init.d/iscsi
/etc/rc.d/init.d/iscsid
/sbin/iscsi-iname
/sbin/iscsiadm
/sbin/iscsid
/sbin/iscsistart
/var/lib/iscsi
/var/lib/iscsi/ifaces
/var/lib/iscsi/isns
/var/lib/iscsi/nodes
/var/lib/iscsi/send_targets
/var/lib/iscsi/slp
/var/lib/iscsi/static
/var/lock/iscsi
接下來需要啟動Initiator服務,操作如下:
[root@ Initiator iscsi]# service iscsi start

2 iSCSI Initiator目錄功能介紹
 /sbin/iscsiadm命令
在iSCSI Initiator安裝完成後,會生成/sbin/iscsiadm命令,此命令是用來管理(更新、刪除、插入、查詢)iSCSI配置資料庫文件的命令行工具,用戶能夠用它對iSCSI nodes、sessions、connections和discovery records進行一系列的操作.
 /var/lib/iscsi/send_targets目錄
在此目錄下,會生成一個或多個以iSCSI存儲伺服器IP和埠命名的文件夾,文件名為“iSCSI Target IP,埠號”(例如“192.168.12.246,3260”).
 /var/lib/iscsi/nodes目錄
在此目錄下,會生成一個或多個以iSCSI存儲伺服器上的Target名命名的文件夾,在該文件夾下有一個文件名為“iSCSI portal IP,埠號” (例如“192.168.12.246,3260”)的配置參數文件,該文件是iSCSI initiator登錄iSCSI target時要使用的參數,而這些參數的設置是從/etc/iscsi/iscsi.conf中的參數繼承而來的,可以通過iscsiadm命令對某一個參數文件進行更改.

3 在linux上執行iSCSI Target發現
可以使用如下指令向 iSCSI Target 主機查詢劃分了哪些lun:
iscsiadm -m discovery --type sendtargets --portal IP


或者
iscsiadm -m discovery -t sendtargets -p IP
例如:
[root@ Initiator iscsi ]# iscsiadm -m discovery -t sendtargets -p 192.168.12.246:3260
192.168.12.246:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
可以看出,“iqn.2001-04.com.example:storage.disk2.sys1.xyz”就是iSCSI Target的名稱.在配置iSCSI Target時,沒有做任何限制,因此所有的客戶端主機都允許連接iSCSI Target共享出來的磁碟.
需要說明的是:當成功執行一次Target發現后,iSCSI Initiator就會將查詢紀錄寫到/var/lib/iscsi/send_targets對應目錄下.因此,對於Target發現只需執行一次即可.
接著通過iscsiadm指令與iSCSI Target 主機建立連接,也就是登錄iSCSI Target:
iscsiadm -m node -T <target-name> -p <ip-address>:<port> --login
或者
iscsiadm -m node -T [target-name] -p [ip-address] -l
這裡的“-T”後面跟target名稱,“ip-address”是target主機的IP地址,“port”是target主機的埠號,默認是3260.
例如:
[root@ Initiator iscsi ]#iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.12.246 -l
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]
Login to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]: successful
如果有多個Target主機時,可以通過如下命令一次登錄所有的targets:
[root@ Initiator iscsi ]#iscsiadm -m node --loginall=all
這裡需要說明的是,通過執行Target發現操作,其實已經與iSCSI Target 主機建立了連接,此時如果再次執行iscsiadm命令與Target 主機建立連接的話,會提示“iscsiadm: initiator reported error (15 - already exists)”錯誤,需要先斷開與iSCSI Target 主機的連接,執行如下指令,斷開Initiator 與iSCSI Target 主機的連接:


iscsiadm -m node -T [target-name] -p [ip-address] -u
例如:
[root@ Initiator iscsi ]#iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.12.246 -u
Logging out of session [sid: 2, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]
Logout of [sid: 2, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.12.246,3260]: successful
當iSCSI Initiator與iSCSI Target連接成功后,還可以通過如下命令查看iSCSI session信息:
[root@ Initiator iscsi ]#iscsiadm -m session –i
例如:
[root@ Initiator iscsi ]#iscsiadm -m session –i
iSCSI Transport Class version 2.0-871
version 2.0-871
Target: iqn.2001-04.com.example:storage.disk2.sys1.xyz
Current Portal: 192.168.12.246:3260,1
Persistent Portal: 192.168.12.246:3260,1
**********
Interface:
**********
Iface Name: default
Iface Transport: tcp
Iface Initiatorname: iqn.1994-05.com.redhat:fd37f211e3a
Iface IPaddress: 192.168.12.26
Iface HWaddress: <empty>
Iface Netdev: <empty>
SID: 1
iSCSI Connection State: LOGGED IN
iSCSI Session State: LOGGED_IN
Internal iscsid Session State: NO CHANGE
************************
Negotiated iSCSI params:
************************
HeaderDigest: None
DataDigest: None
MaxRecvDataSegmentLength: 262144
MaxXmitDataSegmentLength: 8192
FirstBurstLength: 65536
MaxBurstLength: 262144


ImmediateData: Yes
InitialR2T: Yes
MaxOutstandingR2T: 1
************************
Attached SCSI devices:
************************
Host Number: 32 State: running
scsi32 Channel 00 Id 0 Lun: 0
Attached scsi disk sdb State: running

4 管理共享磁碟
首先通過fdisk命令查看共享過來的磁碟標識,也可以通過dmesg命令查看系統是否認到了共享的iSCSI磁碟,操作如下:
[root@ Initiator iscsi ]#fdisk -l
Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 38913 312464250 8e Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 609 4891761 83 Linux
/dev/sdb2 610 1305 5590620 83 Linux
從fdisk輸出可知,iscsi共享磁碟標識為/dev/sdb,大小10.7G,下面就可以通過fdisk命令對這個磁碟進行重新分區、格式化、創建文件系統等操作了.

本文出自 「技術成就夢想」 博客,請務必保留此出處http://ixdba.blog.51cto.com/2895551/578075





[火星人 via ] 利用ISCSI存儲技術構建IP存儲網路(實戰篇)已經有227次圍觀

http://www.coctec.com/docs/linux/show-post-48485.html