歡迎您光臨本站 註冊首頁

配置nfs 伺服器

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

NFS:Network file system,網路文件系統.由sun公司1984年推出,用來在網路中的多台計算機間實現資源共享(包括象文件或cd-rom).設計的目的是:實現在不同系統間交互使用,所以它的通信協議採用與主機和操作系統無關的技術
NFS Server可以看作是File Server,它可以讓你的PC通過網路將遠端得NFS SERVER共享出來的檔案MOUNT到自己的系統中,在CLIENT看來使用NFS的遠端文件就象是在使用本地文件一樣.




一 服務端配置文檔

$ cat /etc/exports

  1. /data/storage/bbs 10.10.100.0/24(rw,sync)
  2. 格式如下
  3. #[共享目錄] [主機/網路](許可權) []()多個


1 共享目錄屬性
ll /data/storage/bbs/ | awk '/^d/ {print $1,$2,$3,$4}'

  1. drwxr-xr-x 6 www www
  2. drwxr-xr-x 13 www www
  3. drwxr-xr-x 2 www www
  4. drwx------ 4 www www
  5. drwxr-xr-x 10 www www
  6. drwxr-xr-x 11 www www
  7. drwxr-xr-x 313 www www
  8. drwxr-xr-x 241 www www
  9. drwxr-xr-x 276 www www
  10. drwxr-xr-x 9 www www
  11. drwxr-xr-x 121 www www

注意:文件夾屬主屬組與許可權,與客戶端相同

2 授權的主機或網路

  1. 可以使用完整的IP 或者是網路,例如10.10.100.10 或10.10.100.0/24 ,也可以使用主機名稱,
  2. 但這個主機名稱要在/etc/hosts 內,或者使用DNS 找到該名稱

3 許可權詳解
參數值 內容說明

  1. ro | rw
  2. 該目錄分享的許可權是可讀寫(read-write) 或只讀(read-only),但最終能不能讀寫,還是與檔案系統的rwx 及身份有關.
  3. sync | async sync
  4. 代表資料會同步寫入到內存與磁碟中,async 則代表資料會先暫存於內存當中,而非直接寫入磁碟!
  5. no_root_squash | root_squash | all_squash
  6. 用戶端使用NFS系統的帳號若為root 時,系統該如何判斷這個帳號的身份?預設的情況下,
  7. 用戶端root 的身份會由root_squash 的設定壓縮成nfsnobody, 如此對伺服器的系統會較有保障.
  8. 但如果你想要開放用戶端使用root 身份來操作伺服器的檔案系統,那麼這裡就得要開no_root_squash 才行,
  9. all_squash 不論登入NFS 的使用者身份為何,他的身份都會被壓縮成為匿名使用者,通常也就是nobody(nfsnobody)
  10. anonuid | anongid
  11. anon 意指anonymous (匿名者) 前面關於*_squash 提到的匿名使用者的UID 設定值,通常為nobody(nfsnobody),
  12. 但是你可以自行設定這個UID 的值!當然,這個UID 必需要存在於你的/etc/passwd 當中! anonuid 指的是UID 而anongid 則是群組的GID.

注意:若是多個許可權,則以逗號 "," 分開



4 啟動nfs
  1. $ /etc/init.d/nfs start
  2. $ /etc/init.d/nfslock start

5 驗證 nfs 伺服器
$ netstat -antulp | grep -E '2049|rpc'

  1. tcp 0 0 0.0.0.0:896 0.0.0.0:* LISTEN 15980/rpc.rquotad
  2. tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
  3. tcp 0 0 0.0.0.0:910 0.0.0.0:* LISTEN 15995/rpc.mountd
  4. tcp 0 0 0.0.0.0:628 0.0.0.0:* LISTEN 16134/rpc.statd
  5. tcp 0 0 10.0.100.71:2049 10.0.100.82:680 ESTABLISHED -
  6. tcp 0 0 192.168.57.71:2049 192.168.57.92:982 ESTABLISHED -
  7. udp 0 0 0.0.0.0:2049 0.0.0.0:* -
  8. udp 0 0 0.0.0.0:907 0.0.0.0:* 15995/rpc.mountd
  9. udp 0 0 0.0.0.0:622 0.0.0.0:* 16134/rpc.statd
  10. udp 0 0 0.0.0.0:625 0.0.0.0:* 16134/rpc.statd
  11. udp 0 0 0.0.0.0:893 0.0.0.0:* 15980/rpc.rquotad

注意:2049為nfs監聽埠



二 客戶端

1 掛載nfs伺服器
  1. # mount -t nfs -o nosuid,noexec,nodev,rw -o bg,soft,rsize=32768,wsize=32768 10.10.100.77:/data/storage/bbs/ /storage/

2 客戶端掛載參數
參數 意義

  1. suid | nosuid
  2. 如果掛載的partition 上面有任何SUID 的binary 程式時, 你只要使用nosuid 就能夠取消SUID 的功能
  3. rw | ro
  4. 你可以指定該檔案系統是只讀(ro) 或可讀寫!伺服器可以提供給你可讀寫,用戶端可以僅允許只讀的參數設定值
  5. dev | nodev
  6. 是否​​保留裝置檔案的特殊功能
  7. exec | noexec
  8. 是否具有執行binary file 的許可權
  9. user | nouser
  10. 是否允許使用者進行檔案的掛載與卸載功能
  11. fg |bg
  12. 當執行掛載時,該掛載的行為會在前台(fg) 還是在後台(bg) 執行;若在前台執行時,則mount 會持續嘗試掛載,直到成功或time out 為止,若為後台執行, 則mount 會在背持續多次進行mount ,而不會影響到前景的程序操作.
  13. soft | hard
  14. 如果是hard 的情況,則當兩者之間有任何一部主機離線,則RPC 會持續的呼叫,直到對方恢復連線為止.如果是soft 的話,那RPC 會在time out 后重複呼叫,而非持續呼叫, 因此系統的延遲會比較不這麼明顯.
  15. intr
  16. 當你使用上頭提到的hard 方式掛載時,若加上intr 這個參數, 則當RPC 持續呼叫中,該次的呼叫是可以被中斷的(interrupted).
  17. rsize | wsize
  18. 讀出(rsize)與寫入(wsize)的區塊大小(block size).這個設定值可以影響用戶端與NFS服器端傳輸資料的緩衝記憶容量.

3 client端 系統中的www用戶

  1. www:x:5000:5000::/home/www:/sbin/nologin

4 apache 用戶與組

  1. <IfModule !mpm_netware_module>
  2. <IfModule !mpm_winnt_module>
  3. User www
  4. Group www
  5. IfModule>
  6. IfModule>

5 clinet端 掛載點屬性


ll /storage/ | awk '/^d/ {print $1,$2,$3,$4}'
  1. drwxr-xr-x 6 www www
  2. drwxr-xr-x 13 www www
  3. drwxr-xr-x 2 www www
  4. drwx------ 4 www www
  5. drwxr-xr-x 10 www www
  6. drwxr-xr-x 11 www www
  7. drwxr-xr-x 313 www www
  8. drwxr-xr-x 241 www www
  9. drwxr-xr-x 276 www www
  10. drwxr-xr-x 9 www www
  11. drwxr-xr-x 121 www www

注意:文件夾屬主屬組與許可權,與服務端相同



三 維護 NFS
1 nfs 使用的協議與埠

  1. grep -E '^nfs.*nfsd$' /etc/services
  2. nfs 2049/tcp nfsd
  3. nfs 2049/udp nfsd

2 RPC 使用的埠

  1. grep -E 'portmap' /etc/services
  2. sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP
  3. sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP

注意:
RPC 是固定使用port 111 來監聽埠
RPC 服務的功能就是在指定NFS 服務所對應的port number ,並且反回給用戶端,讓用戶端可以連結到正確的埠上去.
RPC 是如何知道每個NFS 的埠?這是當伺服器在啟動NFS 時會隨機取用數個埠,並主動的向RPC 註冊,因此RPC 可以知道每個埠對應的NFS.



3 命令
  1. 服務端重新掛載nfs
  2. exportfs -arv
  3. 服務端卸載全部nfs
  4. exportfs -auv
  5. 服務端|客戶端 顯示nfs共享目錄
  6. showmount -e [ip]



擴展
NFS 的長連接

  1. 顯示NFS 共享目錄
  2. $ showmount -e
  3. Export list for one.test.com:
  4. /data/iso 10.0.100.0/24,192.168.57.0/24
  5. /data/htdocs/8080 10.0.100.0/24,192.168.6.0/24
  6. 査看與NFS綁定的連接
  7. $ netstat -antulp | grep 2049
  8. tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
  9. tcp 0 0 192.168.57.71:2049 192.168.57.92:984 ESTABLISHED -
  10. udp 0 0 0.0.0.0:2049 0.0.0.0:* -
  11. 當客戶端掛載NFS 后,客戶端就與服務端保持連接狀態"ESTABLISHED",如果幾百個NFS客戶端,
  12. 嘿嘿 不過如果在掛載時使用bg參數使用後台,則會在沒有數據時釋放連接.



參考
http://linux.vbird.org/linux_server/0330nfs.php

結束
使用 NFS時請先將rpcbind 服務啟動,rhel5/centos5 系列為 portmap 服務,rhel6/centos6 系列為 rpcbind 服務.

本文出自 「dongnan」 博客,請務必保留此出處http://dngood.blog.51cto.com/446195/827766

 

[火星人 ] 配置nfs 伺服器已經有461次圍觀

http://coctec.com/docs/linux/show-post-45982.html