multipath多路徑實驗01-構建iSCSI模擬環境


multipath多路徑實驗01-構建iSCSI模擬環境

前幾天跟同事網上閑聊技術,吐槽之前自己沒有配置過多路徑的經歷,雖然多路徑的配置過程很簡單,職責划分也應是主機或存儲工程師來搞定,DBA只需要直接拿來用,但這樣總感覺少了些踏實感。
本着學習的心態,在虛擬環境下模擬,來做一個多路徑的實驗。
本文主要描述使用iscsi模擬存儲划出的1個LUN,最終由兩條鏈路連接到主機,顯示為兩個磁盤的場景。為后續配置multipath提供前置環境。

1.模擬主機環境

首先虛擬一個linux服務器,用作搭建iSCSI服務器。然后客戶端直接就使用我之前的一套RAC環境的第1個節點,在這里就相當於普普通通的一個iSCSI客戶端。

要求如下:
客戶端(192.168.56.150),需要新增配置兩塊網卡;
服務端(192.168.56.99),需要新增配置兩塊網卡.

這里實際使用Virtual Box給每台機器新增兩個內部網絡即可。

客戶端配置2塊網卡:

--復制現有網卡配置
[root@jyrac1 network-scripts]# cat ifcfg-eth3
DEVICE=eth3
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.11
NETMASK=255.255.255.0
[root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth4
[root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth5

--修改DEVICE名稱和IPADDR信息,其他不變
eth4 10.10.1.150
eth5 10.10.2.150

--啟動新配置的兩塊網卡
ifup eth4
ifup eth5

這里的eth4和eth5可以想象成是和存儲連接的內部網絡。

服務端配置2塊網卡:

--復制現有網卡配置
[root@Storage network-scripts]# cat ifcfg-eth2 
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.56.99
NETMASK=255.255.255.0
[root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth3
[root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth4

--修改DEVICE名稱和IPADDR信息,其他不變
eth3 10.10.1.99
eth4 10.10.2.99

--啟動新配置的兩塊網卡
ifup eth3
ifup eth4

測試服務端和客戶端的IP互通沒問題。

2.准備軟件環境

各自安裝scsi相關的軟件包。

引用鳥哥的iSCSI搭建說明:

scsi-target-utils:用來將 Linux 系統模擬成為 iSCSI target 的功能;
iscsi-initiator-utils:掛載來自 target 的磁碟到 Linux 本機上。

這樣我們就知道服務端需要安裝scsi-target-utils這個包,客戶端需要安裝iscsi-initiator-utils這個包。
現在來直接yum安裝對應軟件,如果yum本地源配置有問題,可以參考之前文章:
配置yum本地源:http://www.cnblogs.com/jyzhao/p/3938290.html

--服務端
yum安裝scsi-target-utils

yum install scsi-target-utils

--客戶端
yum安裝iscsi-initiator-utils

yum install iscsi-initiator-utils

3.模擬存儲加盤

--服務端操作

填加一個50G的盤,實際就是用來模擬存儲新增實際的一塊盤。我這里選擇固定大小存儲50G。
我這里新增加的盤顯示為/dev/sdb,我將它創建成lvm,並先分出一個10g的lv,供后續使用。

[root@Storage ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
[root@Storage ~]# vgcreate vg_storage /dev/sdb
  Volume group "vg_storage" successfully created
[root@Storage ~]# lvcreate -L 10g -n lv_lun1 vg_storage
  Logical volume "lv_lun1" created

lvm的信息:

[root@Storage ~]# pvs
  PV         VG           Fmt  Attr PSize  PFree 
  /dev/sda2  vg_linuxbase lvm2 a--  29.51g     0 
  /dev/sdb   vg_storage   lvm2 a--  50.00g 40.00g
[root@Storage ~]# vgs
  VG           #PV #LV #SN Attr   VSize  VFree 
  vg_linuxbase   1   2   0 wz--n- 29.51g     0 
  vg_storage     1   1   0 wz--n- 50.00g 40.00g
[root@Storage ~]# lvs
  LV      VG           Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root vg_linuxbase -wi-ao---- 27.54g                                             
  lv_swap vg_linuxbase -wi-ao----  1.97g                                             
  lv_lun1 vg_storage   -wi-a----- 10.00g         
[root@Storage ~]# lvscan
  ACTIVE            '/dev/vg_storage/lv_lun1' [10.00 GiB] inherit
  ACTIVE            '/dev/vg_linuxbase/lv_root' [27.54 GiB] inherit
  ACTIVE            '/dev/vg_linuxbase/lv_swap' [1.97 GiB] inherit

從上面LVM相關信息的輸出可以看到,我這里新建的lv已經是正常狀態,可以理解成為模擬存儲上划分出的一個10g大小的LUN

4.配置iSCSI服務端

iSCSI服務端主要配置文件:/etc/tgt/targets.conf

iSCSI 有一套自己分享 target 檔名的定義,基本上,藉由 iSCSI 分享出來的 target 檔名都是以 iqn 為開頭,意思是:『iSCSI Qualified Name (iSCSI 合格名稱)』的意思(註5)。那麼在 iqn 後面要接啥檔名呢?通常是這樣的:
iqn.yyyy-mm. :identifier
iqn.年年-月.單位網域名的反轉寫法 :這個分享的target名稱

所以我這里按照規范設置的名稱,添加好如下配置:

<target iqn.2017-07.com.cnblogs.jyzhao:alfreddisk>
    backing-store /dev/vg_storage/lv_lun1 # Becomes LUN 1
</target>

配置完成后,就啟動服務和設置開機自啟動:

[root@Storage ~]# service tgtd start
Starting SCSI target daemon: [  OK  ]
[root@Storage ~]# chkconfig tgtd on
[root@Storage ~]# chkconfig --list|grep tgtd
tgtd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@Storage ~]# service tgtd status
tgtd (pid 1763 1760) is running...

然后查詢下相關的信息,比如占用的端口、LUN信息(Type:disk):

[root@Storage ~]# netstat -tlunp |grep tgt
tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      1760/tgtd           
tcp        0      0 :::3260                     :::*                        LISTEN      1760/tgtd           

[root@Storage ~]# tgt-admin --show
Target 1: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 10737 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/vg_storage/lv_lun1
            Backing store flags: 
    Account information:
    ACL information:
        ALL

5.配置iSCSI客戶端

確認開機啟動項設置開啟:
[root@jyrac1 ~]#  chkconfig --list|grep scsi
iscsi           0:off   1:off   2:off   3:on    4:on    5:on    6:off
iscsid          0:off   1:off   2:off   3:on    4:on    5:on    6:off

使用iscsiadm命令掃描服務端的LUN

iscsiadm -m discovery -t sendtargets -p 10.10.1.99

--報錯
[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.99
[  OK  ] iscsid: [  OK  ]
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: connection login retries (reopen_max) 5 exceeded
iscsiadm: Could not perform SendTargets discovery: encountered connection failure
[root@jyrac1 ~]# 
--ping可以通
[root@jyrac1 ~]# ping 10.10.1.99
PING 10.10.1.99 (10.10.1.99) 56(84) bytes of data.
64 bytes from 10.10.1.99: icmp_seq=1 ttl=64 time=0.789 ms
64 bytes from 10.10.1.99: icmp_seq=2 ttl=64 time=0.536 ms
^C
--- 10.10.1.99 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1073ms
rtt min/avg/max/mdev = 0.536/0.662/0.789/0.129 ms

上面這個報錯是因為scsi服務端的主機防火牆沒有關閉,端口受到限制,關閉防火牆后,再嘗試,就可以正常發現如下內容:

[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.99
10.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.2.99
10.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk

查看/var/lib/iscsi/nodes/下的文件:

[root@jyrac1 ~]# ll -R /var/lib/iscsi/nodes/
/var/lib/iscsi/nodes/:
total 4
drw------- 4 root root 4096 Jul 18 12:13 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk

/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk:
total 8
drw------- 2 root root 4096 Jul 18 12:12 10.10.1.99,3260,1
drw------- 2 root root 4096 Jul 18 12:13 10.10.2.99,3260,1

/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.1.99,3260,1:
total 4
-rw------- 1 root root 1822 Jul 18 12:12 default

/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.2.99,3260,1:
total 4
-rw------- 1 root root 1822 Jul 18 12:13 default

查看iscsiadm -m node

[root@jyrac1 ~]# iscsiadm -m node
10.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
10.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk

iscsiadm -m node -T target名稱 --login

iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --login

[root@jyrac1 ~]# iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --login
Logging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] (multiple)
Logging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] (multiple)
Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] successful.
Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] successful.

最后查詢 fdisk -l結果:

省略之前無關內容...

Disk /dev/sdi: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdj: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

發現通過兩條鏈路(10.10.1.*和10.10.2.*),已經正常識別到兩個大小為10G的磁盤,而實際上這兩個磁盤對應到存儲上的一個底層LUN
這其實就是多路徑。后續我會再根據這個環境測試multipath(Linux自帶的多路徑軟件)的使用。
重啟主機測試,這兩個磁盤信息依然存在,說明iSCSI的配置沒有問題。

Reference

- http://linux.vbird.org/linux_server/0460iscsi.php


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM