Linux ISCSI服務器搭建
Linux ISCSI服務器搭建
1. iscsi服務器簡述
iSCSI技術是一種由IBM公司研究開發的,是一個供硬件設備使用的可以在IP協議的上層運行的SCSI指令集,這種指令集合可以實現在IP網絡上運行SCSI協議,使其能夠在諸如高速千兆以太網上進行路由選擇。iSCSI技術是一種新儲存技術,該技術是將現有SCSI接口與以太網絡(Ethernet)技術結合,使服務器可與使用IP網絡的儲存裝置互相交換資料。
iSCSI:Internet 小型計算機系統接口 (iSCSI:Internet SmallComputer System Interface)。
Internet 小型計算機系統接口(iSCSI
SCSI 結構基於客戶/服務器模式,其通常應用環境是:設備互相靠近,並且這些設備由 SCSI 總線連接。iSCSI 的主要功能是在 TCP/IP 網絡上的主機系統(啟動器 initiator)和存儲設備(目標器 target)之間進行大量數據的封裝和可靠傳輸過程。此外,iSCSI 提供了在 IP 網絡封裝 SCSI 命令,且運行在 TCP 上。
iSCSI
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服務器搭建