今天實驗室需要搭建NAS,我負責的是NFS的安裝與配置,現將整理的文檔分享一下:
參考一:Linux下rpm 安裝包方式安裝
http://linux.chinaunix.net/techdoc/beginner/2008/03/17/983528.shtml
參考二:CentOS下NFS安裝與配置
http://blog.csdn.net/puwenhui/article/details/6298178
步驟:
一、服務器端
(1)安裝rpm包
rpm -ivh nfs4-acl-tools-0.3.3-1.el5.x86_64.rpm
rpm -ivh libgssapi-0.10-2.x86_64.rpm
rpm -ivh libgssapi-devel-0.10-2.x86_64.rpm
rpm -ivh libevent-1.1a-3.2.1.x86_64.rpm
rpm -ivh libevent-devel-1.1a-3.2.1.x86_64.rpm
rpm -ivh nfs-utils-lib-1.0.8-7.6.el5.x86_64.rpm
rpm -ivh nfs-utils-lib-devel-1.0.8-7.6.el5.x86_64.rpm
rpm -ivh portmap-4.0-65.2.2.1.x86_64.rpm
rpm -ivh nfs-utils-1.0.9-42.el5.x86_64.rpm
(2)創建NFS文件系統服務端目錄(例:/opt/nfs),並賦予用戶權限
mkdir /opt/nfs
chown nastors:storage /opt/nfs
chmod 777 /opt/nfs
(3)編輯配置文件/etc/exports,加入以下語句:
/opt/nfs *(rw,sync,no_root_squash)
注:①/opt/nfs爲服務器掛載目錄
②IP:*處指定客戶端IP,*表示所有IP
(4)啓動服務
/etc/init.d/portmap start 啓動RPC進程,爲NFS提供端口
/etc/init.d/nfs start
/etc/init.d/nfslock start 來控制文件一致性
(5)查看端口和服務
rpcinfo –p localhost 看到portmap,nfs,mountd進程都已經開啓
(6)查看nfs的設置
showmount -e localhost 查看exports文件
showmount -a localhost 查看nfs與主機連接情況
(7)重新修改 /etc/exports ,使用exportfs[-aruv]來使系統明白
-a :全部掛載(或卸除) /etc/exports 檔案內的設定
-r :重新掛載 /etc/exports 裏面的設定,此外,亦同步更新 /etc/exports
及/var/lib/nfs/xtab 的內容!
-u :卸除某一目錄
-v :在 export 的時候,將分享的目錄顯示到屏幕上!
修改後一定記得重啓nfs服務:service nfsrestart
二、客戶端
(1)開啓客戶端的RPC
/etc/init.d/portmap start
(2)開啓客戶端的nfslock(與服務器端對應)
/etc/init.d/nfslock start
(3)檢查一下RPC是否開啓
showmount –e 222.31.76.177[S2]
如果顯示出在服務器端寫的exports文件的內容,則說明成功
(4)進行nfs掛載
原因:①服務器端做修改後未重啓服務:
exportfs -a
service nfs restart
②服務器配置文件/etc/exports中指定的客戶端IP不對
測試用例:
在222.31.76.177(服務器)上建了兩個共享目錄/opt/nfs和/opt/nfs_cwn,前者是對所有IP都開放,後者只對222.31.76.195(客戶端)開放。經實驗,在195上能成功加載這兩個共享目錄,而另一臺虛擬機222.31.76.48(客戶端)只能掛載/opt/nfs。
結論:NFS能同時存在多個共享目錄,並分別指定共享範圍,都在服務器配置文件/etc/exports下設定。另一方面,多個客戶端也能同時使用這些共享目錄。
[S1]* rw:read-write,可擦寫的權限;
* ro:read-only,只讀的權限;
* sync:數據同步寫入到內存與硬盤當中;
* async:數據會先暫存於內存當中,而非直接寫入硬盤!
* no_root_squash:
登入 NFS 主機使用分享目錄的用戶,如果是 root 的話,那麼對於這個分享的目錄來說,他就具有 root 的權限! 這個項目『極不安全』,不建議使用!
* root_squash:
在登入 NFS 主機使用分享之目錄的用戶如果是 root 時,那麼這個使用者的權限將被壓縮成爲匿名用戶,通常他的 UID 與 GID 都會變成nobody(nfsnobody) 那個系統賬號的身份;
* all_squash:
不論登入 NFS 的使用者身份爲何, 他的身份都會被壓縮成爲匿名用戶,通常也就是nobody(nfsnobody) 啦!
* anonuid:
anon 意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名用戶的 UID 設定值,通常爲 nobody(nfsnobody),但是您可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於您的 /etc/passwd 當中!
* anongid:同 anonuid ,但是變成 group ID 就是了!
[S2]此IP爲服務器的IP