1. 程式人生 > >Linux ISCSI服務器搭建

Linux ISCSI服務器搭建

linux iscsi


Linux ISCSI服務器搭建

1. iscsi服務器簡述

iSCSI技術是一種由IBM公司研究開發的,是一個供硬件設備使用的可以在IP協議的上層運行的SCSI指令集,這種指令集合可以實現在IP網絡上運行SCSI協議,使其能夠在諸如高速千兆以太網上進行路由選擇。iSCSI技術是一種新儲存技術,該技術是將現有SCSI接口與以太網絡(Ethernet)技術結合,使服務器可與使用IP網絡的儲存裝置互相交換資料。

iSCSIInternet 小型計算機系統接口 iSCSIInternet SmallComputer System Interface)。

Internet 小型計算機系統接口(iSCSI

)是一種基於 TCP/IP的協議,用來建立和管理 IP 存儲設備、主機和客戶機等之間的相互連接,並創建存儲區域網絡SAN)。SAN 使得 SCSI 協議應用於高速數據傳輸網絡成為可能,這種傳輸以數據塊級別(block-level)在多個數據存儲網絡間進行。

SCSI 結構基於客戶/服務器模式,其通常應用環境是:設備互相靠近,並且這些設備由 SCSI 總線連接。iSCSI 的主要功能是在 TCP/IP 網絡上的主機系統(啟動器 initiator)和存儲設備(目標器 target)之間進行大量數據的封裝和可靠傳輸過程。此外,iSCSI 提供了在 IP 網絡封裝 SCSI 命令,且運行在 TCP 上。

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響應並傳送給操作系統,操作系統再響應給應用程序。

2. iscsi服務器搭建

2.1 物理環境準備

Server

172.20.100.100

4C 8G

client1

172.20.100.101

4C 8G

client2

172.20.100.202

4C 8G

2.1.1 Server服務器配置

Server服務器三塊硬盤,硬盤1是系統盤,硬盤2、硬盤3分別作為ISCSI服務端,提供給客戶端訪問

技術分享

2.1.2 Client服務器配置

技術分享

2.2 Server端配置

2.2.1 安裝scsi-target-utils服務器包

[[email protected] ~]# yum list |grep scsi*

技術分享

[[email protected] ~]# yum install scsi-target-utils

技術分享


安裝完畢後,查看scsi-target-utils具體安裝位置

[[email protected] ~]# rpm -ql scsi-target-utils

技術分享

2.2.2 設置服務開機自啟動

[[email protected] ~]# service tgtd start

[[email protected] ~]# chkconfig tgtd on

[[email protected] ~]# netstat -tunpl |grep 3260

技術分享

2.2.3 tgtadm命令常用選項

NAME

tgtadm - Linux SCSI TargetAdministration Utility

SYNOPSIS

tgtadm [OPTIONS]... [-C --control-port<port>] [-L --lld <driver>]

[-o --op<operation>] [-m --mode <mode>] [-t --tid <id>]

[-T --targetname<targetname>] [-Y --device-type <type>]

[-l --lun<lun>] [-b --backing-store <path>]

[-E --bstype <type>][-I --initiator-address <address>]

[-Q --initiator-name<name>] [-n --name <parameter>]

[-v --value<value>]

[-P --params<param=value[,param=value...]>] [-F --force]

[-h --help]

tgtadm常用於管理三類對象:

target:創建new,刪除,查看

lun:創建,查看,刪除

account:創建用戶,綁定,解綁定,刪除,查看

常用選項:

-L: --lld <driver>

<driver> iscsi

-m:--mode <mode>

<mode>:target,logicalunit等

-o:--op<operation>

<operation>:new,show,delete,bind,unbind

-t:--tid <id>:指定target的ID

-T:--targetname<targetname>:指定target的名稱

Target的命名機制:為了保證全局唯一,命名要遵循iqn規則

Iqn:iqn.yyyy-mm.reverse_domain.STRING[:substring]

Iqn.2017-08.com.test.web:server1

-l: --lun <lun>:指定LUN的號碼

-b: --backing-store<path>:關聯到某指定LUN上的後端存儲設備,可以是磁盤,分區,建議使用磁盤

-I –initiator-address<address>:指定授權訪問某target的IP地址:

語法:tgtadm--lld [driver] --op [operation] --mode [mode] [OPTION]...

(1)、添加一個新的 target 且其ID為 [id], 名字為 [name].

--lld[driver] --op new --mode target --tid=[id] --targetname [name]

如:創建一個target

tgtadm --lld iscsi --op new --mode target --tid 1 –T iqn.2013-05.com.magedu:tsan.disk1

(2)、顯示所有或某個特定的target:

--lld[driver] --op show --mode target [--tid=[id]]

如:顯示所有

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

(3)、向某ID為[id]的設備上添加一個新的LUN,其號碼為[lun],且此設備提供給initiator使用。[path]是某“塊設備”的路徑,此塊設備也可以是raid或lvm設備。lun0已經被系統預留。

--lld[driver] --op new --mode=logicalunit --tid=[id] --lun=[lun] --backing-store[path]

如:顯示剛創建的target

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

(4)、刪除ID為[id]的target:

--lld[driver] --op delete --mode target --tid=[id]

如:創建LUN,號碼為1

tgtadm--lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda1

(5)、刪除target [id]中的LUN[lun]:

-lld[driver] --op delete --mode=logicalunit --tid=[id] --lun=[lun]

如:開放給192.168.0.0/24網絡中的主機訪問(其中的-I相當於--initiator-address):

tgtadm--lld iscsi --op bind --mode target --tid 1 -I 192.168.85.0/24

(6)、定義某target的基於主機的訪問控制列表,其中[address]表示允許訪問此target的initiator客戶端的列表

--lld[driver] --op bind --mode=target --tid=[id] --initiator-address=[address]

如:Create anew account

tgtadm--lld iscsi --op new --mode account --user administrator --password 123456

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

Assignthis account to a target:

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

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

(7)、解除target [id]的訪問控制列表中[address]的訪問控制權限:

--lld[driver] --op unbind --mode=target --tid=[id] --initiator-address=[address]

如:Set up anoutgoing account. First, you need to create a new account like the previousexample

tgtadm--lld iscsi --op new --mode account --user abc --password 123456

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

tgtadm--lld iscsi --op bind --mode account --tid 1 --user abc --outgoing

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

2.2.4 創建target

1. 創建一個target


[[email protected] ~]# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2017-08.com.test.web:server1

技術分享

技術分享

2. 顯示所有target

[[email protected] ~]# tgtadm --lld iscsi --op show --mode target

技術分享


3. 創建LUN1

[[email protected] ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb

[[email protected] ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 2 -b /dev/sdc

技術分享

技術分享

技術分享

4. 開放172.20.0.0/16網絡中的主機訪問權限

[[email protected] ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address 172.20.0.0/16

技術分享

技術分享



3. iscsi客戶端配置

3.1 安裝iscsi-initiator-utils

[[email protected] ~]# yum install iscsi-initiator-utils

[[email protected] ~]# rpm -ql iscsi-initiator-utils

技術分享

技術分享

3.2 更改客戶端iqn名稱

[[email protected] ~]# cat /etc/iscsi/initiatorname.iscsi

技術分享


[[email protected] ~]# echo "InitiatorName=iqn.2017-08.com.test.web:client1" > /etc/iscsi/initiatorname.iscsi

[[email protected] ~]# cat /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2017-08.com.test.web:client1

技術分享

技術分享


生成iscsi名稱,這個名稱後面字符串唯一

[[email protected] ~]# iscsi-iname -p iqn.2018-08.com.test

iqn.2018-08.com.test:df34e78608a

技術分享


3.3 客戶端常用命令選項

# yuminstall iscsi-initiator-utils

# echo"InitiatorName=`iscsi-iname -p iqn.2013-05.com.magedu`" >/etc/iscsi/initiatorname.iscsi

# echo"InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi

iscsiadm工具的使用:

iscsiadm是個模式化的工具,其模式可通過-m或--mode選項指定,常見的模式有discovery、node、fw、session、host、iface幾個,如果沒有額外指定其它選項,則discovery和node會顯示其相關的所有記錄;session用於顯示所有的活動會話和連接,fw顯示所有的啟動固件值,host顯示所有的iSCSI主機,iface顯示/var/lib/iscsi/ifaces目錄中的所有ifaces設定。

iscsiadm-m discovery [ -d debug_level ] [ -P printlevel ] [ -I iface -t type -p ip:port[ -l ] ]

iscsiadm-m node [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -Uall,manual,automatic ] [ [ -T tar-getname -p ip:port -I iface ] [ -l | -u | -R| -s] ] [ [ -o operation ]

-d,--debug=debug_level 顯示debug信息,級別為0-8;

-l,--login

-t,--type=type 這裏可以使用的類型為sendtargets(可簡寫為st)、slp、fw和 isns,此選項僅用於discovery模式,且目前僅支持st、fw和isns;其中st表示允許每個iSCSI target發送一個可用target列表給initiator;

-p,--portal=ip[:port] 指定target服務的IP和端口;

-m,--mode op 可用的mode有discovery, node, fw, host iface 和 session

-T,--targetname=targetname 用於指定target的名字

-u,--logout

-o,--op=OPEARTION:指定針對discoverydb數據庫的操作,其僅能為new、delete、update、show和nonpersistent其中之一;

-I,--interface=[iface]:指定執行操作的iSCSI接口,這些接口定義在/var/lib/iscsi/ifaces中;

#iscsiadm -m discovery -t sendtargets -p 172.20.100.100

# iscsiadm-m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100:3260 -l

#iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100:3260 -u

#iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100:3260 -odelete

查看會話相關信息:

#iscsiadm -m session -s

掛載時使用_netdev作為選項

創建服務端誰所需要的帳號,並實現單方向的認證:

1、在target端創建帳號christina,並為其授予訪問某tid的權限:

#tgtadm --lld iscsi --op new --mode account --user mageedu --password 123456

接下來還要將用戶與某target進行綁定:

#tgtadm --lld iscsi --op bind --mode account --tid 1 --user mageedu

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

2、編輯initiator端主配置文件,配置客戶端登錄target時使用此帳號和密碼:

# vim/etc/iscsi/iscsid.conf

取消如下項的註釋:

#node.session.auth.authmethod = CHAP

#node.session.auth.username = username

# node.session.auth.password= password

而後,將後兩項的用戶名密碼設置為target端設置的用戶名和密碼:

node.session.auth.username= mageedu

node.session.auth.password= 123456

哪果此前尚未登錄過此target,接下來直接發現並登入即可。否則,則需要按照下面的第三步實現認證的啟用。

3、如果initiator端已經登錄過此target,此時還需要先註銷登錄後重啟iscsid服務,並在刪除此前生成的database後重新發現target,並重新登入,過程如下:

#iscsiadm -m session -r sid -u

#iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -u

#iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -odelete

# rm-rf -rf /var/lib/iscsi/send_targets/192.168.0.11,3260

#service iscsid restart

#iscsiadm -m discovery -t sendtargets -p 192.168.0.11

#iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -l

說明:其中的target名字和target主機地址可能需要按照您的實際情況修改。

3.4 設置開機自啟動

[[email protected] ~]# service iscsi start

[[email protected] ~]# chkconfig iscsi on

[[email protected] ~]# service iscsid start

[[email protected] ~]# chkconfig iscsid on

技術分享

3.5 客戶端發現

[[email protected] ~]# iscsiadm -m discovery -t sendtargets -p 172.20.100.100

技術分享


3.6 客戶端登錄

[[email protected] ~]# iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -l


技術分享

技術分享


技術分享

3.7 分區格式化掛載

[[email protected] ~]# mkfs.ext4 /dev/sdb

[[email protected] ~]# mkdir /data1

[[email protected] ~]# mount /dev/sdb /data1

3.8 client2同樣的方法操作,掛載/dev/sdc

yum install iscsi-initiator-utils

iscsiadm -m discovery -t sendtargets -p 172.20.100.100

service iscsi start

service iscsid start

chkconfig iscsi on

chkconfig iscsid on

iscsiadm -m node -I iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -l

iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -l

fdisk -l

mkdir /data1

mkfs.ext4 /dev/sdc

mount /dev/sdc /data1

cd /data1

3.9 卸載

[[email protected] ~]# umount /data1

[[email protected] ~]# iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -u

技術分享

3.10 刪除

節點發現登錄之後,信息緩存到這裏,下次啟動會自動登錄,要徹底消失,可直接把目錄刪掉,也可用命令刪除

技術分享

[[email protected] iscsi]# iscsiadm -m node -T iqn.2017-08.com.test.web:server1 -p 172.20.100.100 -o delete

技術分享

再刪除目錄


技術分享

3.11 服務器解除IP綁定

[[email protected] ~]# tgtadm --lld iscsi --op unbind -m target -t 1 -I 172.20.0.0/16

技術分享

3.12 服務器刪除LUN2

[[email protected] ~]# tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 2

技術分享


3.13 服務器刪除target

[[email protected] ~]# tgtadm --lld iscsi --op delete -m target -t 1

技術分享

4. 服務器端基於文件配置

4.1 配置文件

[[email protected] tgt]# vi /etc/tgt/targets.conf

<target iqn.2017-08.com.test.web:server1>

backing-store /dev/sdb

</target>

技術分享


[[email protected] tgt]# service tgtd restart

[[email protected] tgt]# tgtadm --lld iscsi --op show --mode target


技術分享

技術分享

[[email protected] tgt]# vi /etc/tgt/targets.conf

<target iqn.2017-08.com.test.web:server1>

backing-store /dev/sdb

initiator-address 172.20.0.0/16

</target>

技術分享

客戶端掛載,根上述方法一樣。

綜上:就是iscsi服務器搭建的全過程。


本文出自 “星星的夜” 博客,請務必保留此出處http://guomin.blog.51cto.com/2483984/1959786

Linux ISCSI服務器搭建