iSCSI協議、架構及其安裝配置

2017年3月1日22:59:42 發表評論 4,594 ℃

scsi特點

設備無關性

多設備并行

高帶寬

地系統開銷

iSCSI Target: scsi-target-utils

3260

客戶端認證方式

基于IP

基于用戶,CHAP

iSCSI Initiator: iscsi-initiator-utils

open-iscsi

tgtadm模式化的命令

--mode

常用模式:target、logicalunit、account

target --op

new、delete、show、update、bind、unbind

logicalunit --op

new、delete

account --op

new、delete、bind、unbind

--lld, -L

--tid, -t

--lun, -l

--backing-store <path>, -b

--initiator-address <address>, -I

-T, --targetname <targetname>

targetname:

iqn.yyyy-mm.<reversed domain name>[:identifier]

iqn.2013-05.com.magedu:tstore.disk1

iscsiadm模式化的命令

-m {discovery|node|session|iface}

discovery: 發現某服務器是否有target輸出,以及輸出了哪些target;

node: 管理跟某target的關聯關系;

session: 會話管理

iface: 接口管理

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

-d:有效范圍0-8

-I:接口

-t type:SendTargets(st), SLP, and iSNS

-p : IP:port 默認3260

iscsiadm -m discovery -d 2 -t st -p 172.16.100.100

iscsiadm -m node  [ -d debug_level ]  [ -L all,manual,automatic ] | [ -U all,manual,automatic ]

iscsiadm -m node  [ -d debug_level ]  [ [ -T targetname -p ip:port -I ifaceN ] [ -l | -u ] ] [ [ -o  operation  ] [ -n name ] [ -v value ] ]

iscsi-initiator-utils:

不支持discovery認證;

如果使用基于用戶的認證,必須首先開放基于IP的認證;

服務端

#yum -y install scsi-target-utils

#tgtadm --lld iscsi --mode target --op new --targetname iqn.2017-01.cn.atang:teststore.disk1 --tid 1 創建target

#tgtadm --lld iscsi --mode target --op show 查看tgtadm

#tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sda5 添加lun

#tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 172.16.0.0/16 

客戶端

#yum -y install   iscsi-initiator-utils

#echo "InitiatorName=`iiscsi-iname -p iqn.2017-01.cn.atang">/dec/iscsi/initiatorname.iscsi 也可以定義別名InitiatorAlias=node1.atang.cn

#iscsiadm -m discovery -d 2 -t st -p 172.16.100.100 發現target

#iscsiadm -m node -T iqn.2017-01.cn.atang:teststore.disk1  -p 172.16.100.100 -l 登錄

#fdisk -l  發現硬盤后可以進行分區格式化

基于用戶名登錄

客戶端

#iscsiadm -m node -T iqn.2017-01.cn.atang:teststore.disk1 -p 172.16.100.100 -u 登出

#iscsiadm -m node -T iqn.2017-01.cn.atang:teststore.disk1 -p 172.16.100.100 -o  delete 刪除相關數據庫

#tgtadm --lld iscsi -m target --op unbind --tid 1 --initiator-address 172.16.0.0/16

服務端

#tgtadm --lld iscsi --op new --mode account --user iscsiuser --password mypass

#tgtadm --lld iscsi --op new --mode account --user myuser --password mypass

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

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

 

cman, rgmanger, gfs2-utils

mkfs.gfs2

-j #: 指定日志區域的個數,有幾個就能夠被幾個節點所掛載;
-J #: 指定日志區域的大小,默認為128MB; 
-p {lock_dlm|lock_nolock}: 
-t <name>: 鎖表的名稱,格式為clustername:locktablename, clustername為當前節點所在的集群的名稱,locktablename要在當前集群惟一;

cLVM: 共享存儲做成LVM

借用HA的機制

/etc/lvm/lvm.conf

locking_type = 3

ISCSI安裝配置

Internet iStorage Name Service Server

The Internet Storage Name Service (iSNS) protocol is used for interaction between iSNS servers and iSNS clients. iSNS clients are computers, also known as initiators, that are attempting to discover storage devices, also known as targets, on an Ethernet network. iSNS facilitates automated discovery, management, and configuration of iSCSI and Fibre Channel devices (using iFCP gateways) on a TCP/IP network.

 

iSCSI Drvier Feature:

支持數據報文首部或數據驗正;

CHAP認證

MultiPATH

動態target discover

 

Target:

1、準備要共享的設備,這里使用本地磁盤上的新分區:

# fdisk -l 

建立所需要的新分區

# fdisk /dev/sda

# partprobe 

 

2、安裝iscsi服務端:

# yum -y install scsi-target-utils

 

# service tgtd start

# chkconfig tgtd on

# netstat -tnlp | grep 3260

3、服務端配置管理工具tgtadm的使用:

tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION]...

 

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

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

 

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

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

 

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

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

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

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

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

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

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

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

 

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

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

 

例如:

 

(1)創建一個target:

# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2013-05.cn.amd5:tsan.disk1

(2)顯示所有:

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

 

(3)顯示剛創建的target:

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

 

(4)創建LUN,號碼為1:

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

 

(5)開放給192.168.0.0/24網絡中的主機訪問:

# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 172.16.0.0/16

其中的-I相當于--initiator-address

 

(6)Create a new account:

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

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

 

Assign this account to a target:

 

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

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

(7)Set up an outgoing account. First, you need to create a new account like the previous example

 

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

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

 

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

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

客戶端配置:

 

# yum install iscsi-initiator-utils

 

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

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

 

# service iscsi start

# chkconfig iscsi on

2、iscsiadm工具的使用:

 

iscsiadm是個模式化的工具,其模式可通過-m或--mode選項指定,常見的模式有discoverydb、node、fw、session、host、iface幾個,如果沒有額外指定其它選項,則discoverydb和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 ] [ -U all,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 192.168.0.11

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

# 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 -o delete

   

查看會話相關信息:

# iscsiadm -m session -s

 

掛載時使用_netdev作為選項

 

CHAP: 單向

 

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

 

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 = christina

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 -o delete

# rm -rf /var/lib/iscsi/nodes/iqn.2010-08.com.example.tgt:disk1

# 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主機地址可能需要按照您的實際情況修改。 

FreeNAS

Openfiler

 

fence_manual

lvmconf --enable-cluster

cman

rgmanager

clvmd

 

創建一個GFS文件系統:

需要提供的信息:

1、鎖類型:

 lock_nolock

 lock_dlm

2、鎖文件的名字,通常即文件系統名

 cluster_name:fs_name

3、日志的個數,通常一個節點對應一個日志文件,但建議提供比節點數更多的日志數目,以提供冗余;

4、日志文件大小

5、文件系統大小

Syntax: gfs_mkfs -p lock_dlm -t ClusterName:FSName -j Number -b block_size -J journal_size BlockDevice

如:

# gfs_mkfs -p lock_dlm -t gfscluster:gfslv -j 5 /dev/vg0/gfslv

 

可以通過其對應掛載點查看gfs文件系統屬性信息;

# gfs_tool df /mount_point

 

掛載GFS文件系統:

mount -o StdMountOpts,GFSOptions -t gfs DEVICE MOUNTPOINT

前提:掛載GFS文件的主機必須是對應集群中的節點;

 

掛載GFS文件時有如下常用選項可用:

lockproto=[locl_dlm,lock_nolock]

locktable=clustername:fsname

upgrade # GFS版本升級時有用

acl

如果不想每一次啟用GFS時都得指定某選項,也可以通過類似如下命令為其一次性指定:

# gfs_tool margs "lockproto=lock_dlm,acl"

載入相應的gfs模塊,并查看lv是否成功

 

# modprobe gfs

# modprobe gfs2

# chkconfig gfs on

# chkconfig gfs2 on

 

# chkconfig clvmd on

 

# /etc/init.d/gfs restart

# /etc/init.d/gfs2 restart

# /etc/init.d/clvmd restart

 

# lvscan

 

lvmconf --enale-cluster

Openfiler, NAS, SAN

FreeBSD, AIX, power   

/lib64

 

Openfiler: CentOS

 NAS: nfs, samba

 SAN: IPSAN

webGUI

FreeNAS:

 FreeBSD

tgtd

iscsitarget

 

tgtadm --lld iscsi --op new --mode account --user iscsiuser --password mypass

tgtadm --lld iscsi --op new --mode account --user myuser --password mypass

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

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

 

<target iqn.2012-11.cn.amd5:tgt.target1>

   backing-store /dev/sdb

   incominguser iscsiuser mypass

   outgoinguser myuser mypass

</target>

/etc/iscsi/iscsid.conf

【騰訊云】云服務器、云數據庫、COS、CDN、短信等云產品特惠熱賣中

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: