本文描述如何在以OpenVZ虛擬機器架設的ownCloud 7.0.1中掛載NFS網路硬碟。文末也提供可掛載NFS的ownCloud 7.0.1版OpenVZ虛擬應用範本供大家下載安裝。
This article show you how to mount NFS in OpenVZ container's ownCloud 7.0.1. I also provided an OpenVZ virtual appliance template with ownCloud version 7.0.1 in this article.
為什麼要整合NAS? / Why ownCloud have to Integrate NAS?
我的ownCloud是以OpenVZ虛擬應用範本架設在Proxmox VE上。為了備份的方便,我傾向於每一臺虛擬機器都只保存應用程式本身,而使用者的資料──特別是像ownCloud這種會讓使用者上傳大量資料的情境,更應該要把虛擬機器跟使用者的資料分開備份。
在此考量下,Proxmox VE給每個虛擬機器的空間並不多,通常我只設8GB。而其他的資料則是透過NFS (Network File System)連線保存在NAS (Network Attached Storage)上,讓NAS的硬碟空間能夠有效利用。
ownCloud掛載NFS教學 / How to Mount NFS in ownCloud
ownCloud在第7版之後,因為調整了目錄權限檢查,所以讓NFS掛載變得很簡單。以下我以ownCloud 7.0.1的OpenVZ虛擬應用範本與FreeNAS提供的NFS為例,描述如何在ownCloud中掛載NFS網路硬碟。
本範例中,ownCloud虛擬機器資訊如下:
FreeNAS的資訊如下:
- IP是192.168.11.75
- 開放了NFS功能,細節請看「開啟FreeNAS的NFS功能」,開放目錄為
/mnt/dlll-cias-nas/owncloud
- 服務連線允許ownCloud虛擬機器連線
- 與ownCloud虛擬機器置於同一個網路中
Step 1. 啟用OpenVZ虛擬機器的NFS設定 / Enable Container’s NFS Configuration
為了讓ownCloud能夠掛載NFS,我們要先修改虛擬機器本身的設定。詳細做法請見「OpenVZ掛載NFS的虛擬機器設定」一文,以下摘錄重點。
- 把虛擬機器關機
- 進入節點的Shell
- 輸入指令: (紅字部分為VMID,請自行換成你虛擬機器的VMID)
# vzctl set 103 –features "nfs:on " --save; vzctl start 103
等待ownCloud虛擬機器開完機之後,再來到ownCloud虛擬機器裡面操作吧。
Step 2. 安裝NFS套件 / Install NFS Tools
以下動作都是在ownCloud本機上的操作。
Trunkey Linux的ownCloud預設並沒有安裝連線NFS所需要的工具,我們必須先用apt-get安裝nfs-common:
# apt-get install -y nfs-common
然後切換到ownCloud的目錄:
# cd /var/www/owncloud
以下操作都在ownCloud目錄底下進行。
Step 3. 存放使用者資料到NAS / Copy Users’ Data To NAS
※ 如果不需要備份使用者資料,這一步驟可以省略。
建立暫存用的資料夾:
# mkdir data.tmp
掛載NFS目錄到暫存資料夾:
# mount -t nfs 192.168.11.75:/mnt/dlll-cias-nas/owncloud /var/www/owncloud/data.tmp
複製data資料到暫存資料夾,表示將資料存到NAS中:
# cp data/* data.tmp
取消暫存資料夾的掛載,然後移除暫存資料夾:
# umount data.tmp; rm -rf data.tmp
接下來就要正式掛載到data資料夾上了。
Step 4. 掛載NFS目錄 / Mount NFS
用mount指令掛載NFS目錄到data上:
# mount -t nfs 192.168.11.75:/mnt/dlll-cias-nas/owncloud /var/www/owncloud/data
產生必要的檔案,並且設定權限:
# touch data/.ocdata
# chown -R www-data:www-data data
特別是產生.ocdata這個檔案。如果缺乏這個動作,ownCloud網頁就會顯示錯誤訊息:
Data directory (/var/www/owncloud/data) is invalid
Please check that the data directory contains a file ".ocdata" in its root.
然後開啟ownCloud網頁界面。如果沒有備份使用者資料的話,原本使用者上傳的資料就會消失,但ownCloud還是可以正常運作。
Step 5. 設定開機自動掛載NFS / Mount NFS When System Start
確認NFS可以正常掛載之後,接下來就是設定開機時自動掛載。
我們以nano編輯器修改開機設定檔案:/etc/rc.local
# nano /etc/rc.local
在exit 0之前加入剛剛的mount指令:
mount -t nfs 192.168.11.75:/mnt/dlll-cias-nas/owncloud /var/www/owncloud/data
存檔離開。
接著我們重新開機來測試是否有順利掛載:
# reboot
重新開機之後,以df指令檢查NFS是否順利掛載:
# df
你可以看到/var/www/owncloud/data已經掛載了NFS網路硬碟。
ownCloud 6備註:需要修改權限檢查功能 / ownCloud 6 Memo: How to Disable Permission Check
如果你是ownCloud第6版,那還要額外修改檢查目錄權限的程式。
由於掛載NFS時,掛載目錄的權限會直接開啟為777。在ownCloud 6當中會限制使用者資料夾data的權限只能為770,這與NFS掛載的限制相衝突。
解決這個衝突的做法是修改ownCloud的使用者目錄權限檢查程式util.php,程式碼的位置是:
/var/www/owncloud/lib/private/util.php
找到「public static function checkDataDirectoryPermissions($dataDirectory)」這一行,然後在「$errors = array();」之後加入「return $errors;」
這樣就能夠略過權限檢查,順利掛載NFS了。
在ownCloud 7中沒有這個問題,可以直接掛載。
ownCloud 7.0.1虛擬應用範本下載 / ownCloud 7.0.1 Virtual Appliance Download
為了方便大家使用,我把可以掛載NFS的ownCloud 7.0.1提供大家下載。這是與「ownCloud終於可以上傳中文檔案!升級ownCloud版本到7.01」一文相同的OpenVZ虛擬應用範本,請使用Proxmox VE來安裝,細節可以參考「Proxmox VE上傳虛擬應用範本」一文。
以下是管理資訊,預設密碼都是password:
- ownCloud的管理者為 admin ,密碼為 password 。
- Linux系統管理者為 root ,密碼為 password。
- MySQL帳號為 owncloud ,密碼為 password。
如果要掛載NFS的話,請修改 /etc/rc.local :
請把mount指令前的「#」移除掉,然後設定你NFS伺服器的IP位置與NFS目錄即可。
大家使用時有什麼問題,歡迎在下面留言處討論。
(more...)
Comments