iSCSI安裝以及配置

1、基礎知識:
1.一、存儲相關:
直接存儲(DAS):例如本機上的磁盤,就是屬於直接存儲設備。
經過存儲區域網絡(SAN):來自網絡內的其餘存儲設備提供的磁盤。Iscsi就是屬於該方式。
網絡文件系統(NAS):直接提供文件系統,能夠當即使用。
1.二、iscsi相關基礎知識:
iscsi target:存儲設備端,存放磁盤的設備,爲其餘服務器提供「磁盤」,能夠算做是服務器端。
Iscsi initiator:使用target提供「磁盤」的客戶端。


2、iscsi安裝與配置:
2.一、實驗環境:
以192.168.10.1做爲target,initiator分別爲192.168.10.2和192.168.10.3。
2.二、target安裝與配置:
在yum源上已經有了一個官方的target軟件tat,因此target端直接使用該軟件提供相關服務便可。
node

yum -y install scsi-target-utils
scsi-target-utils包中的主要配置文件以及命令:
/etc/tgt/target.conf : 主要配置文件
/usr/sbin/tgt-admin : 在線查詢、刪除target等功能的命令
/usr/sbin/tgtd : 主要提供iscsi target服務的主程序
Iscsi是對應用透明的,如下幾種方式能夠做爲「磁盤」分享出去給initiator使用:(1)大型文件(dd命令生成)(2) 磁盤陣列、磁盤或者磁盤分區等真實磁盤(3)使用LVM中的邏輯卷LV
如下說明以大型文件爲例來進行說明,對於以上所說的三種不一樣「磁盤」iscsi target的配置過程都是同樣的。
2.2.1首先經過dd命令創建兩個768M的大型文件:
[root@10.1 ~]# dd if=/dev/zero of=/home/test.img bs=1M count=768
[root@10.1 ~]# dd if=/dev/zero of=/home/trunk.img bs=1M count=768   
[root@10.1 ~]# ll -h /home/*.img
-rw-r--r-- 1 root root 768M Sep 11 15:33 /home/test.img
-rw-r--r-- 1 root root 768M Sep 11 15:35 /home/trunk.img
2.2.2配置文件/etc/tgt/targets.conf配置:
每個在同一個target上的磁盤將它定義爲邏輯單位編號(LUN),iSCSI initiator跟target協調後就會取得LUN的存取權,在以上的配置中會有一個target(192.168.10.1),在這個target中可使用兩個LUN的磁盤。
一個簡單的配置完成的配置文件以下所示,此處建議使用IP將客戶端的權限分開。一個target配置能夠給多個initiator使用,既能夠完成1對多的掛載,可是iscsi不保證寫操做的一致性,因此在1對多的狀況下,1個initiator可讀可寫,其餘initiator可讀,卻是一種可行的方案(同時應該關閉寫緩存):
<target iqn.2013-09.com.inter.10.1:test-target>
        backing-store /home/test.img
        initiator-address 192.168.10.2
</target>
<target iqn.2013-09.com. inter.10.1:trunk-target>
        backing-store /home/trunk.img
        initiator-address 192.168.10.3
</target>
iSCSI的target名稱的命名方式:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其含義:
iqn表示「iSCSI Qualified Name」,簡稱iqn。yyyy-mm表示「年-月」。reversed domain name表示倒過來的域名。identifier是識別名稱。
幾個經常使用的參數含義以下:
backing-store:虛擬設備,與之對應的是direct-store(實際設備),設定的時候,若是把整塊磁盤所有拿來使用可使用配置direct-store,反之使用backing-store,這裏使用backing-store,計劃在從此的生產環境中使用LVM邏輯卷,那麼這裏的配置仍是應該使用backing-store。
initiator-address:用戶端地址,能夠用來限制initiator的來源IP。
incominguser:用戶名與密碼,能夠設定initiator使用帳戶密碼纔可使用對應target,若是在target中使用了該配置,則在initiator的配置文件/etc/iscsi/iscsid.conf中打開以下配置:
discovery.sendtargets.auth.username = username
discovery.sendtargets.auth.password = password
node.session.auth.username = username
node.session.auth.password = password
write-cache:預設該值爲on,開啓緩存會加速,不過相應的,在特殊狀況就有可能丟失數據的可能。
2.2.三、啓動以及查看iSCSI target:
[root@10.1 ~]# /etc/init.d/tgtd start
Starting SCSI target daemon:                               [  OK  ]
[root@10.1 ~]# netstat -tlunp | grep tgtd
tcp    0   0 0.0.0.0:3260       0.0.0.0:*    LISTEN      30945/tgtd          
tcp    0   0 :::3260           :::*         LISTEN      30945/tgtd
查看target信息:
[root@10.1 ~]# tgt-admin --show      
Target 1: iqn.2013-09.com.inter.10.1:test-target
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 805 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /home/test.img
            Backing store flags: 
    Account information:
    ACL information:
        192.168.10.2
Target 2: iqn.2013-09.com.inter.10.1:trunk-target
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00020000
            SCSI SN: beaf20
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00020001
            SCSI SN: beaf21
            Size: 805 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /home/trunk.img
            Backing store flags: 
    Account information:
    ACL information:
        192.168.10.3
經過以上信息能夠看到配置文件中的配置都已經生效,有兩個target,每一個target中有1個LUN。這兩個target根據ACL控制,一個提供給192.168.10.2使用,一個提供給192.168.10.3使用。其中每一個target的LUN0是控制器。
能夠經過tgt-admin命令來查看進程的運行配置文件,在遇到詭異問題的時候,能夠用該命令來查看進程的配置文件,在絕大數狀況下會和配置文件/etc/tgt/targets.conf一致。可是在我調試過程當中發現過target進程啓動了兩個(修改了正在使用的target配置,執行reload配置文件操做會引發),舊的一直在提供服務,經過各類命令管理的倒是新進程,經過dump配置文件發現了與conf文件不一致,最後經過kill掉舊進程,解決了問題:
[root@10.1 home]# tgt-admin --dump
default-driver iscsi
<target iqn.2013-09.com. inter.10.1:trunk-target>
        backing-store /home/trunk.img
        initiator-address 192.168.10.3
</target>
<target iqn.2013-09.com. nter.10.1:test-target>
        backing-store /home/test.img
        initiator-address 192.168.10.2
</target>
2.三、initiator安裝與配置:
安裝經過yum便可:
yum install iscsi-initiator-utils
iscsi-initiator-utils中的主要配置文件以及命令:
/etc/iscsi/iscsid.conf : 主要配置文件
/sbin/iscsid : 啓動iscsi initiator的主要服務程序
/sbin/iscsiadm : 管理iscsi initiator的管理程序
/etc/intit.d/iscsid : 主要服務進程
/etc/init.d/iscsi : 啓動該腳本,可使發現過的iscsi target配置生效,通常直接使用該腳本便可,initiator未執行的話,會調用/etc/init.d/iscsid啓動initiator。
在啓動initiator以前先進行發現操做,用以肯定target端能夠鏈接的target數據,這裏須要使用命令iscsiadm,分別在192.168.10.2與192.168.10.3來執行:
[root@10.2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.10.1    
192.168.10.1:3260,1 iqn.2013-09.com.inter.10.1:test-target
[root@10.3 ~]#  iscsiadm -m discovery -t sendtargets -p 192.168.10.1    
192.168.10.1:3260,1 iqn.2013-09.com.inter.10.1:trunk-target
能夠看出2與3分別發現了屬於本身的target,權限配置在target端,根據來源IP來設置的。下來以192.168.10.2爲例,來介紹一下如何使用,169也是相似的。
在鏈接以前最好修改如下initiator的標識名稱:
默認的通常以下所示:
[root@10.2 ~]#  cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:f24aa1f2fabd
[root@10.3 ~]# cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:772524a8a83e
在target將會看到這樣的信息,能夠說是毫無分辨性,initiator多了以後不方便管理,強烈建議修改一下這個名稱,initiator的命名規則和target是一致的,能夠改成以下所示:
[root@10.2 ~]# cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.2013-09.com.inter.10.2:test-initiator
[root@10.3 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2013-09.com.inter.10.3:trunk-initiator
經過如下命令啓動iscsi initiator的服務,該服務會啓動iscsid並加載發現了的target,以後使用fdisk –l命令來查看加載的磁盤:
[root@10.2 ~]# /etc/init.d/iscsi start
Starting iscsi:                                            [  OK  ]
[root@10.2 ~]# fdisk -l
Disk /dev/vda: 69.8 GB, 69793218560 bytes
255 heads, 63 sectors/track, 8485 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006336e

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        8486    68156416   83  Linux

Disk /dev/vdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00080da4

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1        1045     8387584   82  Linux swap / Solaris

Disk /dev/sda: 805 MB, 805306368 bytes
25 heads, 62 sectors/track, 1014 cylinders
Units = cylinders of 1550 * 512 = 793600 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
如上所示,/dev/sda就是遠程掛載過來的target端的「磁盤」。能夠對該磁盤進行格式化並掛載後使用:
[root@10.2 ~]# mkfs.ext4 /dev/sda
[root@10.2 ~]# mount -t ext4 /dev/sda /tmp/test
如下是一些較爲經常使用的調試命令:
在initiator端顯示發現的target主機:
[root@10.2 test]# iscsiadm -m node 
192.168.10.1:3260,1 iqn.2013-09.com.inter.10.1:test-target
在initiator端斷開與指定target的鏈接:
iscsiadm -m node iqn.2013-09.com.inter.10.1:test-target  -u
在initiator端鏈接指定target:
iscsiadm -m node iqn.2013-09.com.inter.10.1:test-target  -l
在initiator端顯示已經創建的target鏈接:
iscsiadm -m session
相關文章
相關標籤/搜索