OpenVZ掛載NFS的虛擬機器設定 / OpenVZ container configuration to mount NFS
如果要讓OpenVZ架設的Linux虛擬機器掛載NFS(Network File System),Host端必須先設定虛擬機器(container)的"nfs:on"。以下介紹詳細作法。
If you want to let OpenVZ container to mount NFS (Network File System), you have to enable "nfs:on" feature on host server first. Following is the details.
不能掛載NFS:mount.nfs: No such device / Mount NFS Error
如果NFS用戶端設定正確(可以參考鳥哥的NFS用戶端設定教學),可是仍出現錯誤訊息:(Debian上的)
mount.nfs: No such device
或是錯誤訊息:(CentOS上的)
mount: wrong fs type, bad option, bad superblock on 10.9.5.95:/raid0/data/_NAS_NFS_Exports_/email-km,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
這時候可能是因為OpenVZ尚未開啟NFS的功能的關係。
包括Proxmox VE在內,大部分OpenVZ虛擬機器(OpenVZ Container)在建立時都沒有開啟NFS的功能。如果要讓虛擬機器本身能夠掛載NFS目錄,請依照以下方法來開啟。
開啟虛擬機器的NFS功能 / Enable Container’s NFS Feature
Step 1. 將虛擬機器關機 / Shutdown Container
要進行設定之前必須先將虛擬機器關機。關機指令為:
# halt
Step 2. 進入Host端命令列 / Enter Host Shell
首先先進入Proxmox VE的網頁管理介面,預設連接埠為8006,必須用https進入。
登入之後,找到該虛擬機器的Host伺服器,進入右上角的「Shell」介面。
Proxmox VE提供了Java Applet連線的主控介面(console),可以在此直接以root身分操作Host端伺服器。
Step 3. 設定"nfs:on" / Setting "nfs:on"
接下來要照OpenVZ的說明設定虛擬機器。該機器的VMID若是101,那麼開啟NFS的指令如下:
vzctl set 101 --features "nfs:on" --save; vzctl start 101
設定完成之後,虛擬機器會一起啟動。
Step 4. 完成掛載設定
這時候再開啟虛擬機器,掛載NFS的時候,指令就能正常執行。
NFS掛載指令與設定 / NFS Mount Configuration
參考鳥哥的Linux私房菜中NFS客戶端的教學,OpenVZ要使用NFS,通常必須先做以下設定:
Step 1. 安裝nfs-common / Install nfs-common
Debian或Ubuntu系列請用apt-get安裝:
apt-get install nfs-common
CentOS或RedHat系列請用yum安裝:
yum install -y nfs*
Step 2. 測試NFS掛載指令 / Test NFS Mount Command
NFS的掛載位置必須參考NFS伺服器的設定。每一台NFS伺服器設定都不一樣,特別是現在各家NAS使用自家作業系統之後,提供的路徑千奇百怪,我在這邊卡了許久,後來升級NAS的韌體才知道NFS掛載路徑。
舉例來說,NFS伺服器設定如下:
- IP網址:10.9.5.95
- NFS的掛載路徑:/raid0/data/_NAS_NFS_Exports_/cluod-rstudio-2013
- 本機的掛載路徑:/tmp/nfs(請預先用mkdir建立好該目錄)
那麼NFS掛載的指令就是:
mount -t nfs 10.9.5.95:/raid0/data/_NAS_NFS_Exports_/cluod-rstudio-2013 /tmp/nfs
試著執行看看。如果沒有任何訊息,那就是順利成功了。
Step 2-1. 錯誤: rpc.statd / Mount Error: rpc.statd
我在CentOS遇到以下錯誤訊息:
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified
那麼就必須先開啟rpcbind,指令為:
service rpcbind start
Step 2-2. 錯誤:mount.nfs: Connection refused / Mount Error: Connection refused
舊版本的CentOS會遇到這個問題。掛載時遇到的錯誤訊息如下:
mount.nfs: Connection refused
這版本的CentOS不是用rpcbind,而是用portmap。所以要先開啟portmap服務:
service portmap start
這樣就能夠正常掛載
Step 3. 開機自動掛載 / NFS Mount On Boot
修改 /etc/rc.local,加入剛剛測試成功的設定:
mount -t nfs 10.9.5.95:/raid0/data/_NAS_NFS_Exports_/cluod-rstudio-2013 /tmp/nfs
或是加上額外設定需要的「service rpcbind start」或「service portmap start」。
這樣就完成了。