1. 程式人生 > >Multipath多路徑

Multipath多路徑

前言:

最近整理一些以前的學習筆記。
過去都是儲存在本地,此次傳到網路留待備用。\


 

Multipath多路徑

  • 軟體: device-mapper-multipath
  • 配置檔案: /etc/multipath.conf

1.多路徑概述

  • 當伺服器到某一儲存裝置有多條路徑時,每條路徑都會識別為一個單獨的裝置;
  • 多路徑允許您將伺服器節點和儲存陣列間的多個I/O路徑配置為一個單一裝置;
  • 這些I/O路徑是可包含獨立電纜、交換機和控制器的實體SAN連結;
  • 多路徑集合了I/O路徑,並生成由這些集合路徑組成的新裝置;

 

2.多路徑主要功能

  • 冗餘
    • 主備模式,高可用
  • 改進的效能
    • 主主模式,負載均衡

 

3.多路徑特點

  • 防止單線故障
  • 多條線路使用相同的 共享儲存
  • 依靠wwid(全球識別符)辨認,減少管理混亂

 

Multipath多路徑例項

  • 拓撲: 利用iscsi實現多路徑

  • 關閉selinux與防火牆

    	]# systemctl stop firewalld ; systemctl disable firewalld
    	]# setenforce 0 ; sed -i "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config
    

一、iscsi服務端:

1.準備共享介質(分割槽、LV或磁碟映象)

]# lsblk /dev/vdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb  252:16   0  20G  0 disk

2.安裝targetcli(7)|scsi-target-utils(6)

]# yum -y install targetcli

3.配置target

]# targetcli
/> backstores/block create storage /dev/vdb                         #建立後端儲存
/> iscsi/ create iqn.2222-11.com.example:server                     #建立iqn
/> iscsi/iqn.2222-11.com.example:server/tpg1/luns create /backstores/block/storage      #繫結iqn與儲存
/> iscsi/iqn.2222-11.com.example:server/tpg1/acls create iqn.2222-11.com.exampl:client  #設定acl
/> saveconfig       #儲存配置
/> exit             #退出

4.啟動target服務

]# systemctl restart target ; systemctl enable target

 

二、iscsi客戶端:

1.安裝客戶端軟體

]# yum -y install iscsi-initiator-utils

2.客戶端訪問共享儲存

  • 因為到達共享儲存有兩條路徑,所以需要在兩條路徑上都執行發現命令
    ]# iscsiadm  --mode discovery  --type sendtargets  --portal 192.168.1.20  --discover
    ]# iscsiadm  -m discovery  -t st  -p 192.168.2.20  --discover
    
  • 設定開機自啟
    ]# systemctl enable iscsi
    ]# systemctl enable iscsid
    

3.多路徑裝置

  • 若沒有 DM Multipath,從伺服器節點到儲存控制器的每一條路徑都會被系統視為獨立的裝置,即使I/O路徑連線的是相同的伺服器節點到相同的儲存控制器也是如此;
  • DM Multipath提供了有邏輯的管理I/O路徑的方法,即在基礎裝置頂端生成單一多路徑裝置

4.多路徑配置(客戶端)

  • 安裝軟體包

    ]# yum -y install device-mapper-multipath
    
  • 使用mpathconf命令建立配置檔案並啟用多路徑

    ]# mpathconf  --user_friendly_names n       #不使用系統自動友好命名,而是使用自定義命令
    
  • 若無需編輯該配置檔案,可使用此命令啟動多路徑守護程序

5.多路徑裝置識別符

  • 每個多路徑裝置都有一個WWID(全球識別符),他是全球唯一的、無法更改的號碼
  • 預設情況下會將多路徑裝置的名稱設定為它的WWID
  • 可以在多路徑配置檔案中設定user_friendly_names選項,該選項可將別名設為mpathn格式的節點唯一名稱,
  • 也可以自定義儲存裝置名稱

6.獲取WWID(客戶端)

  • 假如共享儲存在本地被識別為/dev/sdb和/dev/sdc,那麼獲取它的WWID方法是: ]# /lib/udev/scsi_id --whitelisted --device=/dev/sdb ]# /lib/udev/scsi_id --whitelisted --device=/dev/sdc
  • 因為兩個裝置雖然名稱不一樣,但是實際上是一個裝置,所以他們的WWID是相同的

7.指定獲取WWID(全球唯一標識)的方法

  • 在配置檔案中宣告獲取WWID的方法
    ]# vim /etc/multipath.conf
    ...
    defaults {
        user_friendly_names no
        getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"   #centos7可不寫,保持預設
    }
    

8.為多路徑裝置配置別名

  • 根據得到WWID,為多路徑裝置配置別名
    ]# vim /etc/multipath.conf
    #//在尾部新增以下內容:
    multipaths {
        multipath {
            wwid    "裝置的wwid值"
            alias   "自定義裝置別名"
        }
    }
    

9.啟動服務並驗證

  • 啟動服務
    ]# systemctl start multipathd
    ]# systemctl enable multipathd
    
  • 驗證
    ]# ls /dev/mapper        #mpatha即為多路徑裝置
    ]# multipath -rr         #重新載入多路徑資訊
    ]# multipath -ll         #檢視多路徑資訊
    

10.本地使用

  • 分割槽
    • 為/dev/mapper/mpatha分割槽,得到的第一個分割槽名為/dev/mapper/mpathap1
  • 格式化
    ]# mkfs.ext3 /dev/mapper/分割槽
    ]# blkid /dev/mapper/分割槽
    /dev/mapper/分割槽: UUID="2492b8c4-efd5-488f-ba13-a77b61b544fe" SEC_TYPE="ext2" TYPE="ext3"
    ·掛載
    ]# mount /dev/mapper/分割槽 /var/www/html/
    
  • 測試
    ]# echo $HOSTNAME > /var/www/html/a.html    #編輯測試檔案
    ]# systemctl restart httpd
    ]# ifdown eth2                              #dwon一條線路
    訪問測試檔案