linux就該這麼學第8章使用 iSCSI 服務部署網路儲存

tjjingpan發表於2018-11-01

本章講解了如下內容:
➢ iSCSI 技術概述;
➢ 建立 RAID 磁碟陣列;
➢ 配置 iSCSI 服務端;
➢ 配置 Linux 客戶端;
➢ 配置 Windows 客戶端。
本章開篇介紹了計算機硬體儲存裝置的不同介面技術的優缺點,並由此切入 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 資料包解壓成硬碟裝置命令與資料。

17.2 建立 RAID 磁碟陣列

既然要使用 iSCSI 儲存技術為遠端使用者提供共享儲存資源,首先要保障用於存放資源的
伺服器的穩定性與可用性,否則一旦在使用過程中出現故障,則維護的難度相較於本地硬碟
裝置要更加複雜、困難。因此推薦各位讀者按照本書第 7 章講解的知識來部署 RAID 磁碟陣
列組,確保資料的安全性。下面以配置 RAID 5 磁碟陣列組為例進行講解。考慮到第 7 章已經
事無鉅細地講解了 RAID 磁碟陣列技術和配置方法,因此本節不會再重複介紹相關引數的意
義以及用途,忘記了的讀者可以翻回去看一下。
首先在虛擬機器中新增 4 塊新硬碟,用於建立 RAID 5 磁碟陣列和備份盤,如圖 17-2 所示。

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

[root@localhost ~]# 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 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

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

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed Oct 31 08:57:59 2018
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Oct 31 08:59:44 2018
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 8c5098b7:8dee3b88:d0ffc83f:a7a0870d
            Events : 18

    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 地址。

主機名稱 作業系統 IP地址
ISCSI服務端 centos7 192.168.10.1
ISCSI客戶端 centos7 192.168.10.20

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

[root@localhost ~]# yum -y install targetd targetcli

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

[root@localhost ~]# systemctl start targetd
[root@localhost ~]# systemctl enable targetd
Created symlink from /etc/systemd/system/multi-user.target.wants/targetd.service to /usr/lib/systemd/system/targetd.service.

第2步:配置 iSCSI 服務端共享資源。targetcli 是用於管理 iSCSI 服務端儲存資源的專用
配置命令,它能夠提供類似於 fdisk 命令的互動式配置功能,將 iSCSI 共享資源的配置內容抽
象成“目錄”的形式,我們只需將各類配置資訊填入到相應的“目錄”中即可。這裡的難點主
要在於認識每個“引數目錄”的作用。當把配置引數正確地填寫到“目錄”中後,iSCSI 服務
端也可以提供共享資源服務了。
在執行 targetcli 命令後就能看到互動式的配置介面了。在該介面中可以使用很多 Linux 命
令,比如利用 ls 檢視目錄引數的結構,使用 cd 切換到不同的目錄中。/backstores/block 是 iSCSI
服務端配置共享裝置的位置。我們需要把剛剛建立的 RAID 5 磁碟陣列 md0 檔案加入到配置
共享裝置的“資源池”中,並將該檔案重新命名為 disk0,這樣使用者就不會知道是由伺服器中
的哪塊硬碟來提供共享儲存資源,而只會看到一個名為 disk0 的儲存裝置。

[root@localhost ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
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- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | 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> create
Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7/
/iscsi/iqn.20....3820fdacaeb7> ls
o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7 ........................................................... [TPGs: 1]
  o- tpg1 ................................................................................................... [no-gen-acls, no-auth]
    o- acls .............................................................................................................. [ACLs: 0]
    o- luns .............................................................................................................. [LUNs: 0]
    o- portals ........................................................................................................ [Portals: 1]
      o- 0.0.0.0:3260 ......................................................................................................... [OK]
/iscsi/iqn.20....3820fdacaeb7> cd tpg1/luns 
/iscsi/iqn.20...eb7/tpg1/luns> create /backstores/block/disk0 
Created LUN 0.
/iscsi/iqn.20...eb7/tpg1/luns> 

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

/iscsi/iqn.20...eb7/tpg1/luns> cd ..
/iscsi/iqn.20...fdacaeb7/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
  o- acls ................................................................................................................ [ACLs: 0]
  o- luns ................................................................................................................ [LUNs: 1]
  | o- lun0 ............................................................................ [block/disk0 (/dev/md0) (default_tg_pt_gp)]
  o- portals .......................................................................................................... [Portals: 1]
    o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...fdacaeb7/tpg1> cd acls 
/iscsi/iqn.20...eb7/tpg1/acls> ls
o- acls .................................................................................................................. [ACLs: 0]
/iscsi/iqn.20...eb7/tpg1/acls> ll
Command not found ll
/iscsi/iqn.20...eb7/tpg1/acls> create iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client
Created Node ACL for iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client
Created mapped LUN 0.

第5步:

設定 iSCSI 服務端的監聽 IP 地址和埠號。位於生產環境中的伺服器上可能有
多塊網路卡,那麼到底是由哪個網路卡或 IP 地址對外提供共享儲存資源呢?這就需要我們在配置
檔案中手動定義 iSCSI 服務端的資訊,即在 portals 引數目錄中寫上伺服器的 IP 地址。接下來
將由系統自動開啟伺服器 192.168.10.10 的 3260 埠將向外提供 iSCSI 共享儲存資源服務:

+

/iscsi/iqn.20...eb7/tpg1/acls> cd ..
/iscsi/iqn.20...fdacaeb7/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
  o- acls ................................................................................................................ [ACLs: 1]
  | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client ......................................... [Mapped LUNs: 1]
  |   o- mapped_lun0 ....................................................................................... [lun0 block/disk0 (rw)]
  o- luns ................................................................................................................ [LUNs: 1]
  | o- lun0 ............................................................................ [block/disk0 (/dev/md0) (default_tg_pt_gp)]
  o- portals .......................................................................................................... [Portals: 1]
    o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...fdacaeb7/tpg1> cd portals/
/iscsi/iqn.20.../tpg1/portals> create 192.168.10.1
Using default IP port 3260
Could not create NetworkPortal in configFS
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> create 192.168.10.1
Using default IP port 3260
Created network portal 192.168.10.1: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- alua ............................................................................ [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ................................................ [ALUA state: Active/optimized]
  | 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.localhost.x8664:sn.3820fdacaeb7 ................................ [TPGs: 1]
  |   o- tpg1 ........................................................................ [no-gen-acls, no-auth]
  |     o- acls ................................................................................... [ACLs: 1]
  |     | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client ............ [Mapped LUNs: 1]
  |     |   o- mapped_lun0 .......................................................... [lun0 block/disk0 (rw)]
  |     o- luns ................................................................................... [LUNs: 1]
  |     | o- lun0 ............................................... [block/disk0 (/dev/md0) (default_tg_pt_gp)]
  |     o- portals ............................................................................. [Portals: 1]
  |       o- 192.168.10.1:3260 ......................................................................... [OK]
  o- loopback .................................................................................. [Targets: 0]

 

/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@localhost ~]# systemctl restart targetd
[root@localhost ~]# firewall-cmd --permanent --add-port=3260/tcp
success
[root@localhost ~]# firewall-cmd --reload
success

iSCSI 服務端的配置至此全部完成。

17.4 配置 Linux 客戶端

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


[root@localhost ~]# yum install iscsi-initiator-utils

前面講到,iSCSI 協議是通過客戶端的名稱來進行驗證,而該名稱也是 iSCSI 客戶端的唯
一標識,而且必須與服務端配置檔案中訪問控制列表中的資訊一致,否則客戶端在嘗試訪問
儲存共享裝置時,系統會彈出驗證失敗的儲存資訊。
下面我們編輯 iSCSI 客戶端中的 initiator 名稱檔案,把服務端的訪問控制列表名稱填寫
進來,然後重啟客戶端 iscsid 服務程式並將其加入到開機啟動項中:

[root@localhost ~]# vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7:client

"/etc/iscsi/initiatorname.iscsi" 1L, 81C written
[root@localhost ~]# 
[root@localhost ~]# systemctl restart iscsid
[root@localhost ~]# systemctl enable iscsid
Created symlink from /etc/systemd/system/multi-user.target.wants/iscsid.service to /usr/lib/systemd/system/iscsid.service.
[root@localhost ~]# 

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

[root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.10.1
192.168.10.1:3260,1 iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7

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

[root@localhost ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7 -p 192.168.10.1 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7, portal: 192.168.10.1,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.3820fdacaeb7, portal: 192.168.10.1,3260] successful.
[root@localhost ~]# 

在 iSCSI 客戶端成功登入之後,會在客戶端主機上多出一塊名為/dev/sdb 的裝置檔案。第
6 章曾經講過,udev 服務在命名硬碟名稱時,與硬碟插槽是沒有關係的。接下來可以像使用
本地主機上的硬碟那樣來操作這個裝置檔案了。

[root@localhost ~]# file /dev/sdb
/dev/sdb: block special
[root@localhost ~]# 

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

[root@localhost ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
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@localhost ~]# mkdir /iscsi
[root@localhost ~]# mount /dev/sdb /iscsi
[root@localhost ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   17G  4.0G   14G   24% /
devtmpfs                 473M     0  473M    0% /dev
tmpfs                    489M     0  489M    0% /dev/shm
tmpfs                    489M  7.2M  481M    2% /run
tmpfs                    489M     0  489M    0% /sys/fs/cgroup
/dev/sda1               1014M  161M  854M   16% /boot
tmpfs                     98M  4.0K   98M    1% /run/user/42
tmpfs                     98M   32K   98M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb                  40G   33M   40G    1% /iscsi

從此以後,這個裝置檔案就如同是客戶端本機主機上的硬碟那樣工作。需要提醒大家的
是,由於 udev 服務是按照系統識別硬碟裝置的順序來命名硬碟裝置的,當客戶端主機同時使
用多個遠端儲存資源時,如果下一次識別遠端裝置的順序發生了變化,則客戶端掛載目錄中
的檔案也將隨之混亂。為了防止發生這樣的問題,我們應該在/etc/fstab 配置檔案中使用裝置
的 UUID 唯一識別符號進行掛載,這樣,不論遠端裝置資源的識別順序再怎麼變化,系統也能
正確找到裝置所對應的目錄。
blkid 命令用於檢視裝置的名稱、檔案系統及 UUID。可以使用管道符(詳見第 3 章)進
行過濾,只顯示與/dev/sdb 裝置相關的資訊:

[root@localhost ~]# blkid | grep /dev/sdb
/dev/sdb: UUID="7335f852-5cbd-4151-a94b-65809259527b" TYPE="xfs" 

劉遄老師還要再囉嗦一句,由於/dev/sdb 是一塊網路儲存裝置,而 iSCSI 協議是基於
TCP/IP 網路傳輸資料的,因此必須在/etc/fstab 配置檔案中新增上_netdev 引數,表示當系統聯
網後再進行掛載操作,以免系統開機時間過長或開機失敗:

[root@localhost ~]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Oct 28 13:24:17 2018
#
# 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/centos-root /                       xfs     defaults        0 0
UUID=dde3c368-3fb5-4679-b2e4-3775d623b240 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=7335f852-5cbd-4151-a94b-65809259527b /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 地址。

主機名稱 作業系統 IP地址
ISCSI伺服器 centos7 192.168.10.1
Windows系統客戶端 windows 7 192.168.10.10

 

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

第2步:掃描發現 iSCSI 服務端上可用的儲存資源。不論是 Windows 系統還是 Linux 系
統,要想使用 iSCSI 共享儲存資源都必須先進行掃描發現操作。執行 iSCSI 發起程式後在“目
標”選項卡的“目標”文字框中寫入 iSCSI 服務端的 IP 地址,然後單擊“快速連線”按鈕,
如圖 17-5 所示。
在彈出的“快速連線”提示框中可看到共享的硬碟儲存資源,單擊“完成”按鈕即可,
如圖 17-6 所示。

 

 目標換成192.168.10.1

 

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

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

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

第4步:

訪問 iSCSI 遠端共享儲存資源。右鍵單擊桌面上的“計算機”圖示,開啟計算
機管理程式,如圖 17-10 所示。

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

 

相關文章