您好,登錄后才能下訂單哦!
9.1 nfs介紹
9.1.1 nfs特點
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。
在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位于遠端NFS服務器上的文件,就像訪問本地文件一樣
nfs適用于Linux與Unix之間實現文件共享,不能實現Linux與Windows間的文件共享功能
nfs是運行在應用層的協議,其監聽于2049/tcp和2049/udp套接字上
nfs服務只能基于IP進行認證,這也是它的缺點之一
9.1.2 使用nfs的好處
a) 節省本地存儲空間,將常用的數據存放在一臺NFS服務器上且可以通過網絡訪問,那么本地終端將可以減少自身存儲空間的使用
b) 用戶不需要在網絡中的每個機器上都建有Home目錄,Home目錄可以放在NFS服務器上且可以在網絡上被訪問使用
c) 一些存儲設備如軟驅、CDROM和Zip(一種高儲存密度的磁盤驅動器與磁盤)等都可以在網絡上被別的機器使用。這可以減少整個網絡上可移動介質設備的數量
9.1.3 nfs的體系組成
nfs體系至少有兩個主要部分:
一臺NFS服務器
若干臺客戶機
nfs體系的架構圖如下:
客戶機通過TCP/IP網絡遠程訪問存放在NFS服務器上的數據
在NFS服務器正式啟用前,需要根據實際環境和需求,配置一些NFS參數
9.1.4 nfs的應用場景
nfs有很多實際應用場景,以下是一些常用的場景:
a) 多個機器共享一臺CDROM或其他設備。這對于在多臺機器中安裝軟件來說更加便宜與方便
b) 在大型網絡中,配置一臺中心NFS服務器用來放置所有用戶的home目錄可能會帶來便利。這些目錄能被輸出到網絡以便用戶不管在哪臺工作站上登錄,總能得到相同的home目錄
c) 不同客戶端可在NFS上觀看影視文件,節省本地空間
d) 在客戶端完成的工作數據,可以備份保存到NFS服務器上用戶自己的路徑下
9.2 nfs工作機制
nfs是基于rpc來實現網絡文件系統共享的。所以我們先來說說rpc
9.2.1 RPC
RPC(Remote Procedure Call Protocol),遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。
RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。
RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。
rpc工作機制如上圖所示,下面來描述一下它:
a) 客戶端程序發起一個RPC系統調用基于TCP協議發送給另一臺主機(服務端)
b) 服務端監聽在某個套接字上,當收到客戶端的系統調用請求以后,將收到的請求和其所傳遞的參數通過本地的系統調用執行一遍,并將結果返回給本地的服務進程
c) 服務端的服務進程收到返回的執行結果后將其封裝成響應報文,再通過rpc協議返回給客戶端
d) 客戶端調用進程接收答復信息,獲得進程結果,然后調用執行繼續進行
CentOS6中RPC服務的進程名是portmapper,可以通過rpcinfo -p查看當前系統使用的RPC服務名
9.2.2 NIS
NIS:Network Information System,網絡信息系統,是對主機帳號等系統提供集中管理的網絡服務。
用戶登錄任何一臺NIS客戶機都會從NIS服務器進行登錄認證,可實現用戶帳號的集中管理
NIS協議是明文的,所以NIS一般不建議在公網中使用而通常在局域網中使用。
此章主要是講NFS,所以NIS的配置這里就不詳說了,有興趣的朋友可以去網上搜索
9.2.3 nfs工作機制
NFS服務器端運行著四個進程:nfsd,mountd,idmapd,portmapper
idmapd:實現用戶帳號的集中映射,把所有的帳號都映射為NFSNOBODY,但是在訪問時卻能以本地用戶的身份去訪問
mountd:用于驗證客戶端是否在允許訪問此NFS文件系統的客戶端列表中,在則允許訪問(發放一個令牌,持令牌去找nfsd),否則拒絕訪問
mountd的服務端口是隨機的,由rpc服務(portmapper)提供隨機端口號
nfsd:nfs的守護進程,監聽在2049/tcp和2049/udp端口上
不負責文件存儲(由NFS服務器本地內核負責調度存儲),用于理解客戶端發起的rpc請求,并將其轉交給本地內核,而后存儲在指定的文件系統上
portmapper:NFS服務器的rpc服務,其監聽于111/TCP和111/UDP套接字上,用于管理遠程過程調用(RPC)
下面通過一個例子來說明NFS的簡單工作流程:
需求:查看file文件的信息,此file存儲在遠程NFS服務端主機上(掛載在本地目錄/shared/nfs中)
(1)客戶端發起查看file信息的指令(ls file)給內核,內核通過NFS模塊得知此文件并不是本地文件系統中的文件,而是在遠程NFS主機上的一個文件
(2)客戶端主機的內核通過RPC協議把查看file信息的指令(系統調用)封裝成rpc請求通過TCP的111端口發送給NFS服務端主機的portmapper
(3)NFS服務端主機的portmapper(RPC服務進程)告訴客戶端說NFS服務端的mountd服務在某某端口上,你去找它驗證
因為mountd在提供服務時必須要向portmapper注冊一個端口號,所以portmapper是知道其工作于哪個端口的
(4)客戶端得知服務端的mountd進程端口號后,通過已知的服務端mountd端口號請求驗證
(5)mountd收到驗證請求后驗證發起請求的客戶端是否在允許訪問此NFS文件系統的客戶端列表中,在則允許訪問(發放一個令牌,持令牌去找nfsd),否則拒絕訪問
(6)驗證通過后客戶端持mountd發放的令牌去×××端的nfsd進程,請求查看某文件
(7)服務端的nfsd進程發起本地系統調用,向內核請求查看客戶端要查看的文件的信息
(8)服務端的內核執行nfsd請求的系統調用,并將結果返回給nfsd服務
(9)nfsd進程收到內核返回的結果后將其封裝成rpc請求報文并通過tcp/ip協議返回給客戶端
9.3 nfs的配置
主配置文件:/etc/exports,文件中的項的格式相當簡單,要共享一個文件系統,只要在文件中添加如下條目即可
directory(or file system) client1(option1,option2) client2(option1,option2)
nfs主配置文件中的常用選項(option):
secure:這個選項是缺省項,它使用了1024以下的TCP/IP端口實現NFS的連接。指定insecure可以禁用這個選項
rw:允許NFS客戶機進行讀/寫訪問。缺省選項是只讀的
async:此選項可以改進性能,但如果沒有完全關閉NFS守護進程就重啟了NFS服務器,這也可能會造成數據丟失。
no_wdelay:此選項關閉寫延時。如果設置了async,那么NFS就會忽略此選項
nohide:若將一個目錄掛載到另一個目錄之上,則原來的目錄通常就被隱藏起來或看起來像空的一樣。要禁用這種行為,需啟用hide選項
no_subtree_check:此選項關閉子樹檢查,子樹檢查會執行一些不想忽略的安全性檢查。缺省選項是啟用子樹檢查
no_auth_nlm:此選項可作為insecure_locks指定,它告訴NFS守護進程不要對加鎖請求進行認證。若關心安全性問題,就要避免使用此選項。缺省選項是auth_nlm或secure_locks
mp(mountpoint=path):通過顯式的聲明此選項,NFS要求掛載所導出的目錄
fsid=num:此選項通常在NFS故障恢復時使用。
用戶映射:
通過NFS中的用戶映射,可以將偽或實際用戶和組的標識賦給一個正在對NFS卷進行操作的用戶。這個NFS用戶具有映射所允許的用戶和組的許可權限。
對NFS卷使用一個通用的用戶/組可以提供一定的安全性和靈活性,而不會帶來很多管理負荷。
在使用NFS掛載的文件系統上的文件時,用戶的訪問通常都會受到限制,這就是說用戶都是以匿名用戶的身份來對文件進行訪問的,這些用戶缺省情況下對這些文件只有只讀權限。
這種行為對于root用戶來說尤其重要。然而,實際上的確存在這種情況:希望用戶以root用戶或所定義的其他用戶的身份訪問遠程文件系統上的文件。
NFS允許指定訪問遠程文件的用戶--通過用戶標識號(UID)和組標識號(GID),可以禁用正常的squash行為。
用戶映射的選項:
root_squash:此選項不允許root用戶訪問掛載上來的NFS卷
no_root_squash:此選項允許root用戶訪問掛載上來的NFS卷
all_squash:此選項對于公共訪問的NFS卷來說非常有用,它會限制所有的UID和GID,只使用匿名用戶。缺省設置是no_all_squash
anonuid和anongid:這兩個選項將匿名UID和GID修改成特定用戶和組帳號
查看NFS服務器端共享的文件系統:
showmount -e NFSSERVER_IP
掛載NFS文件系統:
mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_point
開機自動掛載nfs:編輯/etc/fstab文件,添加如下格式的內容
SERVER:/PATH/TO/EXPORTED_FS/mnt_pointnfsdefaults,_netdev0 0
客戶端掛載時可以使用的特殊選項:
Client
Mounting remote directories
Before mounting remote directories 2 daemons should be started first:
rpcbind
rpc.statd
rsize:其值是從服務器讀取的字節數(緩沖)。默認為1024。若使用比較高的值,如8192,可以提高傳輸速度
wsize:其值是寫入到服務器的字節數(緩沖)。默認為1024。若使用比較高的值,如8192,可以提高傳輸速度
The timeo value is the amount of time, in tenths of a second, to wait before resending a transmission after an RPC timout.
After the first timeout, the timeout value is doubled for each retry for a maximum of 60 seconds or until a major timeout occurs.
If connecting to a slow server or over a busy network, better performance can be achiveved by increasing this timeout value.
The intr option allows signals to interrupt the file operation if a major timeout occurs for a hard-mounted share.
exportfs:維護exports文件導出的文件系統表的專用工具
export -ar:重新導出所有的文件系統
export -au:關閉導出的所有文件系統
export -u FS:關閉指定的導出的文件系統
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。