標籤:centos 6搭建nfs伺服器及相關問題解決
NFS 是Network File System的縮寫,即網路檔案系統。一種使用於分散式檔案系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網路讓不同的機器、不同的作業系統能夠彼此分享個別的資料,讓應用程式在用戶端通過網路訪問位於伺服器磁碟中的資料,是在類Unix系統間實現磁碟檔案分享權限設定的一種方法。
應用情境:
在生產環境中一系統因架構變化後,把一模組原有的單節點擴充成了兩個節點,前端採用用nginx做負載的架構,而這兩個節點需要一個公用的儲存來存放使用者上傳的圖片,使用者的並發不高,再因原有業務模組是從nginx主機上剝離出來的,在原nginx主機上有“img”這個儲存圖片的目錄,所以考慮在nginx主機上安裝nfs服務,再在兩個節點上同點掛載“img”目錄實現叢集節點對圖片目錄的訪問。NFS服務的安裝比較簡單,但在上生產環境時還是應該在自己的測試環境先驗證,這裡把安裝過程記錄如下:
系統內容:centos 6.4 x86_64
伺服器3台:10、12(用戶端);21(服務端)
1、檢查系統是否開啟nfs服務:service nfs status 結果顯示nfs: unrecognized service,說明系統沒有安裝nfs服務,注意,yum install nfs是無法安裝的,應該用yum install nfs-utils.
2、開啟portmap服務,還是unrecognized service ,安裝之,yum install portmap 未果,百度+google之,發現centos 6.4中portmap 已經被rpcbind取代,於是乎繼續安裝之,未果,檢查下是不是已經在安裝nfs-utils包的時候安裝了,service rpcbind status ,果然已經一塊安裝了。
以上為整個安裝過程,總結下就是centos 6.x之後的系統一個命令yum install nfs-utils 全部搞定,貌似5.x版本的也可以用這個命令搞定,搞不定的話可以單獨裝portmap;主要6.x版本用的事rpcbind, 5.x版本用的是portmap。
下面是啟動過程:
1、首先配置/etc/exports檔案
vi /etc/exports;
然後輸入 /opt/pic:192.168.1.1/255.255.255.0(rw,sync,no_root_squash,no_all_squash)
儲存退出
2、啟動rpcbind服務 service rpcbind start
3、啟動nfs服務 service nfs start
showmount -e 192.168.1.21 輸出以下結果:
Export list for 192.168.1.21:
/opt/pic 192.168.1.1/255.255.255.0
說明成功啟動(注意:在centos 6.x之後的版本showmount -e 後面一定要指定ip,否則會卡在那,也沒輸出,5.x的版本可以不指定)
下面是掛載nfs到指定機器的目錄
ssh登陸到一台機器b:ssh [email protected]
mount -t nfs 192.168.1.21:/opt/pic /opt/pic
在a機器上建立檔案test.txt,然後發現b機器有了同樣的檔案,nfs服務端和用戶端正常同步。
操作其實不算太難,不過中間也發生了一些小問題和注意事項,在此也一起講講
1. /etc/exports檔案內容格式:
<輸出目錄> [用戶端1 選項(存取權限,使用者映射,其他)] [用戶端2 選項(存取權限,使用者映射,其他)]
2. insecure 當mount監聽連接埠大於1024時需要使用此參數
3.許可權配置參數
rw read-write,可讀寫;
sync:檔案同時寫入硬碟和記憶體;
async:檔案暫存於記憶體,而不是直接寫入記憶體;
no_root_squash:NFS用戶端串連服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,也擁有root許可權。顯然開啟這項是不安全的。
4. 重新載入/etc/exports的配置:
[[email protected] ~]# exportfs -r
5. 用戶端配置
在用戶端只需要安裝nfs-client端,如果沒有client端程式,直接安裝nfs-utils
6. 根據需要設定存取權限
[[email protected] ~]#vi /etc/hosts.allow
[[email protected] ~]#vi /etc/hosts.deny
7. 掛載格式:
mount –t nfs hostname(or IP):/directory /mount point
卸載:
umount /本地掛載目錄(本地client卸載方法,但用exports –au為server卸載)
設定自動掛載:
在伺服器端:chkconfig --add rpcbind&&nfs
在用戶端:開啟/etc/fstab,在最後一行添加如下資訊:
192.168.1.21:/usr/pic /opt/pic nfs defaults 0 0
8. 查看共用
showmount –e IP(查看NFS伺服器上共用了那些目錄)
showmount –a IP(用於nfs server上,顯示已經mount上本機NFS伺服器的client(客戶機))
今天碰到一個nfs掛載錯誤的問題,錯誤提示如下:
mount: wrong fs type, bad option, bad superblock on ***,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
根據錯誤提示,查看/sbin/mount.<type>檔案,果然發現沒有/sbin/mount.nfs的檔案,安裝nfs-utils即可
解決方案:yum install nfs-utils
安裝之後,/sbin/下面多了兩個mount檔案,分別是mount.nfs和mount.nfs4:
[[email protected] data]# ll /sbin/mount*
-rwsr-xr-x. 1 root root 123776 11月 22 2013 /sbin/mount.nfs
lrwxrwxrwx. 1 root root 9 6月 9 13:41 /sbin/mount.nfs4 -> mount.nfs
-rwxr-xr-x. 1 root root 1338 2月 22 2013 /sbin/mount.tmpfs
NFS共用服務掛載時出現“access denied by server while mounting”的解決方案
修改/etc/sysconfig/nfs檔案,將
# Turn off v2 and v3 protocol support
# RPCNFSDARGS="-N 2 -N 3"
# Turn off v4 protocol support
#RPCNFSDARGS="-N 4" /*把這句話的#號去掉*/
NFS分為三個版本,即NFS-2 NFS-3 NFS-4,該設定檔預設關閉了這三個的NFS版本,我們只需要開啟NFS-4即可。
最後再說說題外話,NFS 允許使用者像訪問本地檔案一樣,去訪問網路上共用的檔案。NFS 是一個成功的檔案分享權限設定方法,但它最大的問題是它不太適合大型的分散式系統。那麼大量使用者上傳的檔案的儲存應該採用什麼檔案系統呢,貌似fastdfs不錯,與之類似的還有MogileFS等
本文出自 “IskOrPitx” 部落格,請務必保留此出處http://chinaxin.blog.51cto.com/1109725/1881488
Centos 6搭建NFS伺服器及相關問題解決