NFS檔案伺服器架設記錄(CentOS 7)

NFS檔案伺服器架設記錄(CentOS 7)

近期因為案件關係,需要幫客戶規劃主機的環境,而其中一個環節需要讓兩台主機共用並同步大量的圖片、影片、音效檔案。這時候我第一直覺就是想到 NFS 檔案伺服器,也就是檔案伺服器。因為NFS檔案伺服器可以同時以掛載(mount)的方式,掛載在不同的主機上。換句話說,我可以把同一批的檔案,同時掛在不同的主機,同時讓不同的主機使用這批檔案,達到「同步」的效果。

原理

雖然網路上有很多現成的NFS檔案伺服器的架設步驟可以「直接」跟著操作,不過仔細想了一下還是瞭解一下原理比較好,未來如果發生什麼狀況,有一些基本知識還是好一點。參考了一下Linux最著名的學習網站【鳥哥的Linux私房菜–NFS伺服器】這裡簡單的說一下原理,如果需要更詳細的理解,可以點擊連結到鳥哥的網站去看。那麼,開始囉…

一般我們架設主機上的服務,不外乎就是安裝程式並讓程式開啟指定的Port,讓別的主機知道我們的IP以及Port才能與我們主機的服務連接上。像是FTP預設是21 Port、網站是80 Port 等等,但NFS比較特別,因為它所提供的服務並不是單一的,所以同這支程式會占用多個Port,而且它的Port是隨機的。

這時候就需要另外安裝RPC服務,這是用來對NFS這類的服務進行 Port 控管的介面。RPC固定會開啟111 Port,NFS則是向RPC說(註冊),這次要開的 Port 有哪些。這樣,其他電腦只要連結RPC的Port並與RPC溝通,RPC就會協助連結上NFS服務了。

NFS伺服器安裝

安裝nfs-utils,透過yum安裝的好處是,他會把相依的套件跟軟體幫你一起安裝進去。而這裡面很重要的 rpc 服務,也包含在裡面哦。

yum install nfs-utils

安裝完成後,就直接啟動他吧。這邊需要特別注意的是,因為NFS要向RPC註冊有哪些Port要被使用,所以這前提是RPC必需被開著,NFS才有辦法向RPC註冊Port吧,如下,順序很重要哦。

# 下次主機開機,就會自動啟動服務
systemctl enable rpcbind
systemctl enable nfs

# 啟動 rpc及nfs服務
systemctl start rpcbind
systemctl start nfs

啟動服務之後,別急著連線,請把防火牆也打開,不然死活連不進來。

firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs}
firewall-cmd --reload

接下來,你總要讓NFS服務知道,你要分享哪些目錄(資料夾)給其他主機吧。這個設定的位置就在/etc/exports

vi /etc/exports

進入設定檔進行如下編輯:

# 給單一用戶連線的權限
/data/     192.168.0.0/24(rw)

# 給多個用戶連線的權限
/data/     192.168.0.0/24(ro) 10.10.0.0/24(rw)

# /data: 分享的目錄路徑
# 192.168.0.0/24: 用戶端的IP範圍,也可以指定估定的IP,如果填寫「*」沒有限制,誰都可以進來
# rw: 可讀可寫
# ro: 唯讀

編輯完畢後,記得重新開啟nfs服務哦

systemctl restart nfs

用戶端連線

注意哦,用戶端要連線也需要安裝nfs-utils程式,不過我們只需要用到rpc服務,而不是NFS服務。畢竟,用戶端的檔案又沒有要分享出去。所以連防火牆也不需要設定。

# 安裝 nfs-utils
yum install nfs-utils

# 下次開機時會自動啟用 rpc 服務
systemctl enable rpcbind

# 啟用 rpc 服務
systemctl start rpcbind

接下可以輸入以下指令,確認你所要掛載的NFS主機,有沒有分享什麼資料夾給你使用

# showmount -e [NFS伺服器IP]

showmount -e 192.168.1.112

Output:
Export list for 192.168.1.112:
/data 192.168.0.0/24

OK,確定NFS伺服器有分享 /data 的資料夾給我們,把他掛載上去吧

# mount -t nfs [NFS伺服器IP]:[伺服器分享的資料夾] [掛在到本機的哪個資料夾]

mount -t nfs 192.168.1.122:/data /data

完成!

其實還有很多權限的部分需要處理,這部分真的可以好好的看一下【鳥哥的Linux私房菜–NFS伺服器】哦。

說真的,在還沒架設NFS之前,覺得他應該很麻煩、很困難,但沒想到這麼簡單。雖然說,檔案隨便分享給其他人,多少會有一些安全上的疑慮。但如果這個可以拿來做為「自動化異地備份」,應該是個不錯的選擇。

在備份主機安裝NFS服務,讓正式主機掛載。接著再寫一支 Shell Script讓資料定期複製到掛載的資料夾。這就相當於把檔案複製到另一台主機去,實現異地備份的效果了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *