iscsi簡介,安裝,配置

常見的存儲方式有das,nas,san:

    das:本地存儲設備,如本地的磁盤,光盤等

    nas:網絡附加存儲服務器,其實nas就是一臺已經配好的主機,只要連接上網絡,那麼其他主機就可以訪問nas主機上的數據了。簡單地說,nas就是一臺網絡文件共享服務器,如:ftp,nfs,samba等

    san:存儲局域網絡,是一個外接式的共享存儲設備。我們知道一臺主機的磁盤接口是有限的,當我們在一臺主機上需要大量的磁盤使用時,就可以使用san了。san服務器共享多個存儲設備(如磁盤,分區,dd命令創建的大文件等等),其他客戶端主機就可以將這個共享存儲設備掛載到本地使用,而且還可以對其進行分區,格式化等操作,如:iscsi技術


iscsi:internet scsi的縮寫,基於TCP/IP協議,將scsi接口技術與ip接合起來的一種網絡存儲技術,分爲服務端和客戶端,服務端需要安裝scsi target,用來共享存儲設備,客戶端需要安裝iscsi initiator,用來連接target端,將target端共享的設備掛載到本地,可以對其進行分區,格式化等操作


使用yum安裝即可:

target服務端軟件包:scsi-target-utils

    主配置文件:/etc/tgt/targets.conf

initiator客戶端軟件包:iscsi-initiator-utils

    主配置文件:/etc/iscsi/iscsid.conf

scsi-target監聽的端口是: 3260


iSCSI實現數據的訪問需要的條件:
1、iSCSI客戶端
iSCSI客戶端爲iSCSI initiator,這個是發起I/O操作的啓動者。在系統中可以通過軟件來模擬,需要安裝iSCSI設備驅動。如iscsi-initiator-utils.rpm
iSCSI initiator具有的特性:
a)、既然是I/O操作的發起者,需要通過發現過程請求遠端快設備。
b)、它可以與target進行持久連接
c)、linux中可以通過軟件方式來實現

 

2、iSCSI服務器端
iSCSI服務器端爲iSCSI target,這個是I/O操作的執行者。在系統中可以使用scsi-target-utils軟件包來模擬實現。
iSCSI target端具有的特性:
a)、需要導出一個或多個塊設備供啓動者(initiator)使用
b)、可以通過硬件和軟件的方式來實現

 

3、iSCSI target設備名稱
iSCSI target名稱必須是全球唯一的,其格式爲:iqn.<yyyy-mm>.<tld.domain.some.host>[:<identifier>]
其中:
iqn:iSCSI target名稱必須是以iqn開頭的
yyyy-mm:表示的是時間
tld.domain.some.host:這個表示的是一個反過來寫的域名
identifier:這個可以是任意字符串
如:iqn.2015-03.com.baidu.www:Zw3l4S3dgnY

 

4、邏輯單元號LUN
LUN ID由iSCSI目標設備(Target)分配。iSCSI 啓動端(Initiator)設備當前支持在每個目標設備(Target)中導出最多256個LUN。即最大支持16個target。
對於LUN,比較通俗的理解就是磁盤分區、LVM卷組、RAID等等。

 

在iSCSI通信中,都有一個發起I/O請求的啓動端(Initiator)和響應請求並執行實際I/O操作的目標設備(Target),我們能夠提供 BlockLevel I/O 給 Initiator 主機,其目的不外乎是“將硬盤的排線網路化”、“把Target 主機共享磁盤幻化成Initiator 主機的磁碟”以達成更大空間、更高 I/O 速度及具有冗餘與高延展度的應用。
Target 即“儲存設備”(Storage Device),也就是存放數據的硬盤(以硬盤陣列居多),在使用iSCSI時,會在 iSCSI 儲存設備上去建立 LUN(Logical Unit Number)來提供給具備 iSCSI Initiator 功能的主機來存取 數據的。你可以把Target主機看作是服務端,把Initiator主機看作是客戶端。LUN 好比是個“邏輯單位磁碟”,爲追求效率、冗餘與延展性,這個 LUN 通常會是由數個實體磁碟( RAID 或 LVM 技術的技術實現)所組成。


iSCSI initiator發現iSCSI target的過程:
1、ISCSI initiator按照配置文件/etc/iscsi/iscsid.conf中配置的相應項目利用iSCSI的發現機制在網絡中收索目標設備target
2、ISCSI target將返回有效的iqn名稱給iSCSI initiator
3、ISCSI target按照配置的驗證方式接受initiator的登錄並返回目標設備target標識
4、ISCSI initiator發生查詢請求給target請求查詢target的相關信息
5、target響應initiator的查詢請求,並將設備的有關信息返回給initiator
6、initiator創建可以的目標設備target列表

 

iSCSI設備具有的特性:
1. 支持報頭和數據摘要
2. 支持兩種挑戰握手協議CHAP(ChallengeHandshake  Authentication Protocol)的認證方式
3. 目標端支持R2T(ReadytoTransfer)流控制
4. 從RHEL4U2開始支持多通道(multipath)
5. 支持sendtargets發現機制
6. 支持動態目標端發現
7. 具備異步事件通知入口
8. 支持即時數據更新
9. 支持動態設備重配
10.支持自動掛接iSCSI技術
11.支持IPV6技術

 

iSCSI設備名稱
iSCSI設備在iSCSI啓動端(Initiator)導入的時候,其內核將按當前的設備情況給iSCSI設備分配一個本地SCSI設備名(例如/dev/sda或/dev/sdb等),如果導入的iSCSI設備已被分區,在導入iSCSI設備建立本地SCSI設備的同時也會建立相應的分區設備名(例如/dev/sda1、/dev/sda5等等),但要主要的是此SCSI設備名並不是每次導入是都是固定的,比如你的主機之前沒有/dev/sda設備,你導入了iSCSI設備,其被內核命名爲/dev/sda;之後你將其取消了導入,並重新掛接了一個熱插拔設備(如U盤或移動硬盤),這個熱插拔設備佔據的/dev/sda設備;你又從新導入了iSCSI設備,此時其被內核分配的設備名就成了/dev/sdb。

 

服務器端管理配置工具tgtadm的使用
tgtadm是一個模式化的命令,其常見的模式有target、logicalunit、account

1、模式target下的語法格式:

tgtadm --lld <driver> --mode target --op {new|delete|show|update|bind|unbind} [option]
其中driver一般爲iscsi --op後面的參數表示要進行的操作
       new: 表示增加一個target,其new的語法格式爲:--tid <id> --targetname <name>
    delete:表示刪除一個target,其delete的語法格式爲:delete --tid <id>
      show:表示顯示所有的target,後面可以接某個target的id,只顯示某個target的信息。其show的格式爲:show [--tid <id>]
    update:用來修改某個特定的target的參數的。其update的格式爲:update --tid <id> --name <param> --value <value>
      bind:用來將某個特定的initiator和target綁定在一起,表示只接受特定的initiator的請求。其bind的語法格式爲: bind --tid <id> --initiator-address <address>
    unbind:表示解綁的意思。其unbind的語法格式爲:unbind --tid <id> --initiator-address  <address>

2、模式logicalunit下的語法格式:

tgtadm --lld  <driver>   --mode   logicalunit  --op  {new|delete}  [option]
其中driver一般爲iscsi --op後面的參數表示要進行的操作
       new: 表示新建一個lun,其new的語法格式爲:new --tid <id> --lun <lun>  --backing-store <device-path> --bstype <type> --bsoflags 
    delete: 表示刪除一個LUN,其delete的語法格式爲:delete --tid <id> --lun <lun>

3、模式account下的語法格式:

tgtadm --lld  <driver>   --mode   account  --op  {new|delete|bind|unbind}  [option]
其中driver一般爲iscsi --op後面的參數表示要進行的操作
       new: 表示新建一個賬號和密碼,new的語法格式爲:new --user <name> --password <pass>
    delete: 刪除某個已有的賬號,其格式爲:delete --user <name>
      bind:表示在某個特定的target上添加賬號,其格式爲:bind --tid <id> --user <name> [--outgoing],如果使用了--outgoing選項,將被添加作爲出去的賬號來使用。
    unbind:表示在某個特定的target上刪除某個賬號。其格式爲:account --op unbind --tid <id> --user <name>

 在tgtadm命令中,某些長選項可以使用短選項來代理,如:

 --lld = -L
 --tid = -t
 --lun = -l
 --backing-store = -b
 --initiator-address = -I
 --targetname <targetname> = -T

 

客戶端的管理工具iscsiadm
iscsiadm是個模式化的工具,其模式可通過-m或--mode選項指定,常見的模式有discovery、node、fw、session、host、iface幾個。這些模式的主要功能如下:
discovery: 用於發現某服務器是否有target輸出,以及輸出了哪些target;
     node: 管理跟某target的關聯關係;
  session:用於顯示所有的活動會話和連接。
       fw:顯示所有的啓動固件值。
     host:顯示所有的iSCSI主機。
    iface:顯示/var/lib/iscsi/ifaces目錄中的所有ifaces設定。

1、discovery模式下的語法格式

iscsiadm -m discovery  [ -d debug_level ]  [ -I iface -t type -p  ip:port  [-l ] ] 
discovery模式下可用選項:
    -d, --debug   顯示debug信息,級別爲0-8;
    -l, --login   表示登錄target的意思
    -t, --type 這裏可以使用的類型爲sendtargets(可簡寫爲st)、slp、fw和 isns,此選項僅用於discovery模式,且目前僅支持st、fw和isns;其中st表示允許每個iSCSI target發送一個可用target列表給initiator;
    -p, --portal  指定target服務的IP和端口;
    -m, --mode   可用的mode有discovery, node, fw, host iface 和 session

2、node模式下的語法格式
iscsiadm -m node [ -d debug_level ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ] 
node模式下可用選項:
    -L ,--loginall  表示登錄到所有發現的target設備上。all表示登錄到所有的target設備上;manual表示手動登錄;automatic表示自動登錄。
    -T, --targetname  用於指定target的名字
    -u, --logout   從target設備上登出
    -s, --stats   顯示session統計信息
    -o, --op:指定針對discoverydb數據庫操作,其僅能爲new、delete、update、show和nonpersistent其中之一;
    -I, --interface:指定執行操作的iSCSI接口,這些接口定義在/var/lib/iscsi/ifaces中;

3、session模式下的語法結構
iscsiadm -m session  -s:顯示會話的相關信息


客戶端配置文件/etc/iscsi/iscsid.conf 
這個文件中的主要參數有如下:
node.startup   設置啓動方式,可選的參數有auotmatic 和manual
node.session.auth.authmethod 設置使用CHAP認證方式,默認爲NONE
node.session.auth.username target端認證所需initiator提供的用戶
node.session.auth.password target端認證所需initiator提供的密碼
node.session.auth.username_in initiator端認證所需target提供的用戶
node.session.auth.password_in initiator端認證所需target提供的密碼
discovery.sendtargets.auth.authmethod 設置使用CHAP認證方式用以發現target端導出的設備,默認爲NONE
discovery.sendtargets.auth.username 發現操作時target端認證所需initiator提供的用戶
discovery.sendtargets.auth.passwd 發現操作時target端認證所需initiator提供的密碼
discovery.sendtargets.auth.username_in 發現操作時initiator端認證所需target提供的用戶
discovery.sendtargets.auth.password_in 發現操作時initiator端認證所需target提供的密碼


Initiator守護進程
      open-iscsi包括兩個守護進程iscsid和iscsi,其中iscsid是主進程,iscsi進程則主要負責根據配置,在系統啓動時進行發起端(Initiator)到服務端(target)的登錄,建立發起端與服務端的會話,使主機在啓動後即可使用通過iSCSI提供服務的存儲設備。
      iscsid進程實現iSCSI協議的控制路徑以及相關管理功能。例如守護進程(指iscsid)可配置爲在系統啓動時基於持久化的iSCSI數據庫內容,自動重新開始發現(discovery)目標設備。

Initiator配置     
1> iSCSI initiator 名稱設置
   initiator名稱用來唯一標識一個iSCSI Initiator端。配置文件爲/etc/iscsi/initiatorname.iscsi,命名規則可採用iqn-type格式,利用iscsi-iname命令可產出一個名稱,將此名稱輸入到initiatorname.iscsi配置文件即可。
2> iSCSI Initiator配置
   iSCSI Initiator的配置文件爲/etc/iscsi/iscsid.conf,在iSCSI initiator的scsid進程啓動和執行iscsiadm命令時,將讀取這個配置文件的內容,獲取與SCSI目標進行交互的相關信息,主要的配置內容包括:
CHAP Settings 組    本組下的各個設置項主要用來指定Initiator與target驗證方式及相關信息  
    設置節點會話的驗證模式     

    node.session.auth.authmethod = CHAP
    CHAP(Challenge Handshake Authentication Protocol ),默認爲不驗證(none)    
    設置會話target驗證initiator的CHAP用戶名及對應的密碼
    node.session.auth.username = scott
    node.session.auth.password = tiger  
    設置會話initiator驗證target的用戶名及其對應的密碼
    #node.session.auth.username_in = username_in
    #node.session.auth.password_in = password_in      
    設置initiator發現target的驗證模式,默認爲不驗證(none)
    discovery.sendtargets.auth.authmethod = CHAP         
    設置發現會話(discovery session)target驗證initiator的CHAP用戶名及對應的密碼
    discovery.sendtargets.auth.username = scott
    discovery.sendtargets.auth.password = tiger
    設置發現會話(discovery session)initiator驗證target的CHAP用戶名及對應的密碼
    #discovery.sendtargets.auth.username_in = username_in
    #discovery.sendtargets.auth.password_in = password_in

 通過上述配置項,可以看到iSCSI的主要驗證方式是CHAP,並且驗證是雙方向的,在本例中,因爲在目標端設置的驗證帳號,所以只設定了target驗證initiator所需要的用戶名和密碼。
    超時(Timeouts)設置組:本組設置initiator與target端交互的時間限制。
    重試(retry)設置組:本組設置iscsid重試登錄節點的次數。
    會話和設備排隊深度(session and device queue depth)設置組:設置session排隊命令的數量,設置設備隊列深度
     iSCSI設置(iSCSI settings)組:啓用或禁止R2T(Ready to Transmit)流控,啓用後,initiator在發送任何數據前必須等待 一個R2T命令,默認爲禁止(no)。
    node.session.iscsi.InitialR2T = Yes|no
    啓用或禁止立即數據(immediate data ),禁止後,initiator不隨着SCSI 命令PDU發送未請求的數據。默認爲啓用(Yes)
     node.session.iscsi.ImmediateData = Yes|No


實例:

一、命令方式配置target

1、服務端新建一個target

tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2015-03.com.test:ocyT1fwO7Oc

2、查看創建的target

tgtadm --lld iscsi --mode target --op show

3、target中添加LUN

tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdb

4、查看創建的target

tgtadm --lld iscsi --mode target --op show

5、設置訪問target權限

tgtadm --lld iscsi --mode target --op bind -t 1 -I ALL    #所有Initiator都可以訪問

tgtadm --lld iscsi --mode target --op bind -t 1 -I 10.10.0.226    #只有這一個IP可以訪問

tgtadm --lld iscsi --mode target --op bind -t 1 -I 10.10.0.0/12    #這個網段內的都可以訪問

6、訪問控制操作

建立一個新的帳號

tgtadm --lld iscsi --mode account --op new --user test1 --password test

顯示帳號信息

tgtadm --lld iscsi --mode account --op show

將帳號與target綁定

tgtadm --lld iscsi --mode account --op bind --tid 1 --user test1

查看target

tgtadm --lld iscsi --mode target --op show

Target 1: iqn.2015-03.com.test:ocyT1fwO7Oc

    System information:

        Driver: iscsi

        State: ready

    I_T nexus information:

        I_T nexus: 2

            Initiator: iqn.1994-05.com.redhat:248f7c44be92

            Connection: 0

                IP Address: 10.10.0.226

    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: 21475 MB, Block size: 512

            Online: Yes

            Removable media: No

            Prevent removal: No

            Readonly: No

            Backing store type: rdwr

            Backing store path: /dev/sdb

            Backing store flags: 

    Account information:

        test1

    ACL information:

        ALL

        10.10.0.0/12

        10.10.0.226

# 可以在Account information中看到target綁定的帳號

# 可以在ACL information中看到訪問控制策略


或通過配置文件的方式配置target

通過命令方式配置的target在重啓服務器後會失效,因爲需要保存在配置文件中,系統開機後會自動讀取。配置文件爲:/etc/tgt/targets.conf

<target iqn.2015-03.com.test:ocyT1fwO7Oc>

        backing-store /dev/sdb

        incominguser test test1

        initiator-address 10.10.0.226

        initiator-address 10.10.0.0/12

</target>


backing-store: target包含的LUN對應的存儲設備、分區或邏輯卷

incominguser: 定義iscsi接入認證設置,包含用戶名和密碼

initiator-address: 允許連接target的客戶端主機或網絡地址


配置完成後,重啓tgtd服務,系統將會自動根基配置文件中的設置建立對應的target。可以通過

tgtadm --lld iscsi --mode target --op show進行查看。查看某個具體的target信息,可以使用

tgtadm --lld iscsi --mode target --op show --tid n


二、客戶端配置

1、修改配置文件

vim /etc/iscsi/iscsi.conf    #開啓chap認證

node.session.auth.authmethod = CHAP

node.session.auth.username = test1

node.session.auth.password = test

2、生成iscsi名稱

iscsi-iname保存至/etc/iscsi/initiatorname.iscsi

3、發現目標設備

iscsiadm -m discovery -t sendtargets -p 10.10.0.224

# 此命令查詢目標門戶(Portal)爲10.10.0.224:3260上的目標,查找成功後,返回相應的target ID,同時在 /var/lib/iscsi/send_targets 和 /var/lib/iscsi/nodes目錄下記錄相應的門戶和節點信息。/var/lib/iscsi目錄下的內容採用dbm數據庫方式存儲,所有版本的linux以及大多的unix都隨系統帶有一個基本的,但是卻很高效的數據存儲程序集合,被成爲dbm數據庫。適合於相對比較靜態的索引化數據。其實就是一個索引化的文件存儲系統。這些信息稱之爲initiator discoverydb,可以通過iscsiadm相關操作進行管理。使用iscsiadm -m node命令,可以查看到發現的節點記錄。

4、登錄節點

iscsiadm -m node -T iqn.2015-03.com.test:ocyT1fwO7Oc -l

系統啓動時自動登錄

iscsiadm -m node -T iqn.2015-03.com.test:ocyT1fwO7Oc -l --op update -n node.startup -v automatic 

登錄成功後在/sys/devices/platform/會生成一個hostX目錄,包含session和connection信息。


服務器端可以查看登錄情況

tgt-admin --show

客戶端查看session

iscsiadm -m session -P 3


5、測試

查看目標方的存儲設備

fdisk -l    

格式化設備

mke2fs -j /dev/sdb 


注:如果要在系統啓動時自動掛接

vi/etc/fstab      #加入一行: 

/dev/sdb    /mnt    ext4     default        0  0  

但是,Linux系統重啓後,磁盤設備的名稱可能會發生飄移,從而引起文件系統不能掛載上來或者不能正確掛載,使用UUID的方式進行掛載可以解決這個問題: 

使用命令“tune2fs -l /dev/sdb”可以查到文件系統的UUID:  

Filesystem UUID:          ff6bd4a0-6985-4c3f-9008-11f7a5ecc299  

然後在/etc/fstab中添加   

UUID=ff6bd4a0-6985-4c3f-9008-11f7a5ecc299    /mnt    ext4     default        0  0 

替換掉原來的 /dev/sdb  /mnt    ext4     default        0  0  

注:如何手動通過UUID來掛載磁盤 在/etc/fstab中添加   

UUID=ff6bd4a0-6985-4c3f-9008-11f7a5ecc299       0  0  

這樣系統啓動後是不會掛載這個磁盤的,然後執行以下命令: 

mount UUID=ff6bd4a0-6985-4c3f-9008-11f7a5ecc299  

這樣就可以手動通過UUID來掛載磁盤了


6、登出節點

umount /mnt

iscsiadm -m node -T iqn.2015-03.com.test:ocyT1fwO7Oc -u

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