Linux----------nfs服務器的搭建及常識

 

1、nfs簡介linux

nfs(network file system)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它容許網絡中的計算機之間經過TCP/IP網絡共享資源。vim

nfs主要適用用linux與Unix系統間文件共享,因爲是nfs是明文傳輸,沒法加密,並且只能基於IP認證,因此通常用於公司或校園的局域網。服務器

nfs的優勢就是能大量節省本地存儲空間,將經常使用的數據存放在一臺NFS服務器上且能夠經過網絡訪問,並且訪問的時候就跟訪問本身的家目錄同樣方便,並且數據同步很是穩定、迅速。網絡

nfs是運行在應用層的協議,監聽於2049/tcp端口和2049/udp套接字。app

 

2、nfs的組成async

nfs能夠由一臺nfs服務器和N臺客戶機組成tcp

客戶機經過tcp/ip協議網絡遠程訪問存放在NFS服務器上的數據ide

在nfs服務器正式啓用前,根據實際環境和需求,配置一些nfs參數測試

 

3、nfs的應用場景ui

多個機器共享一臺CDROM或其餘設備,這樣比多臺機器都裝一臺CDROM方便的多

大型局域網內,配置一臺NFS服務器用於放置全部用戶的home目錄,無論你周圍局域網哪臺工做站上登陸,都是同一目錄,能給工做帶來極大的方便

不一樣客戶端若是經過NFS觀看影視文件,能節省大量本地空間

在客戶端完成的工做數據,能夠備份到NFS服務器上本身的路徑下

 

4、nfs的工做原理

nfs是經過rpc(遠程過程調用協議)來實現網絡文件系統共享的,rpc是經過網絡從遠程計算機上請求服務器,不須要經過底層網絡技術的協議

nfs服務器端運行了四個進程:

nfsd

mountd

idmapd

portmapper

idmapd       ----實現用戶帳號的集中映射,把全部的帳號都映射成NFSNOBODY,但在訪問時卻能以本地用戶訪問,因此須要目錄的權限

mountd       ----用戶驗證客戶端是否在容許訪問此NFS文件系統的客戶端列表中,在就容許訪問

nfsd            ----nfs的守護進程,監聽在2049端口上

portmapper ---nfs服務器的rpc服務,監聽在111端口,用於管理遠程過程調用

舉個例子說明工做過程:

客戶機A想查看file文件的信息,此信息存儲在遠程NFS服務器端主機B(掛載在本地目錄/nfs中),A把查看文件信息的請求發給內核,內核經過NFS模塊明白是遠程主機B上的,內核經過RPC協議吧請求封裝成rpc請求經過tcp111端口發給主機B的portmapper,portmapper告訴A主機B主機的mountd服務所在端口,而後A去找mountd請求驗證,mountd看他有的容許列表,若是A在表內,就給一個令牌給A,A拿着這個令牌去找B主機的nfsd進程,請求查看須要的文件,B主機的nfsd進程發起本地調用,向B內核請求查看主機A要查看的文件信息,B內核執行系統調用,將結果返回給nfsd服務,nfsd服務器收到後將結果封裝成rpc請求報文並用過tcp/ip協議發給主機A

 

5、配置文件

nfs的主配置文件是/etc/exports,此文件定位NFS系統的輸出目錄(共享目錄),訪問權限參數,容許訪問的主機參數,該文件默認爲空,文件每一行提供一個共享目錄的使者,其格式爲

《共享目錄》 【 客戶端1IP(權限參數)】 【客戶端2IP(權限參數)】

共享目錄爲你想要共享出去的目錄絕對路徑

客戶端ip爲你想共享給哪些或哪一個主機

權限參數爲用戶訪問的權限,用戶映射的選項

exportfs  -r 重讀配置文件,使其當即生效,無需重啓服務

訪問權限選項:

訪問權限選項 說明
ro 設置輸出目錄只讀
rw 設置輸出目錄可讀寫

用戶映射選項:

用戶映射選項 說明
all_squash 將遠程訪問的全部普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody)
no_all_squash 不將遠程訪問的全部普通用戶及所屬用戶組都映射爲匿名用戶或用戶組(默認設置)
root_squash 將root用戶及所屬用戶組都映射爲匿名用戶或用戶組(默認設置)
no_root_squash 不將root用戶及所屬用戶組都映射爲匿名用戶或用戶組
anonuid=xxx 將遠程訪問的全部用戶都映射爲匿名用戶,並指定該匿名用戶爲本地用戶賬戶(UID=xxx)
anongid=xxx 將遠程訪問的全部用戶組都映射爲匿名用戶組,並指定該匿名用戶組爲本地用戶組(GID=xxx)

經常使用的其餘選項:

其餘選項 說明
secure 限制客戶端只能從小於1024的TCP/IP端口鏈接NFS服務器(默認設置)
insecure 容許客戶端從大於1024的TCP/IP端口鏈接NFS服務器
sync 將數據同步寫入內存緩衝區或磁盤中,效率較低,但可保證數據一致性
async 將數據先保存在內存緩衝區中,必要時才寫入磁盤
wdelay 檢查是否有相關的寫操做,若是有則這些寫操做一塊兒執行,可提升效率(默認設置)
no_wdelay 如有寫操做則當即執行,應與sync配置使用
subtree_check 若輸出目錄是一個子目錄,則NFS服務器將檢查其父目錄的權限(默認設置)
no_subtree_check 即便輸出目錄是一個子目錄,NFS服務亦不檢查其父目錄的權限,可提升效率
nohide 若將一個目錄掛載到另外一個目錄之上,則原來的目錄一般就被隱藏起來或看起來像空的同樣。要禁用這種行爲,需啓用hide選項

 

6、nfs使用:

nfs安裝

yum -y install rpcbind nfs-utils

啓動服務

systemctl  start rpcbind nfs-server

shoumount命令測試共享目錄狀態

  -a  顯示指定NFS服務器的全部客戶端主機及其所鏈接的目錄

  -d  顯示指定NFS服務器的已被客戶端鏈接的全部輸出目錄

  -e顯示指定NFS服務器的所輸出的共享目錄

 

客戶端臨時掛載NFS文件系統

yum install rpcbind nfs-utils -y

mount -t nfs  ip:/path1    /path2  

客戶端設置自動掛載nfs

vim /etc/fstab

ip/path   /path2  nfs defaults,_netdev  0 0 

mount -a 

df -h

檢查輸出目錄所使用的選項:
在配置文件/etc/exports中,即便在命令行中只設置了一兩個選項,但在真正輸出目錄時,實際上還帶有不少默認的選項。經過查看/var/lib/nfs/etab文件,能夠看到具體使用了何選項

 

7、NFS使用實例:

1.手動搭建一個nfs服務器
開放/nfs/shared目錄,供全部用戶查閱資料
開放/nfs/upload目錄爲172.16.12.0/24網段的數據上傳目錄,並將全部用戶及所屬的用戶組都映射爲nfs-upload,其UID與GID均爲300

服務器端
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
yum install rpcbind nfs-utils
mkdir /nfs
chmod 775 /nfs
groupadd -g 300 nfs-upload
useradd -u 300 -g 300 nfs-upload
echo " /nfs 172.16.12.0/24(ro,all-squash,root_squash,anonuid=300,anongid=300,sync)" > /etc/export
systemctl start rpcbind nfs-server
systemctl enable nfs-server
systemctl enable rpcbind
exportfs -r

客戶端

mkdir /nfs
mount -t nfs 192.168.160.46:/data/nfs /nfs


vim /etc/fstab
192.168.160.46:/data/nfs /nfs nfs defaults,_netdev 0 0

mount- a
df -h

 

相關文章
相關標籤/搜索