如何讓 OpenVZ 下的虛擬機使用到整顆硬碟

玩了幾天的  Proxmox VE 後 , 要開始建立我的 NAS 了

我的 Server 中其實有三顆硬碟 , 第一顆 160G 是安裝 Proxmox VE , 有兩個 500G 用主機板的 RAID BIOS 建立磁碟陣列 , 因此我要再建立一個 OpenVZ 出來當作 NAS Server

而基本上 OpenVZ 建立的虛擬機 , 是沒有辦法使用實體硬碟的 , 而且 Proxmx VE 預設是不會偵測 Fake RAID(主機板的假 RAID) , 因此只好手動來做了

首先要先解決 Proxmox VE 沒偵測到我的硬碟的問題 , 我的主機板的晶片是 ICH9R 的 , Linux Kernel 2.6.24 是有支援的 , 但因為 Proxmox VE 沒有安裝 dmraid 這個套件 , 所以就沒偵測到 , 因此我就在 proxmox  下用以下列指令來來建立我的磁碟陣列裝置

apt-get install dmraid
dmraid -ay

如果安裝了 dmraid 套件後並且啟用之後會發現 /dev/mapper/ 下多了個 isw_ecfbfjiafh_Volume0 這類的裝置 , 那代表磁碟陣列裝置有抓到了 , 接下來就是要讓 NAS Server 能夠用這個磁碟陣列

由於 OpenVZ 沒辦法直接使用硬碟 , 因此要先用 proxmox 去 mount 實體硬碟之後 , 然後用 mount --bind 的方式讓 NAS Server 使用 , 我就先假定  proxmox 下的 /mnt/nas 是我要去 mount 實體硬碟的目錄 , 而 /mnt/nas 將會用 mount --bind 去對應到編號 102 虛擬機的 /data 目錄 , 作法如下

  • 先對硬碟做分割及 format 動作 , 做完之後 , 應該 /dev/mapper 下又多出了分割的裝置 , 例如我就整顆硬碟 format 成 ext3 , 在 /dev/mapper 下就多了個 isw_ecfbfjiafh_Volume01 裝置檔
  • 然後將裝置檔 mount , 例如 mount -t ext3 /mnt/nas  , 當然若寫在 /etc/fstab 也可以 , 這樣開機就自動 mount 了
  • 在虛擬機下的目錄建立 data 目錄 , mkdir /var/lib/vz/root/102/data
  • 執行 mount --bind /mnt/nas /var/lib/vz/root/102/data

弄好之後 , 進入 NAS Server 的環境下 df 指令 , 應該會變成下面的樣子

[root@nas /]# df
檔案系統               1K-區段      已用     可用 已用% 掛載點
simfs                  8388608    605620   7782988   8% /
/dev/mapper/isw_ecfbfjiafh_Volume01
                     480696480  13211584 443066100   3% /data
none                   4081288         4   4081284   1% /dev

這樣該 NAS Server 就可以完全存取這整顆硬碟了 , 當然以上所說的是手動方式 , 若要讓虛擬機啟動時候自動 mount , 則必須撰寫 /etc/vz/conf/102.mount 及 /etc/vz/conf/102.umout 兩個 shell , 讓虛擬機在啟動或停止時自動 mount 及 umount
 , 撰寫前 , 要先確定 NAS Server 這個虛擬機是否在 stopped 狀態 , 一定要是這狀態 , 不然會 mount 不起來

102.mount 內容如下

#!/bin/bash
source /etc/vz/vz.conf
source ${VE_CONFFILE}
mount --bind /mnt/nas ${VE_ROOT}/data

102.umount 內容如下

#!/bin/bash
source /etc/vz/vz.conf
source ${VE_CONFFILE}
umount ${VE_ROOT}/data

當寫好這兩個檔案後 , 權限要設定為可執行(chmod +x) , 然後就可以重開虛擬機了 , 以上關於 OpenVZ 掛載實體硬碟的資料是參考下面原文說明來做修改的

http://wiki.openvz.org/Bind_mounts

發佈留言