Linux就該這么學》最新正式版已出版上市,同學們可在線上京東網當當網淘寶網亞馬遜等電商平臺購買。

*亦可就近在新華書店購買*

章節概述:

本章開篇介紹了計算機硬件存儲設備的不同接口技術的優缺點,并由此切入iSCSI技術主題的講解。iSCSI技術實現了物理硬盤設備與TCP/IP網絡協議的相互結合,使得用戶可以通過互聯網方便地訪問遠程機房提供的共享存儲資源。本章將帶領大家在Linux系統上部署iSCSI服務端程序,并分別基于Linux系統和Windows系統來訪問遠程的存儲資源。通過本章以及第6章、第7章的學習,讀者將進一步理解和掌握如何在Linux系統中管理硬盤設備和存儲資源,為今后走向運營崗位打下堅實的基礎。

17.1 iSCSI技術介紹

硬盤是計算機硬件設備中重要的組成部分之一,硬盤存儲設備讀寫速度的快慢也會對服務器的整體性能造成影響。第6章、第7章講解的硬盤存儲結構、RAID磁盤陣列技術以及LVM技術等都是用于存儲設備的技術,盡管這些技術有軟件層面和硬件層面之分,但是它們都旨在解決硬盤存儲設備的讀寫速度問題,或者竭力保障存儲數據的安全。

為了進一步提升硬盤存儲設備的讀寫速度和性能,人們一直在努力改進物理硬盤設備的接口協議。當前的硬盤接口類型主要有IDE、SCSI和SATA這3種。

IDE是一種成熟穩定、價格便宜的并行傳輸接口。

SATA是一種傳輸速度更快、數據校驗更完整的串行傳輸接口。

SCSI是一種用于計算機和硬盤、光驅等設備之間系統級接口的通用標準,具有系統資源占用率低、轉速高、傳輸速度快等優點。

不論使用什么類型的硬盤接口,硬盤上的數據總是要通過計算機主板上的總線與CPU、內存設備進行數據交換,這種物理環境上的限制給硬盤資源的共享帶來了各種不便。后來,IBM公司開始動手研發基于TCP/IP協議和SCSI接口協議的新型存儲技術,這也就是我們目前能看到的互聯網小型計算機系統接口(iSCSI,Internet Small Computer System Interface)。這是一種將SCSI接口與以太網技術相結合的新型存儲技術,可以用來在網絡中傳輸SCSI接口的命令和數據。這樣,不僅克服了傳統SCSI接口設備的物理局限性,實現了跨區域的存儲資源共享,還可以在不停機的狀態下擴展存儲容量。

為了讓各位讀者做到知其然,知其所以然,以便在工作中靈活使用這項技術,下面將講解一下iSCSI技術在生產環境中的優勢和劣勢。首先,iSCSI存儲技術非常便捷,在訪問存儲資源的形式上發生了很大變化,擺脫了物理環境的限制,同時還可以把存儲資源分給多個服務器共同使用,因此是一種非常推薦使用的存儲技術。但是,iSCSI存儲技術受到了網速的制約。以往,硬盤設備直接通過主板上的總線進行數據傳輸,現在則需要讓互聯網作為數據傳輸的載體和通道,因此傳輸速率和穩定性是iSCSI技術的瓶頸。隨著網絡技術的持續發展,相信iSCSI技術也會隨之得以改善。

既然要通過以太網來傳輸硬盤設備上的數據,那么數據是通過網卡傳入到計算機中的么?這就有必要向大家介紹iSCSI-HBA卡了(見圖17-1)。與一般的網卡不同(連接網絡總線和內存,供計算機上網使用),iSCSI-HBA卡連接的則是SCSI接口或FC(光纖通道)總線和內存,專門用于在主機之間交換存儲數據,其使用的協議也與一般網卡有本質的不同。運行Linux系統的服務器會基于iSCSI協議把硬盤設備命令與數據打包成標準的TCP/IP數據包,然后通過以太網傳輸到目標存儲設備,而當目標存儲設備接收到這些數據包后,還需要基于iSCSI協議把TCP/IP數據包解壓成硬盤設備命令與數據。

ISCSI HBA卡

圖17-1? iSCSI-HBA卡實拍圖

17.2 創建RAID磁盤陣列

既然要使用iSCSI存儲技術為遠程用戶提供共享存儲資源,首先要保障用于存放資源的服務器的穩定性與可用性,否則一旦在使用過程中出現故障,則維護的難度相較于本地硬盤設備要更加復雜、困難。因此推薦各位讀者按照本書第7章講解的知識來部署RAID磁盤陣列組,確保數據的安全性。下面以配置RAID 5磁盤陣列組為例進行講解。考慮到第7章已經事無巨細地講解了RAID磁盤陣列技術和配置方法,因此本節不會再重復介紹相關參數的意義以及用途,忘記了的讀者可以翻回去看一下。

首先在虛擬機中添加4塊新硬盤,用于創建RAID 5磁盤陣列和備份盤,如圖17-2所示。

虛擬機添加硬盤

圖17-2? 添加4塊用于創建RAID 5級別磁盤陣列的新硬盤

啟動虛擬機系統,使用mdadm命令創建RAID磁盤陣列。其中,-Cv參數為創建陣列并顯示過程,/dev/md0為生成的陣列組名稱,-n 3參數為創建RAID 5磁盤陣列所需的硬盤個數,-l 5參數為RAID磁盤陣列的級別,-x 1參數為磁盤陣列的備份盤個數。在命令后面要逐一寫上使用的硬盤名稱。另外,還可以使用第3章講解的通配符來指定硬盤設備的名稱,有興趣的讀者可以試一下。

[[email protected] ~]# 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.

在上述命令成功執行之后,得到一塊名稱為/dev/md0的新設備,這是一塊RAID 5級別的磁盤陣列,并且還有一塊備份盤為硬盤數據保駕護航。大家可使用mdadm -D命令來查看設備的詳細信息。另外,由于在使用遠程設備時極有可能出現設備識別順序發生變化的情況,因此,如果直接在fstab掛載配置文件中寫入/dev/sdb、/dev/sdc等設備名稱的話,就有可能在下一次掛載了錯誤的存儲設備。而UUID值是設備的唯一標識符,可以用于精確地區分本地或遠程設備。于是我們可以把這個值記錄下來,一會兒準備填寫到掛載配置文件中。

[[email protected] ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Sep 24 21:59:57 2017
     Raid Level : raid5
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent
    Update Time : Thu Sep 24 22:02:23 2017
          State : clean 
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1
         Layout : left-symmetric
     Chunk Size : 512K
           Name : linuxprobe.com:0  (local to host linuxprobe.com)
           UUID : 3370f643:c10efd6a:44e91f2a:20c71f3e
         Events : 26
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd
       3       8       64        -      spare   /dev/sde
17.3 配置iSCSI服務端

iSCSI技術在工作形式上分為服務端(target)與客戶端(initiator)。iSCSI服務端即用于存放硬盤存儲資源的服務器,它作為前面創建的RAID磁盤陣列的存儲端,能夠為用戶提供可用的存儲資源。iSCSI客戶端則是用戶使用的軟件,用于訪問遠程服務端的存儲資源。下面按照表17-1來配置iSCSI服務端和客戶端所用的IP地址。

表17-1???????????????????????????? iSCSI服務端和客戶端的操作系統以及IP地址

主機名稱 操作系統 IP地址
iSCSI服務端 RHEL 7 192.168.10.10
iSCSI客戶端 RHEL 7 192.168.10.20

第1步:配置好Yum軟件倉庫后安裝iSCSI服務端程序以及配置命令工具。通過在yum命令的后面添加-y參數,在安裝過程中就不需要再進行手動確認了:

[[email protected] ~]# 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!

安裝完成后啟動iSCSI的服務端程序targetd,然后把這個服務程序加入到開機啟動項中,以便下次在服務器重啟后依然能夠為用戶提供iSCSI共享存儲資源服務:

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

第2步:配置iSCSI服務端共享資源。targetcli是用于管理iSCSI服務端存儲資源的專用配置命令,它能夠提供類似于fdisk命令的交互式配置功能,將iSCSI共享資源的配置內容抽象成“目錄”的形式,我們只需將各類配置信息填入到相應的“目錄”中即可。這里的難點主要在于認識每個“參數目錄”的作用。當把配置參數正確地填寫到“目錄”中后,iSCSI服務端也可以提供共享資源服務了。

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

[[email protected] ~]# 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步:創建iSCSI target名稱及配置共享資源。iSCSI target名稱是由系統自動生成的,這是一串用于描述共享資源的唯一字符串。稍后用戶在掃描iSCSI服務端時即可看到這個字符串,因此我們不需要記住它。系統在生成這個target名稱后,還會在/iscsi參數目錄中創建一個與其字符串同名的新“目錄”用來存放共享資源。我們需要把前面加入到iSCSI共享資源池中的硬盤設備添加到這個新目錄中,這樣用戶在登錄iSCSI服務端后,即可默認使用這硬盤設備提供的共享存儲資源了。

/> 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步:設置訪問控制列表(ACL)。iSCSI協議是通過客戶端名稱進行驗證的,也就是說,用戶在訪問存儲共享資源時不需要輸入密碼,只要iSCSI客戶端的名稱與服務端中設置的訪問控制列表中某一名稱條目一致即可,因此需要在iSCSI服務端的配置文件中寫入一串能夠驗證用戶信息的名稱。acls參數目錄用于存放能夠訪問iSCSI服務端共享存儲資源的客戶端名稱。劉遄老師推薦在剛剛系統生成的iSCSI target后面追加上類似于:client的參數,這樣既能保證客戶端的名稱具有唯一性,又非常便于管理和閱讀:

/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步:設置iSCSI服務端的監聽IP地址和端口號。位于生產環境中的服務器上可能有多塊網卡,那么到底是由哪個網卡或IP地址對外提供共享存儲資源呢?這就需要我們在配置文件中手動定義iSCSI服務端的信息,即在portals參數目錄中寫上服務器的IP地址。接下來將由系統自動開啟服務器192.168.10.10的3260端口將向外提供iSCSI共享存儲資源服務:

/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步:配置妥當后檢查配置信息,重啟iSCSI服務端程序并配置防火墻策略。在參數文件配置妥當后,可以瀏覽剛剛配置的信息,確保與下面的信息基本一致。在確認信息無誤后輸入exit命令來退出配置。注意,千萬不要習慣性地按Ctrl + C組合鍵結束進程,這樣不會保存配置文件,我們的工作也就白費了。最后重啟iSCSI服務端程序,再設置firewalld防火墻策略,使其放行3260/tcp端口號的流量。

/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
[[email protected] ~]# systemctl restart targetd
[[email protected] ~]# firewall-cmd --permanent --add-port=3260/tcp 
success 
[[email protected] ~]# firewall-cmd --reload 
success
17.4?配置Linux客戶端

我們在前面的章節中已經配置了很多Linux服務,基本上可以說,無論是什么服務,客戶端的配置步驟都要比服務端的配置步驟簡單一些。在RHEL 7系統中,已經默認安裝了iSCSI客戶端服務程序initiator。如果您的系統沒有安裝的話,可以使用Yum軟件倉庫手動安裝。

[[email protected] ~]# 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協議是通過客戶端的名稱來進行驗證,而該名稱也是iSCSI客戶端的唯一標識,而且必須與服務端配置文件中訪問控制列表中的信息一致,否則客戶端在嘗試訪問存儲共享設備時,系統會彈出驗證失敗的保存信息。

下面我們編輯iSCSI客戶端中的initiator名稱文件,把服務端的訪問控制列表名稱填寫進來,然后重啟客戶端iscsid服務程序并將其加入到開機啟動項中:

[[email protected] ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client
[[email protected] ~]# systemctl restart iscsid
[[email protected] ~]# systemctl enable iscsid
 ln -s '/usr/lib/systemd/system/iscsid.service' '/etc/systemd/system/multi-user.target.wants/iscsid.service'

iSCSI客戶端訪問并使用共享存儲資源的步驟很簡單,只需要記住劉遄老師的一個小口訣“先發現,再登錄,最后掛載并使用”。iscsiadm是用于管理、查詢、插入、更新或刪除iSCSI數據庫配置文件的命令行工具,用戶需要先使用這個工具掃描發現遠程iSCSI服務端,然后查看找到的服務端上有哪些可用的共享存儲資源。其中,-m?discovery參數的目的是掃描并發現可用的存儲資源,-t st參數為執行掃描操作的類型,-p 192.168.10.10參數為iSCSI服務端的IP地址:

[[email protected] ~]# 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

在使用iscsiadm命令發現了遠程服務器上可用的存儲資源后,接下來準備登錄iSCSI服務端。其中,-m node參數為將客戶端所在主機作為一臺節點服務器,-T??iqn.2003-01. org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80參數為要使用的存儲資源(大家可以直接復制前面命令中掃描發現的結果,以免錄入錯誤),-p 192.168.10.10參數依然為對方iSCSI服務端的IP地址。最后使用--login或-l參數進行登錄驗證。

[root@linuxprobe ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 -p 192.168.10.10 --login
Logging 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.

在iSCSI客戶端成功登錄之后,會在客戶端主機上多出一塊名為/dev/sdb的設備文件。第6章曾經講過,udev服務在命名硬盤名稱時,與硬盤插槽是沒有關系的。接下來可以像使用本地主機上的硬盤那樣來操作這個設備文件了。

[[email protected] ~]# file /dev/sdb 
/dev/sdb: block special

下面進入標準的磁盤操作流程。考慮到大家已經在第6章學習了這部分內容,外加這個設備文件本身只有40GB的容量,因此我們不再進行分區,而是直接格式化并掛載使用。

[[email protected] ~]# 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
[[email protected] ~]# mkdir /iscsi
[[email protected] ~]# mount /dev/sdb /iscsi
[[email protected] ~]# 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

從此以后,這個設備文件就如同是客戶端本機主機上的硬盤那樣工作。需要提醒大家的是,由于udev服務是按照系統識別硬盤設備的順序來命名硬盤設備的,當客戶端主機同時使用多個遠程存儲資源時,如果下一次識別遠程設備的順序發生了變化,則客戶端掛載目錄中的文件也將隨之混亂。為了防止發生這樣的問題,我們應該在/etc/fstab配置文件中使用設備的UUID唯一標識符進行掛載,這樣,不論遠程設備資源的識別順序再怎么變化,系統也能正確找到設備所對應的目錄。

blkid命令用于查看設備的名稱、文件系統及UUID。可以使用管道符(詳見第3章)進行過濾,只顯示與/dev/sdb設備相關的信息:

[[email protected] ~]# blkid | grep /dev/sdb
/dev/sdb: UUID="eb9cbf2f-fce8-413a-b770-8b0f243e8ad6" TYPE="xfs" 

劉遄老師還要再啰嗦一句,由于/dev/sdb是一塊網絡存儲設備,而iSCSI協議是基于TCP/IP網絡傳輸數據的,因此必須在/etc/fstab配置文件中添加上_netdev參數,表示當系統聯網后再進行掛載操作,以免系統開機時間過長或開機失敗:

[[email protected] ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 4 19:26:23 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0 
UUID=eb9cbf2f-fce8-413a-b770-8b0f243e8ad6 /iscsi xfs defaults,_netdev 0 0

如果我們不再需要使用iSCSI共享設備資源了,可以用iscsiadm命令的-u參數將其設備卸載:

[root@linuxprobe?~]#?iscsiadm?-m?node?-T?iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80?-u

Logging?out?of?session?[sid:?7,?target?:?iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80,?portal:?192.168.10.10,3260]

Logout?of?[sid:?7,?target:?iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80,portal:192.168.10.10,3260]?successful.
17.5 配置Windows客戶端

使用Windows系統的客戶端也可以正常訪問iSCSI服務器上的共享存儲資源,而且操作原理及步驟與Linux系統的客戶端基本相同。在進行下面的實驗之前,請先關閉Linux系統客戶端,以免這兩臺客戶端主機同時使用iSCSI共享存儲資源而產生潛在問題。下面按照表17-2來配置iSCSI服務器和Windows客戶端所用的IP地址。

表17-2??? iSCSI服務器和客戶端的操作系統以及IP地址

主機名稱 操作系統 IP地址
iSCSI服務端 RHEL 7 192.168.10.10
Windows系統客戶端 Windows 7 192.168.10.30

第1步:運行iSCSI發起程序。在Windows 7操作系統中已經默認安裝了iSCSI客戶端程序,我們只需在控制面板中找到“系統和安全”標簽,然后單擊“管理工具”(見圖17-3),進入到“管理工具”頁面后即可看到“iSCSI發起程序”圖標。雙擊該圖標。在第一次運行iSCSI發起程序時,系統會提示“Microsoft iSCSI服務端未運行”,單擊“是”按鈕即可自動啟動并運行iSCSI發起程序,如圖17-4所示。

圖17-3? 在控制面板中單擊“管理工具”

圖17-4? 雙擊“iSCSI發起程序”圖標

第2步:掃描發現iSCSI服務端上可用的存儲資源。不論是Windows系統還是Linux系統,要想使用iSCSI共享存儲資源都必須先進行掃描發現操作。運行iSCSI發起程序后在“目標”選項卡的“目標”文本框中寫入iSCSI服務端的IP地址,然后單擊“快速連接”按鈕,如圖17-5所示。

圖17-5? 填寫iSCSI服務端的IP地址

在彈出的“快速連接”提示框中可看到共享的硬盤存儲資源,單擊“完成”按鈕即可,如圖17-6所示。

圖17-6? 在“快速連接”提示框中看到的共享的硬盤存儲資源

回到“目標”選項卡頁面,可以看到共享存儲資源的名稱已經出現,如圖17-7所示。

第3步:準備連接iSCSI服務端的共享存儲資源。由于在iSCSI服務端程序上設置了ACL,使得只有客戶端名稱與ACL策略中的名稱保持一致時才能使用遠程存儲資源,因此需要在“配置”選項卡中單擊“更改”按鈕,把iSCSI發起程序的名稱修改為服務端

圖17-7? 在“目標”選項卡中看到了共享存儲資源

圖17-8? 修改iSCSI發起程序的名稱

在確認客戶端發起程序的名稱修改正確后即可返回到“目標”選項卡頁面中,然后單擊“連接”按鈕進行連接請求,成功連接到遠程共享存儲資源的頁面如圖17-9所示。

圖17-9? 成功連接到遠程共享存儲資源

第4步:訪問iSCSI遠程共享存儲資源。右鍵單擊桌面上的“計算機”圖標,打開計算機管理程序,如圖17-10所示。

圖17-10? 計算機管理程序的界面

開始對磁盤進行初始化操作,如圖17-11所示。Windows系統用來初始化磁盤設備的步驟十分簡單,各位讀者都可以玩得轉Linux系統,相信Windows系統就更不在話下了。Windows系統的初始化過程步驟如圖17-12至圖17-18所示。

圖17-11? 對磁盤設備進行初始化操作

圖17-12? 開始使用“新建簡單卷向導”

圖17-13? 對磁盤設備進行分區操作

圖17-14? 設置系統中顯示的盤符

圖17-15? 設置磁盤設備的格式以及卷標

圖17-16? ?檢查磁盤初始化信息是否正確

圖17-17? ?等待磁盤設備初始化過程結束

圖17-18? 磁盤初始化完畢后彈出設備圖標

出現問題?大膽提問!

因讀者們硬件不同或操作錯誤都可能導致實驗配置出錯,請耐心再仔細看看操作步驟吧,不要氣餒~

Linux技術交流請加A群:560843(滿),B群:340829(推薦),C群:463590(推薦),點此查看全國群

*本群特色:通過口令驗證確保每一個群員都是《Linux就該這么學》的讀者,答疑更有針對性,不定期免費領取定制禮品。

本章節的復習作業(答案就在問題的下一行哦,用鼠標選中即可看到的~)

1.簡述iSCSI存儲技術在生產環境中的作用。

答:iSCSI存儲技術通過把硬件存儲設備與TCP/IP網絡協議相互結合,使得用戶可以通過互聯網方便的訪問遠程機房提供的共享存儲資源。

2.在Linux系統中,iSCSI服務端和iSCSI客戶端所使用的服務程序分別叫什么?

答:iSCSI服務端程序為targetd,iSCSI客戶端程序為initiator。

3.在使用targetcli命令配置iSCSI服務端配置文件時,acls與portals參數目錄中分別存放什么內容?

答:acls參數目錄用于存放能夠訪問iSCSI服務端共享存儲資源的客戶端名稱,portals參數目錄用于定義由服務器的哪個IP地址對外提供共享存儲資源服務。

4.iSCSI協議占用了服務器哪個協議和端口號?

答:iSCSI協議占用了服務器TCP協議的3260端口號。

5.用戶在填寫fstab設備掛載配置文件時,一般會把遠程存儲資源的UUID(而非設備的名稱)填寫到配置文件中。這是為什么?

答:在Linux系統中,設備名稱是由udev服務進行管理的,而udev服務的設備命名規則是由設備類型及系統識別順序等信息共同組成的。考慮到網絡存儲設備具有識別順序不穩定的特點,所以為了避免識別順序混亂造成的掛載錯誤問題,故使用UUID進行掛載操作。

6.在使用Windows系統來訪問iSCSI共享存儲資源時,它有兩個步驟與Linux系統一樣。請說明是哪兩個步驟。

答:掃描并發現服務端上可用的iSCSI共享存儲資源;驗證登錄。

本文原創地址:http://www.52437949.com/chapter-17.html編輯:劉遄,審核員:暫無