數據每每是應用程序(架構)核心,那麼如何存儲數據就很是重要。node
顧名思義,直接附加存儲就是將存儲直接附加在應用服務器中來實現數據的存儲。存儲設備是經過接口類型於應用程序服務器鏈接的。數據庫
IDE (並行):數據可能有干擾 理論:133MB/s。早期是叫作ATAvim
SATA (串行)II: 3Gbps III: 6Gbps後端
IDE速度慢,出現了SCSI(Smal System System Interface)。 bash
SCSI接口:服務器
UltraSCSI-320:320MB/s網絡
UltraSCSI-640:640MB/ssession
SAS: 6Gbps架構
USB,sSATA,1394dom
如今直連式存儲與服務器主機之間的鏈接通道一般採用SCSI協議鏈接
通常說來,NAS是文件服務器。像NFS,Samba等。提供文件級別的共享。
SCSI之間通訊是一種C/S架構。
叫作Initator(發起者 C)
這裏稱之爲Target:(目標 S),每一個Target可包含多個LUN(Logical Unit Number 邏輯單元)。真正提供服務的是LUN。
下圖是SCSI協議之間通訊的過程:
內核空間:系統調用 --》 虛擬文件系統 --》 文件系統 --》 buffer cache --》 驅動 --》 SCSI接口
用戶空間:經過GNU c library 調用內核空間的系統調用
以下圖:
所謂iSCSI是利用tcp/ip協議來傳輸SCSI報文的一種機制。
說明:
172.166.10.16 Target端
### Target端:(172.16.10.16) 一、準備要共享的設備,這裏使用本地磁盤上的新分區代替(只須要分區,不須要格式化便可) fdisk /dev/sda partx -d /dev/sda partx -a /dev/sda
準備好共享磁盤後,繼續如下的操做:
二、安裝iscsi服務端: yum -y install scsi-target-utils service tgtd start chkconfig tgtd on netstat -tnlp | grep 3260
服務端的配置,可使用命令方式,也可以使用配置文件的方式。
tgtadm命令的介紹:
tgtadm 是一個模式化的命令 使用格式:tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION]... 常見的模式(mode):target logicalunit account ##################################################### target模式的管理命令:管理target new:建立一個新的 target show:顯示target delete:刪除target update:更新(修改)target bind:基於IP地址控制 unbind:解除綁定 ##################################################### logicalunit模式的管理命令:關聯tid和後端磁盤 new:建立一個新的LUN deltete:刪除一個已有的LUN ##################################################### account模式的管理命令:管理account CHAP(挑戰式握手應用) 單向認證 new deltete bind unbid ##################################################### target和Initator之間是經過iqn名稱來通訊的 iqn格式名稱: iqn.yyyy-mm.reverse-domaim-name:string[.sunstring] 例如:iscsi-iname -p iqn.2014-09.com.magedu.target 也可經過命令的生成的方式:iscsi-iname -p iqn.2014-09.com.magedu ##################################################### 示例: # (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]
經過tgtadm命令提供SCSI服務:
步驟以下: # 建立一個target: tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2014-09.com.magedu:test2 # 建立LUN,號碼爲1: tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda5 # 開放給172.16.0.0/16網絡中的主機訪問: tgtadm --lld iscsi --op bind --mode target --tid 1 -I 172.16.0.0/16 其中的-I至關於--initiator-address
建立完成後,可使用如上圖的命令查看,查看正確後,服務端配置完成。
在客戶端:
這裏使用的地址是:172.16.10.22
客戶端配置(Initiator): yum install iscsi-initiator-utils # 客戶端管理工具 # 如下配置是非必需的,默認狀況下,會有一個默認的iqn名稱 echo "InitiatorName=`iscsi-iname -p iqn.2014-09.com.magedu`" > \ /etc/iscsi/initiatorname.iscsi echo "InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi service iscsi start chkconfig iscsi on
客戶端Initator使用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 ] \ [ -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 172.16.10.16 iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -l
登錄成功後,在客戶端會發現多了一塊磁盤,能夠向本地磁盤同樣,分區、格式化、掛載使用。
完成掛載使用。
通常狀況下,在服務端是使用配置文件。使用命令式爲了更好的瞭解Target端的工做模式。
# 配置文件/etc/tgt/targets.conf <target iqn.2014-09.com.magedu:test2> backing-store /dev/sda5 initiator-address 172.16.0.0/16 </target>
若是客戶端不想使用的話,能夠登出
iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -u iscsiadm -m node -T iqn.2014-09.com.magedu:test2 -p 172.16.10.16 -o delete # 必要的時候,使用 rm -rf -rf /var/lib/iscsi/send_targets/*
建立服務端誰所須要的賬號,並實現單方向的認證: 一、在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 二、編輯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,接下來直接發現並登入便可。不然,則須要按照下面的第三步實 現認證的啓用。 三、若是initiator端已經登陸過此target,此時還須要先註銷登陸後重啓iscsid服務,並在刪除此 前生成的database後從新發現target,並從新登入,過程以下: # iscsiadm -m session -r sid -u # iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 172.16.10.16:3260 -u # iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 172.16.10.16:3260 -o delete # rm -rf -rf /var/lib/iscsi/send_targets/172.16.10.16: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主機地址可能須要按照您的實際狀況修改。
配置完成。