1. 程式人生 > >IP-SAN客戶端配置及使用

IP-SAN客戶端配置及使用

做ISCSI發起程式我們分為一下幾個步驟

將網絡卡設定為靜態IP地址配置YUM軟體倉庫新增4塊硬碟建立RAID磁碟陣列和備份盤配置ISCSI服務端

在虛擬機器中新增4塊新硬碟,用於建立RAID 5磁碟陣列和備份盤

執行fdisk-l命令檢視一下硬碟是否新增成功

[[email protected] ~]# fdisk -l
	Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
	Units = sectors of 1 * 512 = 512 bytes
	Sector size (logical/physical): 512 bytes /
512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000b6f38 Device Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 41943039 20458496 8e Linux LVM Disk /dev/sde: 21.5
GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical)
: 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/rhel_linuxprobe-swap: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/rhel_linuxprobe-root: 18.8 GB, 18798870528 bytes, 36716544 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes

建立RAID磁碟陣列

        啟動虛擬機器系統,使用mdadm命令建立RAID磁碟陣列。其中,-Cv引數為建立陣列並顯示過程,/dev/md0為生成的陣列組名稱,-n 3引數為建立RAID 5磁碟陣列所需的硬碟個數,-l 5引數為RAID磁碟陣列的級別,-x 1引數為磁碟陣列的備份盤個數。在命令後面要逐一寫上使用的硬碟名稱。

    [[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 : Sat Nov 10 16:14:34 2018
         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 : Sat Nov 10 16:15:15 2018
              State : clean, degraded, recovering 
     Active Devices : 2
    Working Devices : 4
     Failed Devices : 0
      Spare Devices : 2
    
             Layout : left-symmetric
         Chunk Size : 512K
    
     Rebuild Status : 22% complete
    
               Name : linuxprobe:0  (local to host linuxprobe)
               UUID : 98f05f16:dac9c7d1:e3f34bae:827c568a
             Events : 4
    
        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      spare rebuilding   /dev/sdd
    
           3       8       64        -      spare   /dev/sde
           

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

[[email protected] ~]# yum install targetd targetctl
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的儲存裝置。

配置ISCSI服務端

[[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> create
Created target iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.f04223f71aa6.
Created TPG 1.
/iscsi> cd iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.f04223f71aa6/
/iscsi/iqn.20....f04223f71aa6> ls
o- iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.f04223f71aa6 ...... [TPGs: 1]
  o- tpg1 ............................................... [no-gen-acls, no-auth]
    o- acls .......................................................... [ACLs: 0]
    o- luns .......................................................... [LUNs: 0]
    o- portals .................................................... [Portals: 0]
/iscsi/iqn.20....f04223f71aa6> cd tpg1/luns 
/iscsi/iqn.20...aa6/tpg1/luns> create /backstores/block/disk0 
Created LUN 0.

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

/iscsi/iqn.20...aa6/tpg1/luns> cd ..
/iscsi/iqn.20...23f71aa6/tpg1> cd acls
/iscsi/iqn.20...aa6/tpg1/acls> create iqn.2003-01.org.linux-iscsi.
linuxprobe.x8664:sn.f04223f71aa6:client
Created Node ACL for iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.
f04223f71aa6:client
Created mapped LUN 0.

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

	/iscsi/iqn.20...aa6/tpg1/acls> cd ..
	/iscsi/iqn.20...23f71aa6/tpg1> cd portals
	/iscsi/iqn.20.../tpg1/portals> create 192.168.126.100
	Using default IP port 3260
	Created network portal 192.168.126.100:3260.

        第6步:配置妥當後檢查配置資訊,重啟iSCSI服務端程式並配置防火牆策略。在引數檔案配置妥當後,可以瀏覽剛剛配置的資訊,確保與下面的資訊基本一致。在確認資訊無誤後輸入exit命令來退出配置。注意,千萬不要習慣性地按Ctrl + C組合鍵結束程序,這樣不會儲存配置檔案,我們的工作也就白費了。最後重啟iSCSI服務端程式,再設定firewalld防火牆策略,使其放行3260/tcp埠號的流量。

/iscsi/iqn.20.../tpg1/portals> ls /
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o