ISCSI安裝之PC架構---超詳細

                    ISCSI安裝之PC架構----超詳細

 

 

 

 

安裝環境:

 

ISCSI服務器:         Centos6.4    ip地址:10.0.7.113

ISCSI  linux客戶端:  Centos6.4    ip地址:10.0.7.130

ISCSI  win客戶端:    xp           ip地址:10.0.7.133

 

 

安裝開始:

第一部分:安裝

 

服務端:

 

1:安裝ISCSI服務所需的軟件安裝iSCSI target   下載地址:http://iscsitarget.sourceforge.net

 

 

 

[root@localhost iscsi]# tar zxf   iscsitarget-1.4.20.1.tar.gz 

[root@localhost iscsi]# cd iscsitarget-1.4.20.1

[root@localhost iscsitarget-1.4.20.1]# make

 

但是make的時候報以下錯誤:

make -C /lib/modules/2.6.32-358.el6.i686/build SUBDIRS=/iscsi/iscsitarget-1.4.20.1/kernel modules

make: *** /lib/modules/2.6.32-358.el6.i686/build: 沒有那個文件或目錄。 停止。

 

根據報錯信息:

[root@localhost iscsitarget-1.4.20.1]# cd /lib/modules/2.6.32-358.el6.i686/

發現build的軟連接是紅色的,也就是不存在的, 爲了驗證這點,然後進入/usr/src/kernels/這個目錄查看一下

[root@localhost 2.6.32-358.el6.i686]# cd  /usr/src/kernels/

[root@localhost kernels]# ls

[root@localhost kernels]# 

 

發現內容爲空,並不存在這個軟連接

 

Google了好半天,然後要安裝kernel-devel這個軟件 ,kernel-devel:包含內核開發環境所需的內核頭文件等等

 

直接yum安裝

[root@localhost kernels]# yum -y install kernel-devel

 

然後再查看一下/usr/src/kernels目錄

[root@localhost kernels]# pwd

/usr/src/kernels

[root@localhost kernels]# ls

2.6.32-358.el6.i686

那現在就需要把剛剛/lib/modules/2.6.32-358.el6.i686目錄下的build軟連接指向/usr/src/kernels/2.6.32-358.el6.i686  也就是剛剛安裝完kernel-devel後出來的目錄

[root@localhost 2.6.32-358.el6.i686]# ln -s build/ /usr/src/kernels/2.6.32-358.el6.i686/

 

然後返回繼續安裝

[root@localhost iscsitarget-1.4.20.1]# make

Applying Patch compat-2.6.32.patch

/bin/sh: line 4: patch: command not found

make: *** [.patched.2.6.32-358.11.1.el6.i686] 錯誤 127

 

上面的報錯是指patch命令沒找到,可能是我係統安裝的時候包沒選好

直接yum安裝即可

[root@localhost iscsitarget-1.4.20.1]# yum install patch

 

然後返回繼續安裝

[root@localhost iscsitarget-1.4.20.1]# make

[root@localhost iscsitarget-1.4.20.1]# make  install

 

 

到這裏安裝完畢!

 

 

 

第二部分:配置

 

iSCSI Target的主配置文件爲/etc/iet/ietd.conf

 

只需要修改2處內容,去掉這2處的#號,然後修改相應內容。

 

#Target iqn.2001-04.com.example:storage.disk2.sys1.xyz

 

這裏爲共享的是sdb,我改爲.

Target iqn.2013-07.com.1:sdb  

 

格式: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 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz

這裏改爲 :

Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz

 

然後重啓服務;

 

[root@localhost ~]# /etc/init.d/iscsi-target restart

Stopping iSCSI Target: Connection refused.

ietd: 沒有進程被殺死

FATAL: Module iscsi_trgt not found.

                                                           [失敗]

Starting iSCSI Target: FATAL: Module iscsi_trgt not found.

                                                           [失敗]

 

 

解決方法:

mkdir /lib/modules/`uname -r`/kernel/iscsi

find / -name iscsi_trgt.ko

cp iscsi_trgt.ko /lib/modules/`uname -r`/kernel/iscsi

iscsi_trgt.ko模塊複製到正確的位置

depmod -aq

重建一下內核模塊的依賴關係

 

重啓服務:

[root@localhost ~]# /etc/init.d/iscsi-target restart

Stopping iSCSI Target:                                     [確定]

Starting iSCSI Target:                                     [確定]

[root@localhost ~]# 

 

驗證:

 

Linux客戶端:安裝iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm

爲了方便我直接yum安裝

[root@localhost ~]#yum  install iscsi-*

然後啓動

 

 

安裝完成後,會生成/etc/iscsi主程序配置目錄。

啓動Initiator服務,操作如下:

[root@ Initiator iscsi]# service iscsi start

 

然後執行linux上執行iSCSI  Target發現,讓客戶端能找到網絡中共享的iscisi

可以使用如下指令向 iSCSI Target 主機查詢劃分了哪些lun

iscsiadm -m discovery --type sendtargets --portal IP 或者

iscsiadm -m discovery -t sendtargets -p IP

 

需要說明的是:當成功執行一次Target發現後,iSCSI Initiator就會將查詢紀錄寫到/var/lib/iscsi/send_targets對應目錄下。因此,對於Target發現只需執行一次即可。

 

 

 

[root@localhost ~]# iscsiadm  -m discovery  -t sendtargets -p 10.0.7.113

正在啓動 iscsid:                                          [確定]

10.0.7.113:3260,1 iqn.2013-07.com.1:sdb

 

 

登錄ISCSI target

[root@localhost ~]# iscsiadm  -m node -T iqn.2013-07.com.1:sdb  -p 10.0.7.113 -l

Logging in to [iface: default, target: iqn.2013-07.com.1:sdb, portal: 10.0.7.113,3260] (multiple)

Login to [iface: default, target: iqn.2013-07.com.1:sdb, portal: 10.0.7.113,3260] successful.

 

 

這裏就證明已經成功了  可以去系統上執行發fdisk -l查看,需要自己手動分區格式化,然後mount掛在即可(這些省略)

 

管理共享磁盤

分區、格式化共享磁盤

tune2fs修改文件系統的屬性,去掉自動檢查的屬性:

[root@data iscsi]# tune2fs -c -1 -i 0 /dev/sdb5

tune2fs 1.39 (29-May-2006)

Setting maximal mount count to -1

Setting interval between checks to 0 seconds

 

注意:Linux上的ext文件系統有一個特性,對某個分區mountumount很多次後或者隔一個固定的時間後,系統會對該分區進行檢測,這就會導致硬盤反映速度很慢,影響業務,本操作的目的就是去掉文件系統自動檢查的屬性。

 

 

設定文件系統的自動掛載

tune2fs查看文件系統的UUID

[root@data iscsi]# tune2fs -l /dev/sdb5

編輯/etc/fstab文件,設置自動掛載:

UUID= b5c94f7f-295f-4030-b593-4247ddc7e088    /data     ext3    _netdev   0 0

 

注意:磁盤設備的名稱可能會發生變化,從而引起文件系統不能掛載上來或者不能正確掛載,使用UUID的方式進行掛載可以解決這個問題,也可以使用給文件系統設置卷標的方式來解決

netdev是針對iscsi設備的特殊mount選項,此掛載選項指示將在網絡啓動後掛載該卷,在關閉網絡前卸載該卷

 

 

windows客戶端:   安裝iSCSI Initiator客戶端

Windwos簡單,直接上截圖

 

 

點擊Refresh刷新

點擊LogOn激活

 

然後去磁盤管理查看是否增加磁盤,磁盤1就是從ISCSI上面掛載過來的,可以在裏面新建文件

 

 

 

如果服務端要共享多塊硬盤的時候,服務端的配置文件應該怎麼改?

例如:我要共享sdc 

只要在iscsi的主配置文件裏面添加下面兩句話:

Target iqn.2013-07.com.1:sdc

Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz

 

然後重啓一下iscisi服務端

 

 

linux客戶端重新探尋一次;

[root@localhost ~]# iscsiadm  -m discovery  -t sendtargets -p 10.0.7.113

10.0.7.113:3260,1 iqn.2013-07.com.1:sdc

10.0.7.113:3260,1 iqn.2013-07.com.1:sdb

發現了剛剛添加的sdc

 

 

 

windows上探尋一次:

 

 

 

 

 

第三部分:ISCSI的兩種驗證方式

 

1IP認證方式

 

只需修改以下內容那個 

 

修改/etc/iet目錄下找到ietd.conf文件

 

Target iqn.2013-07.com.1:sdb

Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz

 

Target iqn.2013-07.com.1:sdc

Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz

 

修改/etc/iet/initiators.allow文件

 

將末尾的ALL  ALL 註釋掉

iqn.2013-07.com.1:sdb  10.0.7.130

iqn.2013-07.com.1:sdc  10.0.7.133 

 

驗證:看看10.0.7.130掛載的是不是sdb   10.0.7.133掛載的是不是sdc

 

Linux客戶機驗證:

 

[root@localhost ~]# iscsiadm  -m discovery  -t sendtargets -p 10.0.7.113

10.0.7.113:3260,1 iqn.2013-07.com.1:sdb

[root@localhost ~]# 

 

 

Windows客戶端:

 

 

 

 

 

第二種Initiator主機以密碼認證獲取iSCSI Target資源

 

再做這個操作以前,將上一步做的操作改回來

 

服務端:

接着修改/etc/iet/ietd.conf文件,修改後的內容如下:

Target iqn.2013-07.com.1:sdb

IncomingUser  linuxwoshilinux

Lun 0 Path=/dev/sdb,Type=fileio,ScsiId=xyz,ScsiSN=xyz

Target iqn.2013-07.com.1:sdc

IncomingUser  win woshiwindows

Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz

 

注意:第二個和第三個“IncomingUser”選項包含在對應的Target中,用來指定windowsLinux客戶端主機登錄Target/iqn/Lun時所使用的賬號密碼。也必須與initiator主機中設定的用戶名密碼一致

 

重啓iscis服務程序

 

 

 

Linux客戶端:

修改/etc/iscsi/iscsid.conf文件,添加如下選項: 

#以下三個是針對login

node.session.auth.authmethod = CHAP  #表示在login時啓用CHAP驗證。

 

node.session.auth.username = login.linux.auth  #驗證用戶名稱,可以是任意字符,但必須與targetIncomingUse配置的名字一致。

 

node.session.auth.password = linuxsecret  

#驗證密碼,必須與target端對應的IncomingUse選項設置的密碼一致。 

 

啓動iscsi客戶端程序

 

但是我在執行發現操作的時候提示:

[root@localhost ~]# iscsiadm  -m discovery  -t sendtargets -p 10.0.7.113

 

iscsiadm: No portals found

 

去檢查iscsi服務端裏:/etc/iet/下 initiators.allow targets.allow這兩個文件裏面的 ALL ALL是否不小心被註釋掉了

 

執行發現操作

[root@localhost ~]# iscsiadm  -m discovery  -t  sendtargets -p 10.0.7.113

10.0.7.108:3260,1 iqn.2013-07.com.1:sdc

10.0.7.108:3260,1 iqn.2013-07.com.1:sdb

[root@localhost ~]# 

注意:這裏發現sdbsdc,雖然能發現兩塊,但是我們能連接的只有一個,因爲做限制了

 

 

接下來登錄操作:

[root@localhost ~]# iscsiadm  -m node -T iqn.2013-07.com.1:sdb  -p 10.0.7.113   -l

 

注意:-l是登錄,-u是退出

 

 

 

Windows客戶端:直接上圖

 

直接誒選擇change,填入登錄密碼

 

 

成功! 一個簡單的pc架構存儲就這樣完成了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章