第17章 使用iSCSI服务部署网络存储
章節(jié)概述:
本章節(jié)將分析SCSI與iSCSI技術結構的不同,了解iSCSI技術的優(yōu)勢、SAN存儲網絡技術結構以及iSCSI HBA卡的作用。
完整演示部署iSCSI target服務程序的方法流程:創(chuàng)建RAID陣列(5)后使用targetcli命令發(fā)布到iSCSI存儲目錄并創(chuàng)建ACL列表。
配置使用iSCSI initiator服務程序發(fā)現(xiàn)、連接并使用iSCSI存儲設備,最后編輯fstab文件將存儲設備設置為開機啟動。
?
本章目錄結構
- 17.1 網絡存儲技術
- 17.2 部署iSCSI存儲
- 17.2.1 配置iSCSI服務端
- 17.2.2 配置iSCSI客戶端
17.1 網絡存儲技術
傳統(tǒng)的SCSI小型計算機系統(tǒng)接口(Small Computer System Interface)技術是存儲設備最基本的標準協(xié)議,但通常需要設備互相靠近并用SCSI總線鏈接,因此受到了物理環(huán)境的限制。
iSCSI小型計算機系統(tǒng)接口(即Internet Small Computer System Interface)則是由IBM公司研究開發(fā)用于實現(xiàn)在IP網絡上運行SCSI協(xié)議的新存儲技術,即能夠讓SCSI接口與以太網技術相結合,使用iSCSI協(xié)議基于以太網傳送SCSI命令與數(shù)據,克服了SCSI需要直接連接存儲設備的局限性,使得我們可以跨越不同的服務器共享存儲設備,并可以做到不停機狀態(tài)下擴展存儲容量。
SAN存儲區(qū)域網絡技術(Storage Area Network)便是基于iSCSI存儲協(xié)議,采用高速光釬通道傳輸存儲數(shù)據的服務程序。
本圖為SAN結構拓撲
服務器會基于iSCSI協(xié)議將SCSI設備、命令與數(shù)據打包成標準的TCP/IP包然后通過IP網絡傳輸?shù)侥繕舜鎯υO備,而遠端存儲設備接收到數(shù)據包后需要基于iSCSI協(xié)議將TCP/IP包解包成SCSI設備、命令與數(shù)據,這個過程無疑會消耗系統(tǒng)CPU資源,因此我們可以將SCSI協(xié)議的封裝動作交由獨立的iSCSI HBA硬件卡來處理,減少了對服務器性能的影響。
本圖中設備為iSCSI HBA卡
但坦白來講iSCSI技術還是存在諸多問題的,如距離與帶寬之間的矛盾關系,雖然iSCSI滿足了數(shù)據長距離傳輸?shù)男枨?#xff0c;但現(xiàn)在廣域網的帶寬還是不夠理想,IP網絡的速率和延遲都是iSCSI傳輸數(shù)據的巨大障礙。
17.2 部署iSCSI存儲
iSCSI的工作方式分為服務端(target)與客戶端(initiator):
服務端:即存放硬盤或RAID設備的存儲端,目的是為客戶端提供可用的存儲。
客戶端:使用服務端的服務器主機。
本實驗需要兩臺虛擬主機來完成,分別是:
| 主機名稱 | 操作系統(tǒng) | IP地址 |
| iscsi服務端 | 紅帽RHEL7操作系統(tǒng) | 192.168.10.10 |
| iscsi客戶端 | 紅帽RHEL7操作系統(tǒng) | 192.168.10.20 |
邏輯單元LUN(即Logical Unit Number)是使用iSCSI協(xié)議中的重要概念,因為當客戶機想要使用服務端存儲設備時都必需輸入對應的名稱(Target ID),而一個服務端可能會同時提供多個可用的存儲設備,于是便用LUN來詳細的描述設備或對象,同時每個LUN Device可能代表一個硬盤或RAID設備,LUN的名稱由用戶指定。
17.2.1 配置iSCSI服務端
第1步:準備作為LUN發(fā)布的存儲設備。
在前面的存儲結構章節(jié)中學習了使用mdadm工具創(chuàng)建RAID磁盤冗余陣列的方法,忘記就翻回去看下吧~
在虛擬機中再添加4塊硬盤:
創(chuàng)建RAID5并設置1塊備份故障盤:
[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 512K mdadm: size set to 20954624K mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
查看RAID陣列的詳細信息,記錄下UUID的值:
[root@linuxprobe ~]# mdadm -D /dev/md0 /dev/md0:Version : 1.2Creation Time : Thu Sep 24 21:59:57 2015Raid Level : raid5Array Size : 41909248 (39.97 GiB 42.92 GB)Used Dev Size : 20954624 (19.98 GiB 21.46 GB)Raid Devices : 3Total Devices : 4Persistence : Superblock is persistentUpdate Time : Thu Sep 24 22:02:23 2015State : clean Active Devices : 3 Working Devices : 4Failed Devices : 0Spare Devices : 1Layout : left-symmetricChunk Size : 512KName : linuxprobe.com:0 (local to host linuxprobe.com) UUID : 3370f643:c10efd6a:44e91f2a:20c71f3eEvents : 26Number Major Minor RaidDevice State0 8 16 0 active sync /dev/sdb1 8 32 1 active sync /dev/sdc4 8 48 2 active sync /dev/sdd3 8 64 - spare /dev/sde
創(chuàng)建RAID陣列配置文件:
[root@linuxprobe ~]# vim /etc/mdadm.conf DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde ARRAY /dev/md0 UUID=3370f643:c10efd6a:44e91f2a:20c71f3e
第2步:安裝iSCSI target服務程序:
[root@linuxprobe ~]# yum -y install targetd targetcli Loaded plugins: langpacks, product-id, subscription-manager ………………省略部分安裝信息……………… Dependencies Resolved ================================================================================Package Arch Version Repository Size ================================================================================ Installing:targetcli noarch 2.1.fb34-1.el7 rhel7 55 ktargetd noarch 0.7.1-1.el7 rhel7 48 k Installing for dependencies:PyYAML x86_64 3.10-11.el7 rhel7 153 klibyaml x86_64 0.1.4-10.el7 rhel7 55 klvm2-python-libs x86_64 7:2.02.105-14.el7 rhel7 153 kpyparsing noarch 1.5.6-9.el7 rhel7 94 kpython-configshell noarch 1:1.1.fb11-3.el7 rhel7 64 kpython-kmod x86_64 0.9-4.el7 rhel7 57 kpython-rtslib noarch 2.1.fb46-1.el7 rhel7 75 kpython-setproctitle x86_64 1.1.6-5.el7 rhel7 15 kpython-urwid x86_64 1.1.1-3.el7 rhel7 654 k Transaction Summary ================================================================================ Install 2 Packages (+9 Dependent packages) ………………省略部分安裝信息……………… Complete!
啟動iSCSI target服務程序:
[root@linuxprobe ~]# systemctl start targetd
將iSCSI target服務程序添加到開機啟動項:
[root@linuxprobe ~]# systemctl enable targetdln -s '/usr/lib/systemd/system/targetd.service' '/etc/systemd/system/multi-user.target.wants/targetd.service'
第3步:創(chuàng)建存儲對象。
targetcli命令用于管理iSCSI target存儲設備,格式為:“targetcli”
[root@linuxprobe ~]# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb34 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'.
查看當前的存儲目錄樹:
/> ls o- / ..................................................................... [...] o- backstores .......................................................... [...] | o- block .............................................. [Storage Objects: 0] | o- fileio ............................................. [Storage Objects: 0] | o- pscsi .............................................. [Storage Objects: 0] | o- ramdisk ............................................ [Storage Objects: 0] o- iscsi ........................................................ [Targets: 0] o- loopback ..................................................... [Targets: 0]
進入/backstores/block目錄中:
/> cd /backstores/block /backstores/block>
使用/dev/md0創(chuàng)建設備disk0:
/backstores/block> create disk0 /dev/md0 Created block storage object disk0 using /dev/md0.
返回到根目錄中:
/backstores/block> cd .. /backstores> cd .. />
查看創(chuàng)建后的設備:
/> ls o- / ..................................................................... [...]o- backstores .......................................................... [...]| o- block .............................................. [Storage Objects: 1]| | o- disk0 ..................... [/dev/md0 (40.0GiB) write-thru deactivated]| o- fileio ............................................. [Storage Objects: 0]| o- pscsi .............................................. [Storage Objects: 0]| o- ramdisk ............................................ [Storage Objects: 0]o- iscsi ........................................................ [Targets: 0]o- loopback ..................................................... [Targets: 0]
第4步:配置iSCSI target目標。
進入到iscsi目錄中:
/> cd iscsi /iscsi>
創(chuàng)建iSCSI target目標:
/iscsi> create Created target iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80. Created TPG 1.
依次進入到target的luns目錄中:
/iscsi> cd iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80/ /iscsi/iqn.20....d497c356ad80> ls o- iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 ...... [TPGs: 1]o- tpg1 ............................................... [no-gen-acls, no-auth]o- acls .......................................................... [ACLs: 0]o- luns .......................................................... [LUNs: 0]o- portals .................................................... [Portals: 0] /iscsi/iqn.20....d497c356ad80> cd tpg1/ /iscsi/iqn.20...c356ad80/tpg1> cd luns /iscsi/iqn.20...d80/tpg1/luns>
創(chuàng)建LUN設備:
/iscsi/iqn.20...d80/tpg1/luns> create /backstores/block/disk0 Created LUN 0.
第5步:設置訪問控制列表。
切換到acls目錄中:
/iscsi/iqn.20...d80/tpg1/luns> cd .. /iscsi/iqn.20...c356ad80/tpg1> cd acls
創(chuàng)建訪問控制列表:
/iscsi/iqn.20...d80/tpg1/acls> create iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client Created Node ACL for iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client Created mapped LUN 0.
切換到portals目錄中:
/iscsi/iqn.20...d80/tpg1/acls> cd .. /iscsi/iqn.20...c356ad80/tpg1> cd portals
添加允許監(jiān)聽的IP地址:
/iscsi/iqn.20.../tpg1/portals> create 192.168.10.10 Using default IP port 3260 Created network portal 192.168.10.10:3260.
查看配置概述后退出工具:
/iscsi/iqn.20.../tpg1/portals> ls / o- / ........................... [...]o- backstores................. [...]| o- block ................... [Storage Objects: 1]| | o- disk0 ................. [/dev/md0 (40.0GiB) write-thru activated]| o- fileio .................. [Storage Objects: 0]| o- pscsi ................... [Storage Objects: 0]| o- ramdisk ................. [Storage Objects: 0]o- iscsi ..................... [Targets: 1]| o- iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 .... [TPGs: 1]| o- tpg1 .................. [no-gen-acls, no-auth]| o- acls ........................................................ [ACLs: 1]| | o- iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client [Mapped LUNs: 1]| | o- mapped_lun0 ............................................. [lun0 block/disk0 (rw)] o- luns .................... [LUNs: 1]| | o- lun0 .............. [block/disk0 (/dev/md0)]| o- portals ............. [Portals: 1]| o- 192.168.10.10:3260 [OK]o- loopback .................. [Targets: 0] /> exit Global pref auto_save_on_exit=true Last 10 configs saved in /etc/target/backup. Configuration saved to /etc/target/saveconfig.json
第4步:創(chuàng)建防火墻允許規(guī)則:
[root@linuxprobe ~]# firewall-cmd --permanent --add-port=3260/tcp success [root@linuxprobe ~]# firewall-cmd --reload success
17.2.2 配置iSCSI客戶端
首先檢查能夠與iscsi服務端通信:
[root@linuxprobe ~]# ping -c 4 192.168.10.10 PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data. 64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.959 ms 64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.469 ms 64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.465 ms 64 bytes from 192.168.10.10: icmp_seq=4 ttl=64 time=0.277 ms--- 192.168.10.10 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3002ms rtt min/avg/max/mdev = 0.277/0.542/0.959/0.253 ms
紅帽RHEL7系統(tǒng)已經默認安裝了iscsi客戶端服務程序:
[root@linuxprobe ~]# yum install iscsi-initiator-utils Loaded plugins: langpacks, product-id, subscription-manager Package iscsi-initiator-utils-6.2.0.873-21.el7.x86_64 already installed and latest version Nothing to do
編輯的iscsi客戶端名稱文件:
該名稱是initiator客戶端的唯一標識,讀者可以按照我的方法修改,也可以用iscsi-iname命令隨機生成~都可以的。
[root@linuxprobe ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client
重啟iscsi客戶端服務程序:
[root@linuxprobe ~]# systemctl restart iscsid
將iscsi客戶端服務程序添加到開機啟動項中:
[root@linuxprobe ~]# systemctl enable iscsidln -s '/usr/lib/systemd/system/iscsid.service' '/etc/systemd/system/multi-user.target.wants/iscsid.service'
發(fā)現(xiàn)iscsi服務端的可用存儲設備:
iscsiadm命令用于管理(插入、查詢、更新或刪除)iSCSI數(shù)據庫配置文件的命令行工具,格式見下面演示。
[root@linuxprobe ~]# iscsiadm -m discovery -t st -p 192.168.10.10 192.168.10.10:3260,1 iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80
連接iscsi服務端的可用存儲設備:
[root@linuxprobe ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 -p 192.168.10.10 --loginLogging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80, portal: 192.168.10.10,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80, portal: 192.168.10.10,3260] successful.
此時便多了一塊硬盤設備:
[root@linuxprobe ~]# file /dev/sdb /dev/sdb: block special
格式化、掛載后查看容量信息:
[root@linuxprobe ~]# mkfs.xfs /dev/sdb log stripe unit (524288 bytes) is too large (maximum is 256KiB) log stripe unit adjusted to 32KiB meta-data=/dev/sdb isize=256 agcount=16, agsize=654720 blks= sectsz=512 attr=2, projid32bit=1= crc=0 data = bsize=4096 blocks=10475520, imaxpct=25= sunit=128 swidth=256 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=5120, version=2= sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@linuxprobe ~]# mkdir /iscsi [root@linuxprobe ~]# mount /dev/sdb /iscsi [root@linuxprobe ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 18G 3.4G 15G 20% / devtmpfs 734M 0 734M 0% /dev tmpfs 742M 176K 742M 1% /dev/shm tmpfs 742M 8.8M 734M 2% /run tmpfs 742M 0 742M 0% /sys/fs/cgroup /dev/sr0 3.5G 3.5G 0 100% /media/cdrom /dev/sda1 497M 119M 379M 24% /boot /dev/sdb 40G 33M 40G 1% /iscsi
查看設備的UUID值:
[root@linuxprobe ~]# blkid | grep /dev/sdb /dev/sdb: UUID="eb9cbf2f-fce8-413a-b770-8b0f243e8ad6" TYPE="xfs"
設置為開機后自動掛載時因為iSCSI服務程序基于IP網絡傳輸數(shù)據,所以我們必需在fstab文件中添加參數(shù)_netdev,代表網絡聯(lián)通后再掛載:
[root@linuxprobe ~]# vim /etc/fstab UUID=eb9cbf2f-fce8-413a-b770-8b0f243e8ad6 /iscsi xfs defaults,_netdev 0 0
轉載于:https://www.cnblogs.com/linux130/p/5778881.html
總結
以上是生活随笔為你收集整理的第17章 使用iSCSI服务部署网络存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杜康酒多少钱啊?
- 下一篇: 为何导演一般不参与电影的剪辑