架設 HA 高可用性:MySQL DRBD + Heartbeat – 用 dd 來建立虛擬硬碟

2016-08-02 CentOS, MySQL

在前一篇寫到 架設 HA 高可用性:MySQL DRBD + Heartbeat – 兩台式架構 HA (Master/Slave),結果馬上就遇到一些特殊環境必須採用一些特殊的調整

 

在本文遇到的狀況是因為無法避免的因素無法切割一個 /dev/sdb1 的硬碟分割區出來,而在一開始安裝系統的時候又把所有的空間全部給了根目錄

$ df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       916G  2.0G  868G   1% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sda1       248M   64M  173M  27% /boot

 

如果要壓縮磁區在切新的磁區出來的話,又必須 umount,因為環境不允許這個狀況,絞盡腦汁只好改用 dd 來建立虛擬硬碟取代所需要的資源池磁區

 

**這個方法並不是很好的解決方案,因為使用 dd 所建立的虛擬硬碟會大大降低 I/O 效能,若非狀況特殊請使用實體硬碟磁區

 

由於 DRBD 所需要的磁區類型是 block device,所以不能單單僅使用 dd 來建立 image 掛載,還要使用 mknod 和 losetup 這兩個工具來建立

 

用 dd 來產生 block device

Step.1 建立一個 100GB 的虛擬硬碟

$ dd if=/dev/zero of=/drbd/drbd.img bs=1M count=102400

 

Step.2 使用 mknod 這個工具建立一個 block device

$ mknod /dev/drbd255 b 7 255

#確認建立完成
$ ls -l /dev/drbd255
brw-r--r-- 1 root root 7, 255 Jul 26 18:12 /dev/drbd255

建立一個 /dev/drbd255 的設備,b 是 create block (buffered) special file,而 7 , 255 則代表設備號是有意義的,可以參考 devices.txt

 

Step.3 再使用 losetup 將建立好的 img 掛載到 /dev/drbd255

$ losetup /dev/drbd255 /drbd/drbd.img

# 確認是否掛載成功
$ losetup -a
/dev/loop255: [0803]:46661635 (/drbd/drbd.img)

 

這樣就完成建立一個 block device 可以給 DRBD 使用!

 

但是還沒完成!這個動作在重開機的時候並不會替我們自動掛載上去,可能你會想說可以寫在 rc.local 啊!!

這是錯的!重溫一下 Linux 的開機流程分析 可以知道當你設定 DRBD 為開機啟動(chkconfig)的時候,你的 rc.local 根本還沒有掛載!因為 rc.local 是在所有開機程序結束後才執行的最後一個工作,所以乾脆就直接修改一下 DRBD 的 init service,讓他啟動服務的時候就一並掛載我們設定的 block device。

 

$ vim /etc/init.d/drbd

#!/bin/bash
VIRTUALDISK="/dev/drbd255"
VIRTUALIMG="/drbd/drbd.img"

.... skip

case "$1" in
 start)
 if [[ ! -b $VIRTUALDISK ]]; then
   echo "mount block "$VIRTUALDISK" from $VIRTUALIMG"
   mknod $VIRTUALDISK b 7 255
   losetup $VIRTUALDISK $VIRTUALIMG
 fi

.... skip

 run_hook stop
 [ -f /var/lock/subsys/drbd ] && rm /var/lock/subsys/drbd
 log_end_msg 0
 
 if [[ -b $VIRTUALDISK ]]; then
   echo "umount $VIRTUALDISK"
   losetup -d $VIRTUALDISK
   rm -f $VIRTUALDISK
 fi
 ;;

如果覺得麻煩可以直接下載改好的檔案 drbd

 

測試啟動服務,必須要自動掛載上 image,而停用反之。

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱