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


