17.3 配置iSCSI服務(wù)端

2022-06-01 10:35 更新

iSCSI技術(shù)在工作形式上分為服務(wù)端(target)與客戶(hù)端(initiator)。iSCSI服務(wù)端即用于存放硬盤(pán)存儲(chǔ)資源的服務(wù)器,它作為前面創(chuàng)建的RAID磁盤(pán)陣列的存儲(chǔ)端,能夠?yàn)橛脩?hù)提供可用的存儲(chǔ)資源。iSCSI客戶(hù)端則是用戶(hù)使用的軟件,用于訪問(wèn)遠(yuǎn)程服務(wù)端的存儲(chǔ)資源。下面按照表17-1來(lái)配置iSCSI服務(wù)端和客戶(hù)端所用的IP地址。

表17-1 iSCSI服務(wù)端和客戶(hù)端的操作系統(tǒng)以及IP地址

主機(jī)名稱(chēng) 操作系統(tǒng) IP地址
iSCSI服務(wù)端 RHEL 8 192.168.10.10
iSCSI客戶(hù)端 RHEL 8 192.168.10.20

第1步:配置好Yum軟件倉(cāng)庫(kù)后安裝iSCSI服務(wù)端程序以及配置命令工具。通過(guò)在yum命令的后面添加-y參數(shù),在安裝過(guò)程中就不需要再進(jìn)行手動(dòng)確認(rèn)了:

    [root@linuxprobe ~]# yum -y install targetd targetcli
    Loaded plugins: langpacks, product-id, subscription-manager
    ………………省略部分輸出信息………………
    Installing:
     targetcli noarch 2.1.fb34-1.el7 rhel 55 k
     targetd noarch 0.7.1-1.el7 rhel 48 k
    Installing for dependencies:
     PyYAML x86_64 3.10-11.el7 rhel 153 k
     libyaml x86_64 0.1.4-10.el7 rhel 55 k
     lvm2-python-libs x86_64 7:2.02.105-14.el7 rhel 153 k
     pyparsing noarch 1.5.6-9.el7 rhel 94 k
     python-configshell noarch 1:1.1.fb11-3.el7 rhel 64 k
     python-kmod x86_64 0.9-4.el7 rhel 57 k
     python-rtslib noarch 2.1.fb46-1.el7 rhel 75 k
     python-setproctitle x86_64 1.1.6-5.el7 rhel 15 k
     python-urwid x86_64 1.1.1-3.el7 rhel 654 k
    ………………省略部分輸出信息………………
    Installed:
     targetcli.noarch 0:2.1.fb34-1.el7 targetd.noarch 0:0.7.1-1.el7 
    Dependency Installed:
     PyYAML.x86_64 0:3.10-11.el7 
     libyaml.x86_64 0:0.1.4-10.el7 
     lvm2-python-libs.x86_64 7:2.02.105-14.el7 
     pyparsing.noarch 0:1.5.6-9.el7 
     python-configshell.noarch 1:1.1.fb11-3.el7 
     python-kmod.x86_64 0:0.9-4.el7 
     python-rtslib.noarch 0:2.1.fb46-1.el7 
     python-setproctitle.x86_64 0:1.1.6-5.el7 
     python-urwid.x86_64 0:1.1.1-3.el7 
    Complete!

安裝完成后啟動(dòng)iSCSI的服務(wù)端程序targetd,然后把這個(gè)服務(wù)程序加入到開(kāi)機(jī)啟動(dòng)項(xiàng)中,以便下次在服務(wù)器重啟后依然能夠?yàn)橛脩?hù)提供iSCSI共享存儲(chǔ)資源服務(wù):

    [root@linuxprobe ~]# systemctl start targetd
    [root@linuxprobe ~]# systemctl enable targetd
     ln -s '/usr/lib/systemd/system/targetd.service' '/etc/systemd/system/multi-user.target.wants/targetd.service'

第2步:配置iSCSI服務(wù)端共享資源。targetcli是用于管理iSCSI服務(wù)端存儲(chǔ)資源的專(zhuān)用配置命令,它能夠提供類(lèi)似于fdisk命令的交互式配置功能,將iSCSI共享資源的配置內(nèi)容抽象成“目錄”的形式,我們只需將各類(lèi)配置信息填入到相應(yīng)的“目錄”中即可。這里的難點(diǎn)主要在于認(rèn)識(shí)每個(gè)“參數(shù)目錄”的作用。當(dāng)把配置參數(shù)正確地填寫(xiě)到“目錄”中后,iSCSI服務(wù)端也可以提供共享資源服務(wù)了。

在執(zhí)行targetcli命令后就能看到交互式的配置界面了。在該界面中可以使用很多Linux命令,比如利用ls查看目錄參數(shù)的結(jié)構(gòu),使用cd切換到不同的目錄中。/backstores/block是iSCSI服務(wù)端配置共享設(shè)備的位置。我們需要把剛剛創(chuàng)建的RAID 5磁盤(pán)陣列md0文件加入到配置共享設(shè)備的“資源池”中,并將該文件重新命名為disk0,這樣用戶(hù)就不會(huì)知道是由服務(wù)器中的哪塊硬盤(pán)來(lái)提供共享存儲(chǔ)資源,而只會(huì)看到一個(gè)名為disk0的存儲(chǔ)設(shè)備。

    [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
    /> cd /backstores/block
    /backstores/block> create disk0 /dev/md0
    Created block storage object disk0 using /dev/md0.
    /backstores/block> cd /
    /> 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]

第3步:創(chuàng)建iSCSI target名稱(chēng)及配置共享資源。iSCSI target名稱(chēng)是由系統(tǒng)自動(dòng)生成的,這是一串用于描述共享資源的唯一字符串。稍后用戶(hù)在掃描iSCSI服務(wù)端時(shí)即可看到這個(gè)字符串,因此我們不需要記住它。系統(tǒng)在生成這個(gè)target名稱(chēng)后,還會(huì)在/iscsi參數(shù)目錄中創(chuàng)建一個(gè)與其字符串同名的新“目錄”用來(lái)存放共享資源。我們需要把前面加入到iSCSI共享資源池中的硬盤(pán)設(shè)備添加到這個(gè)新目錄中,這樣用戶(hù)在登錄iSCSI服務(wù)端后,即可默認(rèn)使用這硬盤(pán)設(shè)備提供的共享存儲(chǔ)資源了。

    /> cd iscsi
    /iscsi> 
    /iscsi> create
    Created target iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80.
    Created TPG 1.
    /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/luns
    /iscsi/iqn.20...d80/tpg1/luns> create /backstores/block/disk0 
    Created LUN 0.

第4步:設(shè)置訪問(wèn)控制列表(ACL)。iSCSI協(xié)議是通過(guò)客戶(hù)端名稱(chēng)進(jìn)行驗(yàn)證的,也就是說(shuō),用戶(hù)在訪問(wèn)存儲(chǔ)共享資源時(shí)不需要輸入密碼,只要iSCSI客戶(hù)端的名稱(chēng)與服務(wù)端中設(shè)置的訪問(wèn)控制列表中某一名稱(chēng)條目一致即可,因此需要在iSCSI服務(wù)端的配置文件中寫(xiě)入一串能夠驗(yàn)證用戶(hù)信息的名稱(chēng)。acls參數(shù)目錄用于存放能夠訪問(wèn)iSCSI服務(wù)端共享存儲(chǔ)資源的客戶(hù)端名稱(chēng)。劉遄老師推薦在剛剛系統(tǒng)生成的iSCSI target后面追加上類(lèi)似于:client的參數(shù),這樣既能保證客戶(hù)端的名稱(chēng)具有唯一性,又非常便于管理和閱讀:

    /iscsi/iqn.20...d80/tpg1/luns> cd ..
    /iscsi/iqn.20...c356ad80/tpg1> cd acls 
    /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.

第5步:設(shè)置iSCSI服務(wù)端的監(jiān)聽(tīng)I(yíng)P地址和端口號(hào)。位于生產(chǎn)環(huán)境中的服務(wù)器上可能有多塊網(wǎng)卡,那么到底是由哪個(gè)網(wǎng)卡或IP地址對(duì)外提供共享存儲(chǔ)資源呢?這就需要我們?cè)谂渲梦募惺謩?dòng)定義iSCSI服務(wù)端的信息,即在portals參數(shù)目錄中寫(xiě)上服務(wù)器的IP地址。接下來(lái)將由系統(tǒng)自動(dòng)開(kāi)啟服務(wù)器192.168.10.10的3260端口將向外提供iSCSI共享存儲(chǔ)資源服務(wù):

    /iscsi/iqn.20...d80/tpg1/acls> cd ..
    /iscsi/iqn.20...c356ad80/tpg1> cd portals 
    /iscsi/iqn.20.../tpg1/portals> create 192.168.10.10
    Using default IP port 3260
    Created network portal 192.168.10.10:3260.

第6步:配置妥當(dāng)后檢查配置信息,重啟iSCSI服務(wù)端程序并配置防火墻策略。在參數(shù)文件配置妥當(dāng)后,可以瀏覽剛剛配置的信息,確保與下面的信息基本一致。在確認(rèn)信息無(wú)誤后輸入exit命令來(lái)退出配置。注意,千萬(wàn)不要習(xí)慣性地按Ctrl + C組合鍵結(jié)束進(jìn)程,這樣不會(huì)保存配置文件,我們的工作也就白費(fèi)了。最后重啟iSCSI服務(wù)端程序,再設(shè)置firewalld防火墻策略,使其放行3260/tcp端口號(hào)的流量。

    /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
    [root@linuxprobe ~]# systemctl restart targetd
    [root@linuxprobe ~]# firewall-cmd --permanent --add-port=3260/tcp 
    success 
    [root@linuxprobe ~]# firewall-cmd --reload 
    success
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)