2017年3月25日 星期六

在 CentOS7/RHEL7 上,學習架設 High-Availability 服務(十二)

學習目標:
  • 用 LVM 架 GFS 檔案系統!
  • Cluster 上的 LVM 架構:HA-LVM 與 Clustered LVM!
    • HA-LVM:vg 與其上的 lv,一次只給一個節點使用!
      • 設定方式一:使用 LVM 標籤
      • 設定方式二:使用 clustered LVM daemon , clvmd
    • Clustered LVM:在分享的儲存設備中,所有的vg 與 lv 均可給所有節點使用!
  • 重點提示:
    • LVM 觀念與多重路徑概念整合
    • LVM 設定檔:/etc/lvm/lvm.conf
    • LVM 架構查詢指令:vgcfgrestore
    • LVM 架構參數改變後,需要執行指令:lvchange
操作流程:練習(一)
  1. 在 nodea 上,切割兩個分割區,練習 LVM 基本操作:
    [root@nodea ~]# fdisk /dev/vdb
    [root@nodea ~]# partprobe
    [root@nodea ~]# pvcreate /dev/vdb2 /dev/vdb3
    [root@nodea ~]# vgcreate vgsrv /dev/vdb2 /dev/vdb3
    [root@nodea ~]# vgs
      VG    #PV #LV #SN Attr   VSize VFree
      vgsrv   2   0   0 wz--n- 3.99g 3.99g
    
  2. 在 vgsrv 上,切割一個 LV 分割區:
    [root@nodea ~]# lvcreate -n resizeme -L 2G vgsrv
    
  3. 在 resizeme 上,建立 xfs 檔案系統:
    [root@nodea ~]# mkfs -t xfs /dev/vgsrv/resizeme
    
  4. 將新建立的 xfs 檔案系統,掛載在 /mnt 目錄下:
    [root@nodea ~]# mount /dev/vgsrv/resizeme /mnt
    [root@nodea ~]# touch /mnt/file{0..9}
    
  5. 缷載 /mnt 目錄:
    [root@nodea ~]# umount /mnt
    
  6. 縮減 resizeme 大小至 1G:
    [root@nodea ~]# lvresize -L 1G /dev/vgsrv/resizeme
    [root@nodea ~]# mount /dev/vgsrv/resizeme /mnt  --> 發現不能掛載
    
  7. 檢查 vgsrv 架構:
    [root@nodea ~]# vgcfgrestore -l vgsrv
    :(略)
    :
    File:  /etc/lvm/archive/vgsrv_00002-1891440157.vg
      VG name:     vgsrv
      Description: Created *before* executing 'lvresize -L 1G /dev/vgsrv/resizeme'
      Backup Time: Fri Mar 24 18:50:14 2017
    :
    :(略)
    
  8. 回復到縮減前的狀態:
    [root@nodea ~]# vgcfgrestore -f /etc/lvm/archive/vgsrv_00002-1891440157.vg vgsrv
    
  9. 進行回復後的更新動作:
    [root@nodea ~]# lvchange -an /dev/vgsrv/resizeme 
    [root@nodea ~]# lvchange -ay /dev/vgsrv/resizeme 
    
  10. 重新掛載 /mnt 目錄:
    [root@nodea ~]# mount /dev/vgsrv/resizeme /mnt
    [root@nodea ~]# ls -al /mnt
    
  11. 再次缷載 /mnt 目錄,並移除 resizeme :
    [root@nodea ~]# umount /mnt
    [root@nodea ~]# lvremove /dev/vgsrv/resizeme
    
操作流程:練習(二),使用HA-LVM
  1. 在 nodea 上,將多重路徑上的硬碟設備,做成 LVM 檔案系統 :
    [root@nodea ~]# pvcreate /dev/mapper/mpatha
    [root@nodea ~]# vgcreate clustervg /dev/mapper/mpatha
    [root@nodea ~]# lvcreate -L 1G -n clusterlv clustervg
    [root@nodea ~]# mkfs -t xfs /dev/clustervg/clusterlv
    
  2. 在所有節點上,編寫 lvm 設定檔內容:
    [root@nodea ~]# vim /etc/lvm/lvm.conf
    locking_type = 1
    volume_list = []  --> 表示本地端的LVM不分享!
    
  3. 在所有節點上,重新設定 initramfs 檔案:
    [root@nodea ~]# dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r); reboot
    
  4. 在所有節點上,查詢 cluster 服務運作是否正常:
    [root@nodea ~]# pcs status
    
  5. 在 nodea 節點上,建立 LVM 資源:
    [root@nodea ~]# pcs resource create halvm LVM volgrpname=clustervg exclusive=true --group halvmfs
    [root@nodea ~]# pcs resource create xfsfs Filesystem device="/dev/clustervg/clusterlv" directory="/mnt" fstype="xfs" --group halvmfs
    [root@nodea ~]# pcs status
    [root@nodea ~]# lvs
    [root@nodea ~]# mount | grep clusterlv
    
  6. 在 nodea 節點上,測試 HA-LVM 功能:
    [root@nodea ~]# pcs cluster standby nodea.example.com
    [root@nodea ~]# pcs status
    [root@nodea ~]# pcs cluster unstandby nodea.example.com
    :
    (到各節點查詢,LVM被掛載到哪個節點上)
    
操作流程:練習(二),使用 Clustered LVM 方式
  1. 在各節點上,安裝 dlm 及 lvm2-cluster 套件:
    [root@nodea ~]# yum -y install dlm  lvm2-cluster
    [root@nodea ~]# lvmconf --enable-cluster
    
  2. 在各節點上,先暫停 lvm2-lvmetad 服務的運作,以利修改設定檔:
    [root@nodea /]# systemctl stop lvm2-lvmetad
    
  3. 在 nodea 節點上,新增使用 controld 資源代管的 dlm 資源:
    [root@nodea ~]# pcs resource create dlm controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true
    
  4. 在 nodea 節點上,新增使用 clvm 資源代管的 clvmd 資源:
    [root@nodea ~]# pcs resource create clvmd clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true
    
  5. 在 nodea 節點上,設定啟用條件順序,讓 dlm 資源早於 clvmd 資源啟用,並且只能用於同一節點上:
    [root@nodea ~]# pcs constraint order start dlm-clone then clvmd-clone
    [root@nodea ~]# pcs constraint colocation add clvmd-clone with dlm-clone
    
  6. 在 nodea 節點上,建立 LVM 檔案系統:
    [root@nodea ~]# pvcreate /dev/mapper/mpatha
    [root@nodea ~]# vgcreate myvg /dev/mapper/mpatha
    [root@nodea ~]# lvcreate -L 1G -n mylv myvg