天天看點

檔案共享服務之NFS的配置與應用

NFS  service  是使不同的計算機之間能通過網絡進行檔案共享的一種網絡協定,多用于UNIX/linux網絡系統中。

由SUN公司于1984年開發,目的讓不同的計算機,不同作業系統彼此可以共享檔案。

NFS采用客戶/伺服器工作模式,在NFS伺服器上将/nfs/public目錄設定為輸出目錄(共享目錄),其他的用戶端就可以挂載到自己系統中的某個目錄下,這個目錄可以與伺服器上的輸出目錄和其他客戶機中的目錄不相同。

NFS協定本身沒有提供資料傳輸的功能,必須借助于遠端過程調用(RPC)協定來實作資料的傳輸。

三個系統守護程序:

rpc.nfsd :基本的NFS守護程序,主要功能管理用戶端能否登入伺服器。

rpc.mountd: RPC安裝守護程序,主要管理NFS的檔案系統。當用戶端順利通過rpc.nfsd登入NFS伺服器之後,在使用NFS伺服器所提供的檔案前,還必須通過檔案使用權限的驗證,rpc.mountd會讀取NFS的配置檔案/etc/exports來對比用戶端的權限

portmap:進行端口映射,當用戶端嘗試連接配接并使用RPC伺服器提供的服務時,portmap會将所管理的與服務對應的端口号提供給用戶端,進而使用戶端可以通過該端口向伺服器請求服務。

其他相關程序(線程):

rpc.statd:實作檔案加鎖

lockd : 核心線程,實作檔案鎖的一個線程

rpc.quotad:結合真正檔案系統上的檔案磁盤配額資訊來實作當某使用者基于網絡通路的時候也能實作磁盤配額的功能。

安裝包:nfs-util(僅僅是一個工具元件)

啟動腳本:/etc/init.d/nfs  (nfsd,rcp.mountd,rpc.quotad)

          /etc/init.d/nfslock (rpc.startd,lockd)

監聽端口:2049/tcp  2049/udp (nfsd)

       半随機端口(通過portmap 111/tcp  111/udp)   

配置檔案:/etc/exports  /etc/sysconfig/nfs (提供額外功能)

檢查NFS運作是否正常:

[root@station39 ~]# rpcinfo -p

   program vers proto   port

    100000    2   tcp    111  portmapper

    100000    2   udp    111  portmapper

    100024    1   udp    666  status

    100024    1   tcp    669  status

export檔案格式

<輸出目錄>  [用戶端1 (選項1,選項2,……)]  [用戶端2(選項1,選項2,……)]

PS:輸出目錄和用戶端之間,用戶端和用戶端之間都使用空格分隔,但是用戶端和選項之間不能有空格。

用戶端清單:

單台主機:FQDN,或IP 位址

網絡組 :@group

通配符:* ? .  Example:*.example.com

IP 位址: Example:192.168.0.1/255.255.255.0  192.168.0.1/24

常用選項:

ro   隻讀

rw  讀寫

async 異步寫入

sync 同步寫入

root_squash  将root使用者及所屬使用者組都映射為匿名使用者或使用者組(預設設定)

no_root_squash 不将root使用者及所屬使用者組都映射為匿名使用者或使用者組

all_squash 将遠端通路的所有普通使用者及所屬使用者組都映射為匿名使用者或者使用者組(一般為nfsnobody)

no_all_squash 不将遠端通路的所有普通使用者及所屬使用者組都映射為匿名使用者或者使用者組(預設設定)

anonuid=xxx  将遠端通路的所有使用者都映射為匿名使用者,并指定該匿名使用者賬戶為本地使用者賬号(UID=xxx)

anongid=xxx  将遠端通路的所有使用者組都映射為匿名使用者組賬戶,并指定該匿名使用者組賬戶為本地使用者組賬号(GID=xxx)

Example:編輯/etc/exports 檔案,添加一個共享目錄

/share 192.168.0.1/24(ro)

[root@station39 ~]# service nfs start

檢視某一伺服器是否有共享目錄:

[root@station39 share]# showmount -e 192.168.0.39

Export list for 192.168.0.39:

/share 192.168.0.1/24

用戶端挂載:

mount -t  nfs 192.168.0.39:/share  /nfs

PS :NFS根據ID号來确認使用者身份,NFS協定的緻命缺陷。

exportfs 指令: 修改/etc/exports檔案内容後,不需重新開機NFS服務,直接使修改生效。

-a 輸出在/etc/exports檔案中所設定的所有目錄;

-r  重新讀取/etc/exports檔案中的設定,并使設定立即生效,不需重新開機NFS服務

一般 -ar 結合使用。

-u 停止輸出某一目錄

-v  在輸出目錄時将目錄顯示到螢幕上

showmount

-e 用戶端  顯示某一伺服器所有的共享目錄

-a 伺服器端 顯示自己的共享檔案系統裡邊哪一個檔案系統正在被通路

[root@station39 ~]# showmount -a

All mount points on station39.example.com:

192.168.0.127: /share

-d 伺服器端  顯示指定的NFS伺服器中哪些共享目錄正在被用戶端連接配接通路。

[root@station39 ~]# showmount -d

Directories on station39.example.com:

/share

用戶端挂載方式:

/etc/fstab  開機自動挂載

192.168.0.23/:share        /nfs            nfs      defaults   0  0  

/etc/init.d/netfs  (腳本) 可以開機挂載任意設定為開機自動挂在的檔案系統

autofs 可以根據需要自動挂載或解除安裝

手動挂載

NFS工作流程:

1 用戶端向伺服器端發起連接配接請求,伺服器端通過portmap服務來找到rpc.mounted 所使用的端口并傳回給用戶端;

2 rpc.mountd服務根據來源位址或者主機名稱驗證用戶端是否允許來通路共享目錄。

3 如果允許,rpc.mountd給用戶端傳回一個檔案句柄;

4 用戶端使用rpc.mountd傳回的檔案句柄通過nfsd程序提供的基于TCP或UDP 2049端口的服務來通路或者改變檔案系統;

5 lockd 和 rpc.statd服務管理檔案鎖。

如果要使用固定端口,可以編輯/etc/sysconfig/nfs檔案

LOCKD_TCPPORT="4004"

LOCKD_UDPPORT="4004"

MOUNTD_PORT="4002"

STATD_PORT="4003"

RQUOTAD_PORT="4005"

STATD_OUTGOING_PORT="4006"

本文轉自 490999122 51CTO部落格,原文連結:http://blog.51cto.com/lyp0909/535746,如需轉載請自行聯系原作者

繼續閱讀