iscsi存儲部署手冊

CentOS5 iSCSI部署

2011-05-05 20:06:25

一、關於iSCSI(資料)

iSCSIinternet Small Computer System Interface的縮寫,又稱爲IP-SAN,是一種基於因特網及SCSI-3協議下的存儲技術,其目的是爲了用IP協議將存儲設備連接在一起。通過在IP網上傳送SCSI命令和數據,iSCSI推動了數據在網絡之間的傳遞,同時也促進了數據的遠距離管理。由於其出色的數據傳輸能力,iSCSI協議被認爲是促進存儲區域網(SAN)市場快速發展的關鍵因素之一。因爲IP網絡的廣泛應用, iSCSI能夠在LANWAN甚至Internet上進行數據傳送,使得數據的存儲不再受地域的限制。

iSCSI技術的核心是在TCP/IP網絡上傳輸SCSI協議,即使用TCP/IP報文和iSCSI報文封裝SCSI報文,使得SCSI命令和數據可以在普通以太網絡上進行傳輸,如下圖所示。


 
iSCSI
的工作過程:當iSCSI主機應用程序發出數據讀寫請求後,操作系統會生成一個相應的SCSI命令,該SCSI命令在iSCSI initiator層被封裝成ISCSI消息包並通過TCP/IP傳送到設備側,設備側的iSCSI target層會解開iSCSI消息包,得到SCSI命令的內容,然後傳送給SCSI設備執行;設備執行SCSI命令後的響應,在經過設備側iSCSI target層時被封裝成ISCSI響應PDU,通過TCP/IP網絡傳送給主機的ISCSI initiator層,iSCSI initiator會從ISCSI響應PDU裏解析出SCSI響應並傳送給操作系統,操作系統再響應給應用程序。

二、服務器端SCSI target的配置及使用

Linux target framework(tgt)是爲創建、維護SCSI target 驅動(包括iSCSIFCSRP等)提供支持。它的關鍵目標是簡潔地集成到scsi-mid層,並且實現大部分應用層空間。

安裝scsi-target-utils
[root@sqinga ~]# yum install scsi-target-utils

啓動tgtd服務
[root@sqinga ~]# /etc/init.d/tgtd start
[root@sqinga ~]# /etc/init.d/tgtd status
tgtd (pid 1996 1995) is running...

tgtd設爲開機啓動
[root@sqinga ~]# chkconfig tgtd on

創建一個id1target,其名爲:iqn.2010-05.sqing:shuqing
iSCSI節點名稱有兩種格式,即 iqn-type 格式和 eui-type 格式,Linux常用的是iqn-type的格式。一般iSCSI Target命名採用“iqn.yyyy-mm.<reversed domain name>: identifier 識別代號”的格式。iqn號是局域網內iSCSI target的唯一標識,用來區分不同的target,所以在一個網絡內,iqn號一定不能相同)
[root@sqinga ~]# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2010-05.sqing:shuqing

爲上一步創建的目標增加邏輯分卷,添加一個lun logical unit)號爲1的邏輯單元,該邏輯單元使用邏輯分區LogVol2
[root@sqinga ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/VolGroup00/LogVol02

(以上命令式指定iqn並且將邏輯卷共享出去)

也可以用這個命令:

#tgt-setup-lun –d /dev/sdb –n lun1

共享名可以任意

要共享出的磁盤

使target接受initiator的訪問(這裏設爲允許所有的initiator訪問)
[root@sqinga ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

查看端口3260使用情況
[root@sqinga ~]# netstat -tulpn | grep 3260
tcp   0   0 0.0.0.0:3260      0.0.0.0:*         LISTEN      2980/tgtd
tcp   0    0 :::3260           :::*            LISTEN      2980/tgtd

查看lun信息
[root@sqinga ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2010-05.sqing:shuqing
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
        I_T nexus: 2
            Initiator: iqn.1994-05.com.redhat:d2c9f41e816a
            Connection: 0
                IP Address: 10.8.0.116
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 6442 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/VolGroup00/LogVol02
            Backing store flags:
    Account information:
    ACL information:
        ALL

至此,系統的邏輯分區/dev/VolGroup00/LogVol02已被設置成一個iSCSI Target,遠程的客戶端計算機可以通過網絡訪問對此進行訪問了。

刪除target信息

從列出的現有target信息裏面刪除

#tgtadm –lld iscsi –op delete –mode target –tid=[id]

要使以上設置,在系統重啓時生效,需寫進rc.local文件
[root@sqinga ~]# cat /etc/rc.local
touch /var/lock/subsys/local
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2010-05.sqing:shuqing
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/VolGroup00/LogVol02
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

三、客戶端iSCSI-initiator的配置及使用

安裝iscsi-initiator-utils
[root@sqingb ~]# yum install iscsi-initiator-utils

chkconfig檢查iscsiiscsid服務在運行級別35中隨系統的啓動而自動啓動
[root@sqingb ~]# chkconfig --list |grep iscsi
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
如果iscsidiscsi沒有隨系統的啓動而啓動,則用chkconfig設置這兩個服務在系統運行級別爲35時隨系統啓動而啓動
[root@sqingb ~]# chkconfig iscsi --level 35 on
[root@sqingb ~]# chkconfig iscsid --level 35 on

啓動iscsi服務
[root@sqingb ~]# /etc/init.d/iscsi start
[root@sqingb ~]# /etc/init.d/iscsi status
iscsid (pid 1508) is running...
[root@sqingb ~]# /etc/init.d/iscsid status
iscsid (pid 1508) is running...

存儲的地址

查看target上的邏輯卷(RHEL 5上當前的iSCSI Initiator版本只支持sendtargets 的發現方式,不支持SLPiSNS
[root@sqingb ~]#iscsiadm -m discovery -t sendtargets -p 10.8.110.293260, 1 iqn.2010-05.sqing:shuqing

使用iscsiadmin登陸target
[root@sqingb ~]# iscsiadm -m node -T iqn.2010-05.sqing:shuqing -p 10.8.110.29 --login
Logging in to [iface: default, target: iqn.2010-05.sqing:shuqing, portal: 10.8.110.1,3260]
  Vendor:IET          Model:Controller    Rev:0001
  Type:  Direct-Access                    ANSI SCSI revision:05
scsi 2:0:0:0: Attached scsi generic sg1 type 12
  Vendor:IET          Model:Controller    Rev:0001
  Type:  Direct-Access                    ANSI SCSI revision:05
……
Login to [iface: default, target: iqn.2010-05.sqing:shuqing, portal: 10.8.110.1,3260] successful

客戶端刪除

註銷target和刪除target的命令分別爲:
[root@sqingb ~]# iscsiadm -m node --T iqn.2010-05.sqing:shuqing -p 10.8.110.1 --logout
[root@sqingb ~]# iscsiadm -m node
o delete --T iqn.2010-05.sqing:shuqing


使用fdisk檢驗被識別的設備名:
[root@sqingb ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 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        1044   8281507+   8e  Linux LVM
Disk /dev/sdb: 2013MB, 2013265920 bytes
62 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Disk /dev/sdb doesn't contain a valid partition table

使用fdisk /dev/sdb命令爲sdb建立一個分區sdb1,結果如下:
[root@sqingb ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 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        1044   8281507+   8e  Linux LVM

Disk /dev/sdb: 2013MB, 2013265920 bytes
62 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1             1        1022      1964253   83  Linux

格式化分區
[root@sqingb ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.39 (29-May-2006))
Filesystem label=
OS type:Linux
Block size=4096(log=2)
Fragment size=4096 blocks
245760 inodes, 491063 blocks
24553 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=503316480
15 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
       32768, 98304, 163840, 22937 294912

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or 180 days,whichever comes first. Use tune2fs c or I to override.

設定加載點
[root@sqingb ~]# mdir /home/sna
[root@sqingb ~]# mount /dev/sdb1 /home/sna

df查看文件系統是否已掛載成功
[root@sqingb ~]# df
Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 3.9G 2.4G 1.3G 66% /
/dev/sda1 ext3 99M 12M 82M 13% /boot
tmpfs tmpfs 506M 0 506M 0% /dev/shm
/dev/sdb1 ext3 1.9G 35M 1.8G 2% /home/sna

至此,sqingnb已經連接到 sqinga的虛擬iSCSI 儲存設備, 並且如同本機上面的一個 SCSI 硬盤一樣。 使用的方式也幾乎一樣。

tune2fs查看文件系統的UUID
[root@sqingb ~]# tune2fs
l /dev/sdb1
tune2fs 1.39 (29-May-2006)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: b469ef1e-2f2f-450e-82af-0634d0021735
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file
……

如果要將其設置爲自動掛載,需將其UUID加入到fstab文件中(據資料分析,Linux系統重啓後,磁盤設備的名稱可能會發生變化,從而引起文件系統不能掛載上來或者不能正確掛載,使用UUID的方式進行掛載可以解決這個問題)。實際操作中,手動重啓後,系統要十多分鐘才能成功登錄,需要耐心等待(一些畫面會停很久,開始時以爲是重啓死機了呢),並且在登錄的過程中,系統會自動再啓動一次。另一種說法,掛載選項類型爲“_netdev”,嘗試了下,也是一樣的重啓過程。
[root@sqingb ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00    /         ext3       defaults     1 1
LABEL=/boot             /boot        ext3      defaults     1 2
tmpfs                    /dev/shm     tmpfs     defaults     0 0
sysfs                    /sys         sysfs      defaults     0 0
proc                    /proc        proc       defaults     0 0
/dev/VolGroup00/LogVol01  swap       swap       defaults     0 0
UUID= b469ef1e-2f2f-450e-82af-0634d0021735 /home/sna ext3 defaults 0 0

四、相關目錄、文件資料介紹

Discovery (/var/lib/iscsi/send_targets):在/var/lib/iscsi/send_targets目錄下包含iSCSI portals的配置信息,每個portal對應一個文件,文件名爲“iSCSI portal IP,端口號”(例如“10.8.110.1,3260)。

Node (/var/lib/iscsi/nodes):在/var/lib/iscsi/nodes目錄下,生成一個或多個以iSCSI存儲服務器上的Target名命名的文件夾(例如:iqn.2010-05.sqing:shuqing),在該文件夾下有一個文件名爲“iSCSI portal IP,端口號” (例如“10.8.110.1,3260)的配置參數文件,該文件中是initiator登錄target時要使用的參數,這些參數的設置是從/etc/iscsi/iscsi.conf中的參數設置繼承而來的,可以通過iscsiadm對某一個參數文件進行更改(需要先註銷到target的登錄)。

tgtadm是用來監控、修改Linux SCSI target 的工具,包括target設置、卷設置,等等。這個工具允許提供爲裝有SCSI initiator的其它操作系統提供塊級(block-level)的SCSI存儲。這個功能最初被部署爲Linux iSCSI target,通過網絡向裝有iSCSI initiator的系統提供存儲服務。

iscsiadm是用來管理(更新、刪除、插入、查詢)iSCSI配置數據庫文件的命令行工具,用戶能夠用它對iSCSI nodessessionsconnectionsdiscovery records進行一系列的操作。

iscsi-initiator-utils iscsidiscsiadm安裝到/sbin目錄下,還將把默認的配置文件安裝到/etc/iscsi目錄下:
/etc/iscsi/iscsid.conf
所有剛發起的iSCSI session默認都將使用這個文件中的參數設定。
/etc/iscsi/initiatorname.iscsi
軟件iSCSI initiatorintiator名稱配置文件。

 

 

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