iscsi配置共享存儲高級應用
本文系統Centos6.0
本文主要是iscsi存儲配置及安全驗證方面的應用;
關于iscsi方面的介紹大家去查詢很多資料;這里就不廢話了;直接進入主題
iscsi target
一個可以被用于存儲數據的iscsi磁盤陣列或者具有iscsi功能的設備都可以被稱為iscsi target
利用iscsi target軟件,可以將服務器的存儲空間分配給客戶機使用,客戶機就可以像使用本地硬盤一樣使用iscsi磁盤
相關軟件;比如linux平臺的iscsi enterprise target
Iscsi initiator
Iscsi initiator是一個安裝在計算機上的一個軟件或是一個硬件設備,它負責處理同iscsi存儲設備進行通信。
相關軟件;linux平臺的iscsi initiator。Windows平臺也有,比如win7自帶的Iscsi發起程序;下面會分別介紹;
關于Iscsi存儲數據過程;會先進行封裝iscsi協議加tcp/ip協議頭進行傳輸

一、下面就是簡單展示案例拓撲了:

Linux iscsi target : ServerA : 192.168.182.132
linux iscsi initiator : Client A:192.168.182.133
Windows7 :Client B:192.168.182.134#p#
1、Server A 安裝target程序:
1
2
3
4wget http://nchc.dl.sourceforge.net/project/iscsitarget/iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz
cd iscsitarget-1.4.20.2
make
make install
然后你就可以使用service 進行管理

事先提醒:本Server端有三塊硬盤,sda,sdb,sdc;sdb為2G;sdc為3G;

接下來配置主配置文件:(先實驗將sdb共享,讓linux client和windows client發現 )
1
2
3[root@centos iet]# vim ietd.conf
Target iqn.2013-07-17.com.lansgg:storage.disk2.sdb
Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
注釋:
1
2
3
4
5
6
7
8Target iqn.2013-07.com.lansgg:storage.disk2.sdb
Iqn.yyyy-mm.
Iqn:表示iscsi squalfled name 簡稱iqn
Yyyy-mmm:表示年份-月份。
Reversed domain name:表示倒過來的域名。
Identifier:標識識別代碼。這里是storage.disk2.sdb
Lun 0 path=/dev/sdb.Type=fileio,scsild=xyz,SisiSN=xyz
Lun 0 Path=/dev/sdb 表示塊設備號為0,映射的磁盤為/dev/sdb,type 值fileio是默認的可以用于磁盤、file和lvm,這里設定的的是fileio,主要用來對一個磁盤進行存儲共享。


接下來在Windows client進行操作:: (客戶端過程大概就是:發現>>連接)#p#
我的windows os 是win7,使用其自帶的iscsi initiator程序;

雙擊后;點擊“發現”選項卡

切換到“目標”選項卡后;你會發現我們共享出來的sdb

點擊確定后;狀態更換為“已連接”狀態
現在你去右鍵電腦管理,發現一塊2G的硬盤

進行格式化;
你會發現一個2G的盤;我這里將他格式化為FAT32的一個分區;在里面寫了一個test的文件,內容是test;

接下來在linux client進行操作
1[root@centos ~]# yum install iscsi-initiator* -y
你會發現啟動 service iscsid start 是無效的;這也是當時讓我很郁悶的一件事情;
我們就直接進行discovery吧,他會自動啟動程序

自動啟動了iscsid;接下來我們進行啟動iscsi

Ps:每次成功執行一次targets發現后,iscsi initiator就會將查詢記錄寫到/var/lb/iscsi/send_targets對應的目錄下。因此,只需成功一次discovery即可;
里面會記錄一下信息,可以去cat下

里面記錄了很多的信息;
通過iscsiadm 指令與iscsi targets建立關聯
iscsiadm是用來管理(更新、刪除、插入、查詢)iscsi配置數據庫文件的命令行工具,用戶能夠用他對iscsi nodes、sessions、connections和discovery records進行一系列的操作;#p#
1、登錄 iscsi target; 也就是上面說的“連接”;因為上面已經discovery過了
1[root@centos ~]# iscsiadm -m node -T iqn.2013-07.com.lansgg:storage.disk2.sdb -p192.168.182.131 -l

Ps:這里的“-T”后面跟target名稱,“ip-address”是target主機的ip地址,“port”是target主機的端口號,默認是3260 -l 代表 --login
現在我們進行fdisk查看

注意后面的System標識為FAT32;因為本盤已經在windows進行了格式化,并且創建了test文件;見上面。
現在來看看這個test文件:

成功看到~
2、如何我們不想使用想斷開呢?
1[root@centos ~]# iscsiadm -m node -T iqn.2013-07.com.lansgg:storage.disk2.sdb -p192.168.182.131 -u

現在你fdisk就看不到sdb了;
3、查看iscsi session和設備信息
1
2
3[root@centos ~]# iscsiadm -m session
###就會提示如下#####
tcp: [5] 192.168.182.131:3260,1 iqn.2013-07.com.lansgg:storage.disk2.sdb
如果一個target下新增了一個卷,在服務器上使用iscsiadm -m session -R 命令可以刷新當前連接的session以看到新增的卷;
1[root@centos ~]# iscsiadm -m session -R
4、查看有那些target記錄在了數據庫中;
1[root@centos ~]# iscsiadm -m node
5、查看target存儲端相關配置信息;
1[root@centos ~]# iscsiadm -m node -T iqn.2013-07.com.lansgg:storage.disk2.sdb -p192.168.182.131
二、基于安全驗證的共享存儲配置;
其實,在上面已經發現了,我們將硬盤共享出去后,誰都可以發現,連接,使用,這就不能保證自己的數據安全,不方便管理,上面的文件內容可能不只你自己的;
現在我們進行基于安全驗證的配置;
比如:sdb硬盤共享出去給Windows主機使用,sdc給linux主機使用;
(只允許客戶端主機A連接target共享出來的磁盤分區一,而客戶端主機B只允許連接target共享出來的磁盤分區二)
在安全控制上有兩個手段,一個就是我們指定某個ip使用某個共享區域;另一個就是賬戶、密碼驗證;
方式一:指定授權ip訪問共享磁盤
sdb; iqn.2013-07.com.lansgg:storage.disk2.sdb (windows使用) ip:192.168.182.135
sdc ; iqn.2013-07.com.lansgg:storage.disk2.sdc (linux使用) ip:192.168.182.133
1
2
3
4[root@centos iet]# vim /etc/iet/initiators.allow
#ALL ALL #將默認的注釋掉
iqn.2013-07.com.lansgg:storage.disk2.sdb 192.168.182.135
iqn.2013-07.com.lansgg:storage.disk2.sdc 192.168.182.133
重啟server端iscsi-target服務,你會發現sdb歸135所有使用權,sdc歸133所有使用權
在client端重啟iscsi進行觸發即可;
方式二:client主機以密碼認證獲取iscsi target資源;
配置server端
1
2
3
4
5
6
7
8[root@centos iet]# vim /etc/iet/ietd.conf
IncomingUser discoveryuser discoverysecret
##第一個“IncomingUser”是個全局參數,用來指定discovery查詢認證所使用的帳號和密碼
Target iqn.2013-07.com.lansgg:storage.disk2.sdb
IncomingUser lansgg lansggsecret
Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz
##第二個IncomingUser是login認證;
關于sdc的認證是一樣的配置
Ps:ip驗證和密碼驗證不能共存;
這里用windows來驗證下;
首先進行discovery

然后進行login操作

最后查看連接成功:

然后在linux客戶端驗證:
1
2
3
4
5
6
7
8
9vim /etc/iscsi/iscsid.conf
#以下三個是針對discovery的
Discovery.sendtargets.auth.authmethod=chap #表示discovery時啟用chap驗證
Discovery.sendtargets.auth.username=discoveryuser #驗證用戶名稱,可以是任意字符,但必須與target端的incominguser配置的名稱一致。
Discovery.sendtargets.auth.password=discoverysecret #驗證密碼,必須與target對應的incominguser選擇設置的密碼一致;
#以下三個是針對login的
Node.session.auth.authmethod=chap #表示在login時啟用chap驗證。
Node.session.auth.username=lansgg #驗證用戶名稱,可以是任意字符,但必須與target端的incominguser配置的名字一致。
Node.session.auth.password=lansggsecret #驗證密碼,必須與target端對應的incominguser選項配置的密碼一致。
繼續安裝上面linux client進行discovery、login即可;然后格式化就可以使用了;
友情提示:
管理共享磁盤:
》Linux 上的ext文件系統的一個特性,對某個分區mount、umount很多次后會或者隔一個固定的時間后,系統會對該分區進行檢測,這就會導致硬盤反映速度很慢,影響業務,本操作的目地就是去掉文件系統自動檢查的屬性;
Tune2fs 修改文件系統的屬性,去掉自動檢查的屬性:
1Tune2fs -c -1 -i 0 /dev/sdb5 # /dev/sdb5為掛載的共享磁盤
2》設定文件系統的自動掛載
使用uid標識進行掛載
1
2
3Tune2fs -l /dev/sdb5
Vim /etc/fstab
UUID=uuid /data ext3 _netdev 0 0
磁盤設備的名稱可能會發生變化,從而引起文件系統不能掛載上來或者不能正確掛載,使用
_netdev 是針對iscsi設備的特殊mount選項,此掛載選擇指示將在網絡啟動后掛載改卷,在關閉網絡前卸載改卷。