基于iscsi实现文件存储共享
? 簡單介紹兩個概念:
? ? ? iSCSI:Internet Small Computer System Interface.是一種基于 TCP/IP的協議,用來建立和管理 IP 存儲設備、主機和客戶機等之間的相互連接,并創建存儲區域網絡(SAN)。SAN 使得 SCSI 協議應用于高速數據傳輸網絡成為可能,這種傳輸以數據塊級別(block-level)在多個數據存儲網絡間進行。
? ? ?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響應并傳送給操作系統,操作系統再響應給應用程序。
? ? ?ISCSI通信雙方:請求方:initiator即為客戶端。接收方:target,即為服務器端
? ? ?target ?:成為target需要滿足的條件:要有支持SCSI,ISCSI的模塊,要有創建target、lum的用戶空間工具。要有SCSI、ISCSI驅動,運行為服務,且此服務開機自行啟動,接收客戶請求要有監聽的套接字。服務器端的配置需要保存至某個配置文件中,使其永久生效。
? ? ?initiator:要有SCSI、ISCSI驅動,要能發現服務器端共享出來的磁盤存儲,要能登錄到服務器端
? ? ?有了以上思路我們就可以開始做配置:
服務器端:
? ? ? ?創建共享磁盤存儲
? ? ? ?# fdisk /dev/sda
? ? ? ?查看是否已安裝了SCSI、ISCSI的模塊
? ? ? ?# grep -i 'scsi' /boot//config-2.6.32-431.el6.x86_64
? ? ? ?安裝用戶空間的工具軟件
? ? ? ?# yum -y install scsi-target-utils-1.0.24-10.el6.x86_64.rpm
? ? ? ?開啟服務
? ? ? ?/etc/rc.d/init.d/tgtd
? ? ? ?# service tgtd start
? ? ? ?開機自動啟動
? ? ? ?# chkconfig tgtd on
? ? ? ?監聽套接字端口:
? ? ? ?# ss -tnl 3260
? ? ? ?用戶空間使用工具
? ? ? ?/usr/sbin/tgtadm
? ? ? ?使用配置文件
? ? ? ?/etc/tgt/targets.conf
? ? ? ?開機重啟后
? ? ? ?/usr/sbin/tgt-admin會讀取配置文件信息。
? ? ? ?創建target
? ? ? ?# tgtadm -L iscsi -o new -m target -t 1 -T iqn.2014-05.com.aperson.web:1
? ? ? ?查看創建的targeto
? ? ? ?# tgtadm -L iscsi -o show -m target
? ? ? ?
? ? ? ?關聯邏輯單元lun
? ? ? ?# tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/sda5
? ? ? ?再次查看
? ? ? ?# tgtadm -L iscsi -o show -m target
? ? ?開啟邏輯單元對用戶的訪問,即基于ip的授權
? ? ?# tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.2.0/24
客戶端:
? ? ?安裝軟件
? ? ?iscsi-initiator-utils-6.2.0.873-10.el6.x86_64.rpm
? ? ?# rpm -ql iscsi-initiator-utils
? ? ?兩個啟動服務腳本
? ? ?/etc/rc.d/init.d/iscsi
? ? ?/etc/rc.d/init.d/iscsid
? ? ?iscsid的配置文件
? ? ?/etc/iscsi/iscsid.conf
? ? ?客戶端使用工具
? ? ?/sbin/iscsiadm
? ? ?iscsi別名生成工具
? ? ?/sbin/iscsi-iname
? ? ?別名存放目錄:
? ? ?/etc/iscsi
? ? ?啟動服務
? ? ?service iscsi start
? ? ?service iscsid start
? ? ?創建自己的名稱跟別名
? ? ?echo "InitiatorName=`iscsi-iname -p iqn.2014-05.com.aperson`" > /etc/iscsi/initiatorname.iscsi
? ? ?echo "InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi
? ? ?發現共享: ? ?
# iscsiadm -m discovery -t st -p 192.168.2.117:3260 192.168.2.117:3260,1 iqn.2014-05.com.aperson.web:1? ? ?登錄共享服務器端 ?
# iscsiadm -m node -T iqn.2014-05.com.aperson.web:1 -p 192.168.2.117:3260 -l Logging in to [iface: default, target: iqn.2014-05.com.aperson.web:1, portal: 192.168.2.117,3260] (multiple) Login to [iface: default, target: iqn.2014-05.com.aperson.web:1, portal: 192.168.2.117,3260] successful. ? ? ?查看硬盤情況:
? ? ?分區格式化對此磁盤 并掛載到本地,驗證數據的輸入刪除等操作 ?
? ? 注意:共享存儲不能同時給兩個客戶端使用,否則文件系統會崩潰。
? ? 退出登錄: ? ?
iscsiadm -m node -T iqn.2014-05.com.aperson.web:1 -p 192.168.2.117 -u? ?
? ? 我們下次登錄的時候會自動發現共享存儲是因為我們登錄過一次以后就會在/var/lib/iscsi/目錄下自動生成一些文件,記錄我們曾經登錄過的共享服務器的一些信息:
? ?
? ?如果不想記錄,我們可以刪除這些文件,也可以使用iscsiadm的一條命令進行刪除:
# iscsiadm -m node -T iqn.2014-05.com.aperson.web:1 -p 192.168.2.117:3260 -o delete? ?刪除lun,刪除target指令: ?
# tgtadm -L iscsi -o delete -m logicalunit -t 1 -l 1 # tgtadm -L iscsi -o delete -m target -t 1? ?
? ?命令的配置無法長久保存,所以我們需要基于配置文件的設置來實現持久配置
# vim /etc/tgt/targets.conf <target iqn.2014-05.com.aperson.web2.2>direct-store /dev/sda5initiator-address 192.168.2.0/24 </target>?
? ?iscsi基于用戶的認證配置:
? ?在服務器端:
# vim /etc/tgt/targets.conf <target iqn.2014-05.com.aperson.web2.2>direct-store /dev/sda5initiator-address 192.168.2.0/24incominguser admin admin </target>? ?在客戶端:
# vim /etc/iscsi/iscsid.conf node.session.auth.authmethod = CHAP node.session.auth.username = admin node.session.auth.password = admin ? ?如果是先前登錄過的需要在客戶端停止iscsi、iscsid服務,并刪除/var/lib/iscsi/目錄下的文件:重新發現,重新登錄。
? ?
? ? OK,以上就是iscsi的基礎知識!
轉載于:https://blog.51cto.com/aperson/1405592
總結
以上是生活随笔為你收集整理的基于iscsi实现文件存储共享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ExtJS4.x 开发环境搭建
- 下一篇: ecshop 详情页面获取商品销量和评论