配置nfs伺服器
NFS:Network file system,網路檔案系統.由sun公司1984年推出,用來在網路中的多臺計算機間實現資源共享(包括象檔案或cd-rom).設計的目的是:實現在不同系統間互動使用,所以它的通訊協議採用與主機和作業系統無關的技術
NFS Server可以看作是File Server,它可以讓你的PC通過網路將遠端得NFS SERVER共享出來的檔案MOUNT到自己的系統中,在CLIENT看來使用NFS的遠端檔案就象是在使用本地檔案一樣.
一 服務端配置文件
$ cat /etc/exports
- /data/storage/bbs 10.10.100.0/24(rw,sync)
- 格式如下
- #[共享目錄] [主機/網路](許可權) []()多個
1 共享目錄屬性
ll /data/storage/bbs/ | awk `/^d/ {print $1,$2,$3,$4}`
- drwxr-xr-x 6 www www
- drwxr-xr-x 13 www www
- drwxr-xr-x 2 www www
- drwx—— 4 www www
- drwxr-xr-x 10 www www
- drwxr-xr-x 11 www www
- drwxr-xr-x 313 www www
- drwxr-xr-x 241 www www
- drwxr-xr-x 276 www www
- drwxr-xr-x 9 www www
- drwxr-xr-x 121 www www
注意:資料夾屬主屬組與許可權,與客戶端相同
2 授權的主機或網路
- 可以使用完整的IP 或者是網路,例如10.10.100.10 或10.10.100.0/24 ,也可以使用主機名稱,
- 但這個主機名稱必須要在/etc/hosts 內,或者使用DNS 找到該名稱
3 許可權詳解
引數值 內容說明
- ro | rw
- 該目錄分享的許可權是可讀寫(read-write) 或只讀(read-only),但最終能不能讀寫,還是與檔案系統的rwx 及身份有關。
- sync | async sync
- 代表資料會同步寫入到記憶體與磁碟中,async 則代表資料會先暫存於記憶體當中,而非直接寫入磁碟!
- no_root_squash | root_squash | all_squash
- 使用者端使用NFS系統的帳號若為root 時,系統該如何判斷這個帳號的身份?預設的情況下,
- 使用者端root 的身份會由root_squash 的設定壓縮成nfsnobody, 如此對伺服器的系統會較有保障。
- 但如果你想要開放使用者端使用root 身份來操作伺服器的檔案系統,那麼這裡就得要開no_root_squash 才行,
- all_squash 不論登入NFS 的使用者身份為何,他的身份都會被壓縮成為匿名使用者,通常也就是nobody(nfsnobody)
- anonuid | anongid
- anon 意指anonymous (匿名者) 前面關於*_squash 提到的匿名使用者的UID 設定值,通常為nobody(nfsnobody),
- 但是你可以自行設定這個UID 的值!當然,這個UID 必需要存在於你的/etc/passwd 當中! anonuid 指的是UID 而anongid 則是群組的GID。
注意:若是多個許可權,則以逗號 “,” 分開
4 啟動nfs
- $ /etc/init.d/nfs start
- $ /etc/init.d/nfslock start
5 驗證 nfs 伺服器
$ netstat -antulp | grep -E `2049|rpc`
- tcp 0 0 0.0.0.0:896 0.0.0.0:* LISTEN 15980/rpc.rquotad
- tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN –
- tcp 0 0 0.0.0.0:910 0.0.0.0:* LISTEN 15995/rpc.mountd
- tcp 0 0 0.0.0.0:628 0.0.0.0:* LISTEN 16134/rpc.statd
- tcp 0 0 10.0.100.71:2049 10.0.100.82:680 ESTABLISHED –
- tcp 0 0 192.168.57.71:2049 192.168.57.92:982 ESTABLISHED –
- udp 0 0 0.0.0.0:2049 0.0.0.0:* –
- udp 0 0 0.0.0.0:907 0.0.0.0:* 15995/rpc.mountd
- udp 0 0 0.0.0.0:622 0.0.0.0:* 16134/rpc.statd
- udp 0 0 0.0.0.0:625 0.0.0.0:* 16134/rpc.statd
- udp 0 0 0.0.0.0:893 0.0.0.0:* 15980/rpc.rquotad
注意:2049為nfs監聽埠
二 客戶端
0 啟動rpcbind/portmap 服務
- /etc/init.d/rpcbind #rhel6.x
- /etc/init.d/portmap #rhe5.x
1 掛載nfs伺服器
- # mount -t nfs -o nosuid,noexec,nodev,rw -o bg,soft,rsize=32768,wsize=32768 10.10.100.77:/data/storage/bbs/ /storage/
2 客戶端掛載引數
引數 意義
- suid | nosuid
- 如果掛載的partition 上面有任何SUID 的binary 程式時, 你只要使用nosuid 就能夠取消SUID 的功能
- rw | ro
- 你可以指定該檔案系統是隻讀(ro) 或可讀寫!伺服器可以提供給你可讀寫,使用者端可以僅允許只讀的引數設定值
- dev | nodev
- 是否保留裝置檔案的特殊功能
- exec | noexec
- 是否具有執行binary file 的許可權
- user | nouser
- 是否允許使用者進行檔案的掛載與解除安裝功能
- fg |bg
- 當執行掛載時,該掛載的行為會在前臺(fg) 還是在後臺(bg) 執行;若在前臺執行時,則mount 會持續嘗試掛載,直到成功或time out 為止,若為後臺執行, 則mount 會在背持續多次進行mount ,而不會影響到前景的程式操作。
- soft | hard
- 如果是hard 的情況,則當兩者之間有任何一部主機離線,則RPC 會持續的呼叫,直到對方恢復連線為止。如果是soft 的話,那RPC 會在time out 後重復呼叫,而非持續呼叫, 因此係統的延遲會比較不這麼明顯。
- intr
- 當你使用上頭提到的hard 方式掛載時,若加上intr 這個引數, 則當RPC 持續呼叫中,該次的呼叫是可以被中斷的(interrupted)。
- rsize | wsize
- 讀出(rsize)與寫入(wsize)的區塊大小(block size)。這個設定值可以影響使用者端與NFS服器端傳輸資料的緩衝記憶容量。
3 client端 系統中的www使用者
- www:x:5000:5000::/home/www:/sbin/nologin
4 apache 使用者與組
- <IfModule !mpm_netware_module>
- <IfModule !mpm_winnt_module>
- User www
- Group www
- </IfModule>
- </IfModule>
5 clinet端 掛載點屬性
ll /storage/ | awk `/^d/ {print $1,$2,$3,$4}`
- drwxr-xr-x 6 www www
- drwxr-xr-x 13 www www
- drwxr-xr-x 2 www www
- drwx—— 4 www www
- drwxr-xr-x 10 www www
- drwxr-xr-x 11 www www
- drwxr-xr-x 313 www www
- drwxr-xr-x 241 www www
- drwxr-xr-x 276 www www
- drwxr-xr-x 9 www www
- drwxr-xr-x 121 www www
注意:資料夾屬主屬組與許可權,與服務端相同
三 維護 NFS
1 nfs 使用的協議與埠
- grep -E `^nfs.*nfsd$` /etc/services
- nfs 2049/tcp nfsd
- nfs 2049/udp nfsd
2 RPC 使用的埠
- grep -E `portmap` /etc/services
- sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP
- sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP
注意:
RPC 是固定使用port 111 來監聽埠
RPC 服務的功能就是在指定NFS 服務所對應的port number ,並且反回給使用者端,讓使用者端可以連結到正確的埠上去。
RPC 是如何知道每個NFS 的埠?這是因為當伺服器在啟動NFS 時會隨機取用數個埠,並主動的向RPC 註冊,因此RPC 可以知道每個埠對應的NFS。
3 命令
- 服務端重新掛載nfs
- exportfs -arv
- 服務端解除安裝全部nfs
- exportfs -auv
- 服務端|客戶端 顯示nfs共享目錄
- showmount -e [ip]
擴充套件
NFS 的長連線
- 顯示NFS 共享目錄
- $ showmount -e
- Export list for one.test.com:
- /data/iso 10.0.100.0/24,192.168.57.0/24
- /data/htdocs/8080 10.0.100.0/24,192.168.6.0/24
- 査看與NFS繫結的連線
- $ netstat -antulp | grep 2049
- tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN –
- tcp 0 0 192.168.57.71:2049 192.168.57.92:984 ESTABLISHED –
- udp 0 0 0.0.0.0:2049 0.0.0.0:* –
- 當客戶端掛載NFS 後,客戶端就與服務端保持連線狀態”ESTABLISHED”,如果幾百個NFS客戶端,
- 嘿嘿 不過如果在掛載時使用bg引數使用後臺,則會在沒有資料時釋放連線。
#update 20120716 結合nfs client 與 web 伺服器
//統一許可權以www使用者與組為準
- 1 nfs server 共享目錄的許可權 www
- grep -i `www` /etc/passwd
- www:x:501:501::/home/www:/sbin/nologin
- ll /data/ | grep www
- drwxr-xr-x 3 www www 4096 Jul 16 11:05 www
- grep -i `www` /etc/exports
- /data/www/bbs/ 10.0.100.0/24(rw,sync)
- 2 nfs client 端擁有相同的uid/gid (使用者與組)
- grep -i `www` /etc/passwd
- www:x:501:501::/home/www:/sbin/nologin
- 3 nfs client 端 web 伺服器使用www使用者與組
- //以nginx 為例
- user www www;
#
- chkconfig –list | grep -E `nfs|port|rpc.*3:on`
- nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- nfslock 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
參考
http://linux.vbird.org/linux_server/0330nfs.php
#update 20121009
使用 NFS時請先將rpcbind 服務啟動,rhel5/centos5 系列為 portmap 服務,rhel6/centos6 系列為 rpcbind 服務
NFS Server
- chkconfig –list | grep -E `nfs|portmap|rpcbind`
- nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- nfslock 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- portmap 0:off 1:off 2:on 3:on 4:on 5:on 6:off
NFS Client
- chkconfig –list | grep -E `nfs|portmap|rpcbind`
- nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- nfslock 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#update 20121010
什麼是RPC?(Remote Procedure Call,遠端過程呼叫)
因為NFS支援的功能相當的多,而不同的功能都會使用不同的程式來啟動,每啟動一個功能就會啟用一些埠口來傳輸資料,因此,NFS的功能所對應的埠口才沒有固定住,而是隨機取用一些未被使用的小於1024因為使用者端得要知道伺服器端的相關埠口才能夠連線吧!
此時我們就得需要遠端程式呼叫(RPC)的服務啦!RPC最主要的功能就是在指定每個NFS功能所對應的埠號,並且回報給使用者端,讓使用者端可以連結到正確的埠口上去。那RPC又是如何知道每個NFS的埠口呢?這是因為當伺服器在啟動NFS時會隨機取用數個埠口,並主動的向RPC註冊,因此RPC可以知道每個埠口對應的NFS功能,然後RPC又是固定使用的111埠來監聽使用者端的需求並回報使用者端正確的埠口,所以當然可以讓NFS的啟動更為輕鬆愉快了!
1 使用者端會向伺服器端的RPC(埠111)發出NFS檔案存取功能的詢問要求;
2 伺服器端找到對應的已註冊的NFS守護程式埠口後,會回報給使用者端;
3 使用者端了解正確的埠口後,就可以直接與NFS守護程式來連線。
由於NFS的各項功能都必須要向RPC來註冊,如此一來RPC才能瞭解NFS這個服務的各項功能之埠號,PID,NFS在伺服器所監聽的IP等等,而用 戶端才能夠透過RPC的詢問找到正確對應的埠口。也就是說,NFS必須要有RPC存在時才能成功的提供服務,因此我們稱NFS為RPC伺服器的一種。事實 上,有很多這樣的伺服器都是向RPC註冊的,舉例來說,NIS(網路資訊服務)也是RPC伺服器的一種呢。此外,由圖13.1-2你也會知道,不論是使用者 端還是伺服器端,要使用NFS時,兩者都需要啟動RPC才行喔.
結束
更多請:
linux 相關 37275208
vmware 虛擬化相關 166682360
本文轉自 dongnan 51CTO部落格,原文連結:http://blog.51cto.com/dngood/827766
相關文章
- Linux伺服器---配置nfsLinux伺服器NFS
- Linux伺服器—配置nfsLinux伺服器NFS
- nfs伺服器安裝配置NFS伺服器
- NFS伺服器的安裝與配置NFS伺服器
- 配置nfs伺服器出現的問題NFS伺服器
- NFS介紹、NFS服務端安裝配置、NFS配置選項NFS服務端
- NFS伺服器NFS伺服器
- 配置NFS固定埠NFS
- nfs配置 /etc/exportsNFSExport
- linux NFS 配置LinuxNFS
- linux配置nfsLinuxNFS
- NFS 伺服器(ZT)NFS伺服器
- AIX 上配置、使用NFSAINFS
- AIX平臺NFS配置AINFS
- 配置 NFS 共享目錄NFS
- centos6.x 多伺服器資料夾掛載共享伺服器nfs配置教程CentOS伺服器NFS
- NFS服務配置總結NFS
- Oracle Linux 6.4配置NFSOracleLinuxNFS
- AIX配置NFS注意事項AINFS
- hpux nfs配置一例UXNFS
- Linux 上配置、使用NFSLinuxNFS
- CentOS 7 安裝配置 NFSCentOSNFS
- linux下nfs的配置LinuxNFS
- ubuntu下搭建nfs伺服器UbuntuNFS伺服器
- 【NFS】Linux配置NFS共享常用SQL指令碼目錄NFSLinuxSQL指令碼
- 檔案伺服器之一:NFS伺服器伺服器NFS
- Linux-NFS——配置過程LinuxNFS
- linux Direct NFS配置介紹LinuxNFS
- heartbeat+drbd+nfs安裝配置NFS
- Centos7 安裝配置NFSCentOSNFS
- linux 配置nfs(rman 備份)LinuxNFS
- [轉]HP-UX下NFS配置UXNFS
- CentOS 6 NFS的安裝配置CentOSNFS
- Linux伺服器---安裝nfsLinux伺服器NFS
- Centos7搭建NFS伺服器CentOSNFS伺服器
- 從cloudstack預設配置看NFS安全CloudNFS
- Ubuntu 20.04 中配置NFS服務UbuntuNFS
- AIX下配置NFS共享給LINUXAINFSLinux