iSCSI技術實現了物理硬盤設備與TCP/IP網絡協議的相互結合,使得用戶能夠經過互聯網方便地訪問遠程機房提供的共享存儲資源。html
既然要使用iSCSI存儲技術爲遠程用戶提供共享存儲資源,首先要保障用於存放資源的服務器的穩定性與可用性,不然一旦在使用過程當中出現故障,則維護的難度相較於本地硬盤設備要更加複雜、困難。node
此處略過,RAID詳細建立過程講解請看 https://www.cnblogs.com/zhangjianghua/p/9091200.htmlpython
iSCSI技術在工做形式上分爲服務端(target)與客戶端(initiator)。linux
iSCSI服務端即用於存放硬盤存儲資源的服務器,它做爲前面建立的RAID磁盤陣列的存儲端,可以爲用戶提供可用的存儲資源。iSCSI客戶端則是用戶使用的軟件,用於訪問遠程服務端的存儲資源。shell
iSCSI服務端和客戶端的操做系統以及IP地址:數據庫
主機名稱 | 操做系統 | IP地址 |
iSCSI服務端 | RHEL 7 | 192.168.38.251 |
iSCSI客戶端 | RHEL 7 | 192.168.38.250 |
第1步:安裝iSCSI服務端程序以及配置命令工具;安裝完成後,啓動iSCSI的服務端程序targetd,而後把這個服務程序加入到開機啓動項中json
[root@zhangjh ~]# yum install targetd targetcli -y [root@zhangjh ~]# systemctl start targetd [root@zhangjh ~]# systemctl enable targetd ln -s '/usr/lib/systemd/system/targetd.service' '/etc/systemd/system/multi-user.target.wants/targetd.service'
第2步:配置iSCSI服務端共享資源。vim
targetcli是用於管理iSCSI服務端存儲資源的專用配置命令,它可以提供相似於fdisk命令的交互式配置功能,將iSCSI共享資源的配置內容抽象成「目錄」的形式,咱們只需將各種配置信息填入到相應的「目錄」中便可。windows
[root@zhangjh ~]# targetcli 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: 1] | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.858af61dee6c ................ [TPGs: 1] | o- tpg1 ...................................................... [no-gen-acls, no-auth] | o- acls ................................................................. [ACLs: 0] | o- luns ................................................................. [LUNs: 0] | o- portals ........................................................... [Portals: 0] o- loopback ................................................................ [Targets: 0] /> cd /backstores/block /backstores/block> create disik0 /dev/md0 Created block storage object disik0 using /dev/md0. /backstores/block> cd / /> ls o- / ................................................................................ [...] o- backstores ..................................................................... [...] | o- block ......................................................... [Storage Objects: 1] | | o- disik0 ............................... [/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: 1] | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.858af61dee6c ................ [TPGs: 1] | o- tpg1 ...................................................... [no-gen-acls, no-auth] | o- acls ................................................................. [ACLs: 0] | o- luns ................................................................. [LUNs: 0] | o- portals ........................................................... [Portals: 0] o- loopback ................................................................ [Targets: 0] />
第3步:建立iSCSI target名稱及配置共享資源。安全
iSCSI target名稱是由系統自動生成的,這是一串用於描述共享資源的惟一字符串。稍後用戶在掃描iSCSI服務端時便可看到這個字符串,所以咱們不須要記住它。
系統在生成這個target名稱後,還會在/iscsi參數目錄中建立一個與其字符串同名的新「目錄」用來存放共享資源。
咱們須要把前面加入到iSCSI共享資源池中的硬盤設備添加到這個新目錄中,這樣用戶在登陸iSCSI服務端後,便可默認使用這硬盤設備提供的共享存儲資源了。
/> cd iscsi/ /iscsi> create Created target iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853. Created TPG 1. /iscsi> cd iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853/ /iscsi/iqn.20....762bbcbd6853> ls o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 .................... [TPGs: 1] o- tpg1 .......................................................... [no-gen-acls, no-auth] o- acls ..................................................................... [ACLs: 0] o- luns ..................................................................... [LUNs: 0] o- portals ............................................................... [Portals: 0] /iscsi/iqn.20....762bbcbd6853> cd tpg1/luns /iscsi/iqn.20...853/tpg1/luns> create /backstores/block/disik0 Created LUN 0. /iscsi/iqn.20...853/tpg1/luns>
第4步:設置訪問控制列表(ACL)。
iSCSI協議是經過客戶端名稱進行驗證的,也就是說,用戶在訪問存儲共享資源時不須要輸入密碼,只要iSCSI客戶端的名稱與服務端中設置的訪問控制列表中某一名稱條目一致便可,
所以須要在iSCSI服務端的配置文件中寫入一串可以驗證用戶信息的名稱。acls參數目錄用於存放可以訪問iSCSI服務端共享存儲資源的客戶端名稱。
/iscsi/iqn.20...853/tpg1/luns> cd .. /iscsi/iqn.20...bcbd6853/tpg1> cd acls /iscsi/iqn.20...853/tpg1/acls> create iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client Created Node ACL for iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client Created mapped LUN 0. /iscsi/iqn.20...853/tpg1/acls>
第5步:設置iSCSI服務端的監聽IP地址和端口號。
位於生產環境中的服務器上可能有多塊網卡,那麼究竟是由哪一個網卡或IP地址對外提供共享存儲資源呢?
這就須要咱們在配置文件中手動定義iSCSI服務端的信息,即在portals參數目錄中寫上服務器的IP地址。
接下來將由系統自動開啓服務器192.168.10.10的3260端口將向外提供iSCSI共享存儲資源服務:
/iscsi/iqn.20...853/tpg1/acls> cd .. /iscsi/iqn.20...bcbd6853/tpg1> cd portals /iscsi/iqn.20.../tpg1/portals> create 192.168.38.251 Using default IP port 3260 Created network portal 192.168.38.251:3260. /iscsi/iqn.20.../tpg1/portals>
第6步:配置穩當後檢查配置信息,重啓iSCSI服務端程序並配置防火牆策略。
/iscsi/iqn.20.../tpg1/portals> ls / o- / ................................................................................ [...] o- backstores ..................................................................... [...] | o- block ......................................................... [Storage Objects: 1] | | o- disik0 ................................. [/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: 2] | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 ................ [TPGs: 1] | | o- tpg1 ...................................................... [no-gen-acls, no-auth] | | o- acls ................................................................. [ACLs: 1] | | | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client [Mapped LUNs: 1] | | | o- mapped_lun0 ....................................... [lun0 block/disik0 (rw)] | | o- luns ................................................................. [LUNs: 1] | | | o- lun0 ............................................... [block/disik0 (/dev/md0)] | | o- portals ........................................................... [Portals: 1] | | o- 192.168.38.251:3260 ..................................................... [OK] | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.858af61dee6c ................ [TPGs: 1] | o- tpg1 ...................................................... [no-gen-acls, no-auth] | o- acls ................................................................. [ACLs: 0] | o- luns ................................................................. [LUNs: 0] | o- portals ........................................................... [Portals: 0] o- loopback ................................................................ [Targets: 0] /iscsi/iqn.20.../tpg1/portals> exit Global pref auto_save_on_exit=true Last 10 configs saved in /etc/target/backup. Configuration saved to /etc/target/saveconfig.json [root@zhangjh ~]# systemctl restart targetd [root@zhangjh ~]# iptables -F [root@zhangjh ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@zhangjh ~]# yum install iscsi-initiator-utils.i686 -y
編輯iSCSI客戶端中的initiator名稱文件,把服務端的訪問控制列表名稱填寫進來,而後重啓客戶端iscsid服務程序並將其加入到開機啓動項中
[root@zhangjh ~]# vim /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client [root@zhangjh ~]# systemctl restart iscsid [root@zhangjh ~]# systemctl enable iscsid ln -s '/usr/lib/systemd/system/iscsid.service' '/etc/systemd/system/multi-user.target.wants/iscsid.service'
iscsiadm是用於管理、查詢、插入、更新或刪除iSCSI數據庫配置文件的命令行工具,用戶須要先使用這個工具掃描發現遠程iSCSI服務端,而後查看找到的服務端上有哪些可用的共享存儲資源。
其中,-m discovery參數的目的是掃描並發現可用的存儲資源,-t st參數爲執行掃描操做的類型,-p 參數爲iSCSI服務端的IP地址:
發現卷:
[root@zhangjh ~]# iscsiadm -m discovery -t st -p 192.168.38.251 192.168.38.251:3260,-1 iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.858af61dee6c #這個是前邊多建立了一個 192.168.38.251:3260,1 iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853
登陸iSCSI服務端
[root@zhangjh ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 -p 192.168.38.251 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260] (multiple) Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260] successful.
在iSCSI客戶端成功登陸以後,會在客戶端主機上多出一塊名爲/dev/sdb的設備文件。
[root@zhangjh ~]# file /dev/sdb /dev/sdb: block special
下面進入標準的磁盤操做流程:
[root@zhangjh ~]# mkfs.xfs /dev/sdb -f log stripe unit (524288 bytes) is too large (maximum is 256KiB) log stripe unit adjusted to 32KiB meta-data=/dev/sdf 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@zhangjh ~]# mkdir /iscsi [root@zhangjh ~]# mount /dev/sdb /iscsi/ [root@zhangjh ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 18G 3.1G 15G 18% / devtmpfs 909M 0 909M 0% /dev tmpfs 918M 140K 917M 1% /dev/shm tmpfs 918M 9.0M 909M 1% /run tmpfs 918M 0 918M 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
今後之後,這個設備文件就如同是客戶端本機主機上的硬盤那樣工做了
若是咱們再也不須要使用iSCSI共享設備資源了,能夠用iscsiadm命令的-u參數將其設備卸載:
[root@zhangjh ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 -u Logging out of session [sid: 1, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260] Logout of [sid: 1, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260] successful.
第1步:運行iSCSI發起程序。
第2步:掃描發現iSCSI服務端上可用的存儲資源。
在彈出的「快速鏈接」提示框中可看到共享的硬盤存儲資源,單擊「完成」按鈕便可
第3步:鏈接iSCSI服務端的共享存儲資源。
因爲在iSCSI服務端程序上設置了ACL,使得只有客戶端名稱與ACL策略中的名稱保持一致時才能使用遠程存儲資源,所以須要在「配置」選項卡中單擊「更改」按鈕,把iSCSI發起程序的名稱修改成服務端
而後點擊鏈接
顯示鏈接成功:格式化分區便可使用