當前位置:首頁 » 雲伺服器 » 搭建nfs伺服器客戶端

搭建nfs伺服器客戶端

發布時間: 2023-03-19 15:22:02

① NFS服務搭建及數據無縫遷移

五一節辦公室要停電,機房雖有UPS,但也支撐不了8小時。
因生產環境有業務系統掛了辦公室機房的NAS存儲,故需要進行遷移,步驟記錄如下:

先閑談下技術-----------------------
NFS和samba的區別
samba是混合型網路中的共享服務,windows伺服器可建samba服務,linux伺服器也可建samba服務
nfs只面向unix、linux間的共享,linux伺服器可建nfs服務(winodws系統也可以掛載nfs,就是有點不穩定)

NFS伺服器上的操作--------------------------

nfs伺服器操作系統版本:
[root@c7110 ~]# more /etc/system-release
CentOS Linux release 7.9.2009 (Core)

nfs伺服器安裝nfs服務
[root@c7110 ~]# yum -y install nfs-utils rpcbind

創建nfs目錄,並授權
[root@c7110 ~]# mkdir /opt/nfs-test
[root@c7110 ~]# chmod 777 /opt/nfs-test

編輯nfs服務配置文件
[root@c7110 ~]# vi /etc/exports
內容如下:
/opt/nfs-test *(rw,root_squash,all_squash,sync)

重新載入nfs配置:
[root@c7110 ~]# exportfs -r

nfs服務設置開機啟動
[root@c7110 ~]# systemctl enable rpcbind
[root@c7110 ~]# systemctl enable nfs
[root@c7110 ~]# systemctl enable nfs-lock
[root@c7110 ~]# systemctl enable nfs-idmap

啟動nfs服務
[root@c7110 ~]# systemctl start rpcbind
[root@c7110 ~]# systemctl start nfs
[root@c7110 ~]# systemctl start nfs-lock
[root@c7110 ~]# systemctl start nfs-idmap

查看nfs服務啟動後,所監聽的埠信息:
[root@c7110 ~]# rpcinfo -p

linux伺服器伺服器上操作-------------------------------
業務伺服器安裝nfs軟體客戶端
[root@c7111 ~]# yum -y install nfs-utils

建立一個掛載目錄
[root@c7111 ~]# mkdir /opt/test-m

掛載nfs伺服器共享出來的目錄
[root@c7111 ~]# mount -t nfs 10.x.x.10:/opt/nfs-test /opt/test-m/

查看下已掛載的nfs
[root@c7111 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 8.8M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 2.3G 95G 3% /
/dev/sda1 1014M 171M 844M 17% /boot
tmpfs 297M 0 297M 0% /run/user/0
10.x.x.6:/opt/nfs-test 97G 4.1G 93G 5% /opt/test-m

經測試,數據可讀可寫,證明nas服務沒有問題,於是進行數據同步,數據同步用rsync命令。

rsync -avp [email protected]::nas_6 /mnt/guidang/ --password-file=/root/rsync_pass --bwlimit=100000

數據同步完,通知研發進行掛載切換。研發同事在測試時,發現文件屬性中的uid及gid與原來的不一致,有些擔心,於是又小完善了一下NFS服務。

編輯nfs服務配置文件
[root@c7110 ~]# vi /etc/exports
內容如下:
/opt/nfs-test *(no_all_squash,anonuid=600,anongid=600)

重新載入nfs配置:
[root@c7110 ~]# exportfs -r

② 搭建NFS伺服器

NFS 是Network File System的縮寫,即網路文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網路讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網路訪問位於伺服器磁碟中的數據,是在類Unix系統間實現磁碟文件共享的一種方法。

NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procere Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的。

NFS應用場景,常用於高可用文件共享,多台伺服器共享同樣的數據,可擴展性比較差,本身高可用方案不完善,取而代之的數據量比較大的可以採用MFS、TFS、HDFS等等分布式文件系統。

1. 環境准備兩台Centos7.6虛擬機:

服務端:192.168.199.180

客戶端:192.168.199.190

2.創建用戶,指定用戶訪問共享文件夾

useradd test   #創建test用戶

                                   passwd   test  #設置test密碼為123456

6.編輯nfs主配置文件/etc/exports;並添加以下內容:

/www  192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)     

參數詳解:

NFS安裝完畢,需要創建共享目錄,共享目錄在/etc/exports文件裡面配置,可配置參數如下:

/www  192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)

第一列/www 表示需要共享的目錄

IP表示允許哪個客戶端訪問

IP後括弧里的設置表示對該共享文件的許可權

ro                      只讀訪問

rw                      讀寫訪問

sync                    所有數據在請求時寫入共享

hide                    在NFS共享目錄中不共享其子目錄

no_hide                 共享NFS目錄的子目錄

all_squash              共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。

no_all_squash           保留共享文件的UID和GID(默認)

root_squash             root用戶的所有請求映射成如anonymous用戶一樣的許可權(默認)

no_root_squas           root用戶具有根目錄的完全管理訪問許可權

anonuid                 指定用戶UID

anongid                 指定用戶組ID

7.啟動nfs服務:systemctl start nfs

8.查看nfs及rpc埠是否啟動成功:

9. rpcinfo -p 192.168.199.180 查看,如圖所示:

RPC命令詳解: rpcinfo 命令會向 RPC 伺服器發出 RPC 調用,並將得到的結果顯示出來。rpcinfo 會列出所有在主機 host 上向 rpcbind 注冊的 RPC 服務。

10. 使用showmount -e localhost 命令用於查詢NFS伺服器的相關信息,顯示NFS伺服器的輸出清單。

11. 創建共享文件夾目錄www ;並在www目錄下新建jfe.txt並加入內容,授予www用戶用戶組的nfsnobody.nfsnobody許可權

mkdir -p /www                       #創建www共享目錄

touch  /www/jfe.txt               #在www目錄下創建jfe.txt文件

chown  -R  test:test  /www  #授權用戶用戶組test給www目錄

二、安裝客戶端:(192.168.199.190)

1. yum  install nfs-utils  -y

客戶端上不需要啟動nfs服務,只是為了使用showmount工具

2. 查看RPC埠是否啟動:netstat -ntpl

3.使用showmount -e 192.168.199.180命令顯示NFS伺服器輸出結果:

4.遠程掛載www共享目錄到客戶端的/mnt目錄下:mount -t nfs 192.168.199.180:/www /mnt

5. 進入到/mnt掛載盤符目錄下cd /mnt  ;確認是否有jfe.txt文件存在及查看文件許可權屬於誰:

確認文件已存在,用戶用戶組均為test用戶所屬,其他用戶不能操作此目錄下的文件及文件夾;包括root用戶都不能操作刪除及修改文件,例如root用戶都不能刪除jfe.txt文件:

6.如果也只需要客戶端的test用戶去對www共享文件夾有增刪改查許可權的話,需要以下步驟:

a. 在客戶端創建相同的test用戶,並保證UID一致的情況下才能對共享目錄有許可權進行操作

b. 設置tets用戶密碼為123456

c. 查看test用戶UID參數值是多少  cat /etc/passwd

d. 那麼問題來了,服務端的test用戶UID為1002,客戶端test用戶UID為1004,共享目錄在客戶端的許可權也為1002,那麼1004是沒有許可權去訪問共享目錄的,可參考下目前狀態的錯誤圖;首先切換到test用戶,然後進入到/mnt目錄下進行jfe.txt文件刪除看是否報錯:

e. 經過測試同樣的tets用戶,但是客戶端的用戶UID跟服務端不一致,所以是沒有許可權刪除文件的,首先退出tets用戶,切換root用戶後,需要修改客戶端test用戶UID跟服務端一致即可解決問題,命令:usermod -u 1002  tets

7.修改完客戶端test用戶UID為1002後,切換到test用戶,查看是否有jfe.txt文件存在;然後追加新內容123456到jfe.txt中;最後新建123.txt文件成功,代表NFS共享目錄指定用戶讀取(增刪改查)成功。

8. 在NFS服務端把NFS跟RPC服務加入開機自啟動:

systemctl enable nfs-server

systemctl enable rpcbind

9. 在客戶端將NFS遠程共享目錄掛載命令加入fstab配置,不然伺服器重啟掛載點將消失,加入以下配置到/etc/fstab配置文件

192.168.199.180:/www     /mnt       nfs     defaults   0 0

③ linux配置nfs步驟

NFS的配置過程很簡單。在伺服器端中編輯 /etc/exports 文件,添加如下內容: /home/nfs-share 192.168.1.122 (rw,sync)
第一項是要共享的目錄,後者為共享的配置參數一般為: (rw,sync,no_root_squash,no_all_squash,no_subtree_check)
然後開啟NFS和portmap服務:
/etc/init.d/nfs start //用service nfs start也可以 /etc/init.d/portmap start //用service portmap stasrt也可以
在centos6.5中portmap已經改為rpcbind 在客戶端,用mount –t nfs 192.168.123:/home/nfs-share /home/remote_file掛載伺服器端的共享目錄到本地的/home/remote-file掛載點,然後我們就可以在客戶端上應用到遠程主機上的/home/nfs-share目錄了。想要系統在開機時自動掛載,修改/etc/fstab文件,把NFS伺服器的共享目錄添加進去就可以了,這個不用多說。

如何知道遠程主機上的共享目錄情況呢?使用showmount命令,這個命令需要root許可權。它有三個選項(記住這三個選項代表的含義: showmount –a IP 顯示指定NFS伺服器的客戶端以及伺服器端在客戶端的掛載點 showmount –d IP 顯示指定NFS伺服器在客戶端的掛載點 showmount –e IP 顯示指定NFS伺服器上的共享目錄列表(或者叫輸出列表) 我們輸入命令showmount –a 192.168.1.123:

圖片客戶端中出現的mount clntudp_create: RPC: Program not registered錯誤是怎麼回事?噢,我剛才重啟了一下伺服器端,重啟後NFS服務沒有開啟。 我們開啟伺服器端的NFS服務,再從客戶端上查看一下NFS伺服器的情況:

Showmount –a顯示出NFS伺服器192.168.1.123的共享目錄被客戶端192.168.122掛載到/home中;

在showmount -e IP,出現clnt_create: RPC: Port mapper failure - Timed out報錯
解決方案:
被訪問的NFS伺服器上的防火牆沒有添加規則,向iptables裡面添加以下查看的所有埠即可(目前解決的方法,當然你也可以關閉防火牆,不過這樣是比較不安全的,如果你的nfs作用不大,建議你另選別的應用來替代吧!畢竟開那麼多的埠,比較不安全呀!)

通過#rpcinfo -p 10.10.209.148
[root@rh01 /]# rpcinfo -p 10.10.209.148program vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 52943 status100024 1 tcp 37706 status100011 1 udp 875 rquotad100011 2 udp 875 rquotad100011 1 tcp 875 rquotad100011 2 tcp 875 rquotad100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100227 2 tcp 2049 nfs_acl100227 3 tcp 2049 nfs_acl100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100227 2 udp 2049 nfs_acl100227 3 udp 2049 nfs_acl100021 1 udp 37438 nlockmgr100021 3 udp 37438 nlockmgr100021 4 udp 37438 nlockmgr100021 1 tcp 46331 nlockmgr100021 3 tcp 46331 nlockmgr100021 4 tcp 46331 nlockmgr100005 1 udp 57177 mountd100005 1 tcp 43147 mountd100005 2 udp 49154 mountd100005 2 tcp 54810 mountd100005 3 udp 55707 mountd100005 3 tcp 58309 mountd
[root@rh01 /]#

剛才在重啟NFS服務的時候,細心的話可以注意到,我們在輸入命令/etc/init.d/nfs start開啟nfs服務時,系統還自作主張地開啟了NFS quotas等其它3個服務。

怎麼回事?我們只輸入了一條啟動NFS服務的命令,它怎麼額外的啟動了3個服務?後面的啟動portmap服務又是怎麼回事? 我們首先要了解一點:NFS文件系統要提供服務單靠本身的NFS服務是不夠的,還需要調用其它服務,這個其它服務就是RPC(remote procere call,遠程過程調用)服務和portmap服務。由於NFS服務本身不提供文件傳輸功能,我們要遠程使用NFS文件系統就需要RPC服務的支持;而portmap服務用來為RPC服務進行動態埠分配和映射,所以portmap服務也是NFS服務所必須的。

我們查看一下服務的啟動情況:

所遇錯誤:
/etc/init.d/nfs-kernel-server: 沒有那個文件或目錄
解決方案:
沒有配置、安裝NFS
Linux 下配置NFS服務
1、安裝

2、配置

3、客戶端

所遇問題:centos6.5
portmap: 未被識別的服務
解決方案:
由於在6系列裡面,portmap已經改名了 ,6系列需要使用 service rpcbind start啟動[root@unix-big-bang ~]# service portmap start
portmap: 未被識別的服務
[root@unix-big-bang ~]# service rpcbind status
rpcbind (pid 1312) is running...
[root@unix-big-bang ~]#

好文共賞:
linux nfs文件共享

◆一、概念
NFS是網路文件系統(Network File System)的簡稱,是分布式計算機系統的一個組成部分,可實現在異構網路上共享和裝配遠程文件系統。
NFS由SUN公司開發,目前已成為文件服務的一種標准(RFC1904,RFC1813)。其最大的功能就是可以通過網路,讓不同 操作系統 的計算機可以共享數據,所以也可以看作是一個文件伺服器。NFS是除了SAMBA之外Windows與Linux及Unix與Linux之間通信的方法。

理想條件下的NFS 網路拓撲結構

1、設置Linux系統之間的文件共享(Linux與Windows中間文件共享採用SAMBA服務);
2、NFS只是一種文件系統,本身沒有傳輸功能,是基於RPC協議實現的,才能達到兩個Linux系統之間的文件目錄共享;
3、NFS為C/S 架構 ;
◆二、伺服器配置
1、配置文件
主要配置文件為:/etc/exports
格式為: 共享目錄 可mount主機IP(參數1,參數2,……)
如:/var/nfs 172.20. . (rw,sync,no_rootl_squash)
說明:必須注意nfs/目錄的訪問許可權,必須設置成777許可權;父目錄/var許可權無要求,普通的755即可;
2、啟動相關服務
然後依次啟動相關服務:portmap,nfslock,nfs
service portmap start
service nfslock start
service nfs start
關閉順序相反。
3、檢查共享目錄
隨後可以採用showmount –e查看一下,看看共享的目錄情況:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
OK,到此為止,NFS伺服器搭建完畢;
◆三、客戶端配置
1、確保portmap運行
客戶端必須確保RPC協議相應的portmap正常運行,否則mount將失敗;
2、掛載/var/nfs目錄(本地掛載點為/mnt/nfs)
mount -t nfs 172.20.65.16:/var/nfs /mnt/nfs
成功mount以後,即可同本地目錄一樣隨意操作;
◆四、其它相關命令
1、當修改了/etc/exports文件後,可以不用重新啟動nfs服務,直接採用exports –rv 即可重新導出共享目錄;
該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :在 export 的時候,將詳細的信息輸出到屏幕上。
具體例子:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
[root@ns var]# exportfs –au #全部卸載
[root@ns var]# showmount -e
Export list for ns.osserver:
[root@ns var]# exportfs –rv #全部重新 export 一次
exporting 172.20. . :/var/nfs
[root@ns var]#
2、showmout命令對於NFS的操作和查錯有很大的幫助,所以我們先來看一下showmount的用法
showmout
-a :這個參數是一般在NFS SERVER上使用,是用來顯示已經mount上本機nfs目錄的cline機器。
-e :顯示指定的NFS SERVER上export出來的目錄。
例如:
[root@localhost ~]# showmount -e 172.20.16.139
Export list for 172.20.16.139 :/root/share 172.20.16.137
[root@ns var]# showmount -a
All mount points on localhost.localdomain: :/root/share,172.20. . :/root/share,172.20.16. :/root/share,172.20.16.139:/nfsshare,172.20.16.139:/root/share172.20.16.137: 172.20.16.137:,172.20. . 172.20.16.137:,172.20.16. 172.20.16.137:/root/share172.20.16.139: 172.20.16.139:,172.20. . 172.20.16.139:,172.20.16. 172.20.16.139:,172.20.16.139172.20.16.139:DEFAULT
◆五、常見問題解答
1、提示:mount to NFS server 餄.20.67.203' failed: server is down.
解決方案:可能是NFS伺服器的防火牆有問題;
2、提示:mount: RPC: Timed out
解決方案:由於RPC協議沒運行;啟動portmap服務;
也有可能是防火牆問題;Server/Client均有可能。

④ NFS伺服器的安裝與配置

由於實驗室的項目需要實現在CephFS之上建立NFS之上,所以記錄一下NFS伺服器的安裝與配置流程。

NFS 伺服器可以讓客戶端將網路遠程的 NFS 伺服器分享的目錄,直接掛載到本地端的機器當中。本地端的機器通過直接讀寫掛載的目錄,就可以同步到NFS伺服器之上。

系統平台:Ubuntu 14.04

NFS Server IP:192.168.1.2

iptables關閉: Firewall is disable.(NFS埠使用在默認情況下是不固定,所以若配置NFS伺服器需要搭配防火牆使用的話,請配置固定埠)

SELINUX=disabled

NFS的安裝只需要安裝rpcbind與nfs-server就可以對外提供服務了。

NFS伺服器的主要配置文件就是:/etc/exports。不過這個配置文件不一定會存在,可能需要使用 vim 主動新建這個文件。

/etc/exports文件由以下選項構成:

每一行最前面是要分享出來的目錄,目錄可以依照不同的許可權分享給不同的主機。若許可權參數不止一個時,則以逗號 (,) 分開。且主機名與小括弧是連在一起的喔!其中參數是可選的,當不指定參數時,nfs將使用默認選項。默認的共享選項是 sync,ro,root_squash,no_delay 當主機名或IP地址為空時,則代表共享給任意客戶機提供服務。

下面是一些NFS共享的常用參數:

這里我們使用了NFS v3的配置,如下圖所示:

配置完/etc/exports之後,接下來就可以啟動NFS伺服器了。

為了使NFS伺服器能正常工作,需要啟動rpcbind和nfs-kernel-server兩個服務,並且rpcbind一定要先於nfs-kernel-server啟動。

若要開機自啟動nfs服務,可以通過sysv-rc-conf配置自啟動服務。

客戶端的掛載很簡單,先建立一個掛載目錄

之後客戶端對應的文件目錄便掛載上對應的文件系統了。

客戶端可以通過命令配置開機自啟動掛載NFS的文件系統。

將對應的命令 mount -t nfs 192.168.12:/tmp /mnt/nfs
添加至/etc/rc.d/local,不要嘗試在直接在/etc/fstab/里掛載

小結 :梳理了一下在ubuntu之下NFS伺服器的安裝與配置。當然RedHat系列的發行版也是大同小異。若有疏漏,望指點斧正。

⑤ NFS 深入配置

1.1 NFS配置參數許可權

參數名稱
參數用途

rw
read-write,表示可讀寫許可權

ro
read-only,表示只讀許可權

sync
請求或寫入數據時,數據同步寫入到硬碟才完成

async
非同步寫到遠程緩沖區

all_squash
不管客戶端什麼用戶,到服務端都會被壓縮成匿名用戶

anonuid
匿名用戶的UID

anongid
匿名用戶的GID

在配置文件內設置共享目錄時所給予的許可權:
[root@nfs01 ~]$ cat /etc/exports
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)

配置好NFS服務後,/var/lib/nfs/etab文件中可以看到的配置參數以及默認自帶的參數:
[root@nfs01 ~]$ cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,
anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash

1.1.1 更改NFS默認用戶
1.1.1.1 nfs01服務端NFS、以及所有客戶端:
[root@nfs01 ~] id www
uid=1111(www) gid=1111(www) 組=1111(www)

1.1.1.2 服務端NFS特殊配置
配置文件增加如下內容:
[root@nfs01 ~]$ tail -2 /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1 10.0.0.0/24(ro)

共享目錄更改用戶和用戶組:
[root@nfs01 ~] ls -ld /data
drwxr-xr-x 2 www www 70 4月 18 10:05 /data

1.1.1.3 服務端NFS重啟
[root@nfs01 ~]$ systemctl reload nfs

1.1.1.4 每個客戶端掛載
[root@web01 ~] df -h
文件系統 容量 已用 可用 已用% 掛載點
172.16.1.31:/data 19G 1.8G 18G 10% /data

新創建文件驗證用戶名:
[root@web01 /data]# touch new_web01.txt
[root@web01 /data]# ls -l
總用量 0
-rw-r--r-- 1 www www 0 4月 18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月 17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月 17 12:30 oldgirl.txt

1.2 NFS服務重點知識梳理
  當多個NFS客戶端訪問伺服器端讀寫文件時,需要具有以下幾個許可權:

NFS伺服器/etc/exports設置需要開放許可寫入的許可權,即伺服器端的共享許可權
NFS伺服器實際要共享的NFS目錄許可權具有可寫入w的許可權,即伺服器端本地目錄的安全許可權
每台機器都對應存在和NFS默認配置UID的相同UID的用戶

下表列出了常用的重點NFS服務文件或命令。

NFS常用路徑
說明

/etc/exports
NFS服務主配置文件,配置NFS具體共享服務的地點,默認內容為空

/var/lib/nfs/etab
NFS配置文件的完整參數設定的文件

/proc/mounts
客戶端的掛載參數

1.3 NFS客戶端掛載深入
1.3.1 mount -o 參數選項及系統默認設置

參數
參數意義
系統默認值

suid/nosuid
當掛載的文件系統上有任何SUID的程序時,只要使用nosuid就能夠取消設置SUID的功能
suid

rw/ro
可以指定文件系統是只讀(ro)或可讀寫(rw)
rw

dev/nodev
是否可以保留裝置文件的特殊功能
dev

exec/noexec
是否具有執行文件的許可權
exec

user/nouser
是否允許用戶擁有文件的掛載與卸載功能
nouser

auto/noauto
auto指的是「mount -a」時會不會被掛載的項目,如果不需要這個分區隨時被掛載,可以設置為noauto
auto

1.3.2 mount -o 參數詳細說明

參數選項
說明

async
涉及文件系統I/O的操作都是非同步處理,即不會同步寫到磁碟,能提高性能,但會降低數據安全。

sync
有I/O操作時,都會同步處理I/O,會降低性能,但數據比較安全。

atime
在每一次數據訪問時,會更新訪問文件的時間戳,是默認選項,在高並發的情況下,可以通過添加noatime來取消默認項。

ro
以只讀的方式掛載一個文件系統

rw
以可讀寫的方式掛載一個文件系統

auto
能夠被自動掛載通過-a選項

noauto
不會自動掛載文件系統

defaults
這是fstab里的默認值,包括rw、suid、dev、exec、auto、nouser、async

exec
允許文件系統執行二進制文件,取消這個參數,可以提升系統安全性。

noexec
在掛載的文件系統中不允許執行任何二進製程序,進僅對二進製程序有效。

noatime
訪問文件時不更新文件的時間戳,高並發情況下,一般使用該參數

nodiratime
不更新文件系統上的directory inode時間戳,高並發環境,推薦顯式應用該選項,可以提高系統I/O性能。

nosuid
不允許set-user-identifier or set-group-identifier位生效。

suid
允許set-user-identifier or set-group-identifier位生效。

nouser
禁止一個普通用戶掛載該文件系統,這是默認掛載時的默認選項。

remount
嘗試重新掛載一個已經掛載了的文件系統,這通常被用來改變一個文件系統的掛載標志,從而使得一個只讀文件系統變的可寫,這個動作不會改變設備或者掛載點。當系統故障時進人single或rescue模式修復系統時,會發現根文件系統經常會變成只讀文件系統,不允許修改,此時該命令就派上用場了。具體命令為:mount -o remount,rw /,表示將根文件系統重新掛載使得可寫。single或rescue模式修復系統時這個命令十分重要。

dirsync
目錄更新時同步寫人磁碟。

1.3.3 企業生產場景NFS共享存儲優化

硬體:使用ssd/sas磁碟,可以買多塊,製作成raid10。
NFS伺服器端配置:

/data 10.0.0.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)

NFS客戶端掛載優化配置命令:

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,
wsize=131072 172.16.1.31:/data /mnt <===兼顧安全性能

對NFS服務的所有伺服器內核進行優化,執行命令如下:

cat >>/etc/sysctl.conf <<EOF
net.core.wmen_default = 8388608
net.core.rmen_default = 8388608
net.core.wmen_max = 16777216
net.core.rmen_max = 16777216
EOF

執行sysctl -p 生效

大型網站NFS網路文件系統的替代軟體為分布式文件系統,如:Moosefs(mfs)、GlusterFS、FastDFS。

1.4 NFS系統應用的優缺點
1.4.1 優點

簡單,容易上手,容易掌握。
NFS文件系統內數據是在文件系統之上的,即數據是能看得見的。
部署快速維護簡單方便,且可控,滿足需求就是最好的。
可靠,從軟體層面上看,數據可靠性高,經久耐用。
服務非常穩定。

1.4.2 缺點(局限)

存在單點故障,如果NFS服務端宕機了,所有客戶端都不能訪問共享目錄。
在大數據高並發的場合,NFS效率、性能有限。
客戶端認證是基於IP和主機名的,許可權要根據ID識別,安全性一般。
NFS數據是明文的,NFS本身不對數據完整性進行驗證。
多台客戶機掛載一個NFS伺服器時,連接管理維護麻煩。

1.4.3 解決性能問題的方法

使用CDN加速以及自己搭建文件緩存服務(squid、nginx、varnish)。
把多個目錄分配到不同的NFS伺服器上。
棄用NFS(即讀寫分離)。

使用分布式文件系統。

⑥ Ubuntu 16.04 搭建 NFS 文件共享伺服器

伺服器端需要安裝 nfs-kernel-server 軟體包:
$ sudo apt-get update
$ sudo apt-get install nfs-kernel-server

默認情況下,NFS 伺服器上定義了某個共享目錄,則該目錄及其子目錄下的所有文件都可被訪問。
出於對安全的考慮,客戶端任何需要 超級用戶 (即 root 用戶,UID=0 & GID=0)許可權的文件操作都默認映射到 UID=65534 和 GID=65534 的用戶,即 Ubuntu 系統中的 nobody:nogroup。
例如客戶端使用 root 許可權在掛載的共享目錄中創建文件時,該文件的 屬主 屬組 自動變為 nobody:nogroup ,而非 root:root

sudo mkdir -p /var/nfs/gernel
sudo mkdir -p /var/nfs/public
sudo chown nobody:nogroup /var/nfs/gernel

為了使 NFS 伺服器定義的共享文件可被指定的客戶端主機訪問,需要在伺服器端的 /etc/exports 文件中添加對應的記錄。
該文件的格式如下:
Directory Host(Options ...) Host(Options) #comment
關於 /etc/exports 文件的詳細語法格式可參考 man exports 。

文件示例:

列出 nfs 伺服器上的共享目錄

創建掛載點
sudo mkdir -p /mnt/nfs/gernel
sudo mkdir -p /mnt/nfs/public
sudo mkdir -p /mnt/nfs/starky

掛載遠程目錄
sudo mount 192.168.56.102:/var/nfs/gernel /mnt/nfs/gernel
sudo mount 192.168.56.102:/var/nfs/public /mnt/nfs/public
sudo mount 192.168.56.102:/home/starky /mnt/nfs/starky

許可權測試

NFS 的許可權設定基於 Linux 文件系統的許可權管理,即客戶端掛載遠程共享目錄後,會把它們當成本地磁碟目錄一樣對待,也是根據文件的屬主(組)及其對應的許可權設定來限制訪問。
gernel 目錄的屬主(組)為 nobody:nogroup(65534:65534),所以雖然該目錄為讀寫許可權,非 root 用戶無法執行新建操作。而 root 用戶由於 NFS 默認的安全機制,會自動映射到 nobody:nogroup。
由於我在客戶端和服務端都有一個名為 starky 的用戶,且它們的 UID:GID 都為1000:1000,所以服務端的 /home/starky 目錄可以直接被客戶端的 starky 用戶訪問。且由於 no_root_squash 選項,通過 sudo 命令創建的文件其屬主仍為 root(而不會再映射為 nobody)。
當然這會導致一些安全問題,比如多個客戶端同時都有 UID(GID)為1000的用戶(不管用戶名是什麼),則這些用戶會共享服務端 /home/starky 目錄里的文件許可權。

可編輯 /etc/fstab 文件令掛載共享目錄的 mount 操作成為系統的固定配置(手動輸入的 mount 命令屬於臨時掛載,重啟會自動卸載),使得系統重啟後可以自動掛載遠程文件系統。 /etc/fstab 文件的示例內容如下:

/etc/exports 文件的格式為: Directory Host(Options ...) Host(Options) #comment
其中的 Host 項用來指定可訪問對應共享目錄的主機,其格式可分為以下幾種:

傳輸協議
最初的 NFSv2 由於性能原因使用 UDP 協議,雖然 NFS 添加了自己的 包序列重組 錯誤檢查 功能,但 UDP 和 NFS 都不具備 阻塞控制 演算法,所以在大型的互聯網路環境中缺乏足夠的性能。
NFSv3 提供了 UDP 和 TCP 協議之間的選擇。NFSv4 只能使用 TCP 協議。
隨著 CPU,內存等硬體設備和網路傳輸速度的提高,最初由於性能需求而傾向 UDP 協議的選擇也變得不再必要。

State
NFSv2 和 NFSv3 是 無狀態 的連接,服務端不會跟蹤客戶端對共享目錄的掛載情況,而是使用 "cookie" 來記錄一次成功的掛載。"cookie" 不會因為伺服器重啟而刪除,可以用來在伺服器掛掉之後保留客戶端的連接信息。
NFSv4 是 有狀態 的連接,客戶端和服務端都會維護文件操作紀錄及文件鎖的狀態。所以不再需要 "cookie" 的使用。

文件鎖
早期版本的 NFS 協議(v2 & v3)由於是 無狀態 的連接,它們並不清楚哪些主機正在使用哪些文件。但是文件鎖的實現又需要獲取狀態信息。所以早期協議中的文件鎖是獨立於 NFS 實現的。
而 NFSv4 將文件鎖的實現整合到了核心協議中,雖然此舉增加了復雜度,但同時也解決了早期版本中的很多問題。
但是為了兼容使用 V2 和 V3 協議的客戶端,獨立的 locked statd 守護進程仍舊需要。

安全相關
NFS 協議最初在設計時並不關注安全性,NFSv4 通過引入對更強大的安全服務和身份驗證的支持,加強了該協議的安全性。

傳統的 NFS 協議大多使用 AUTH_SYS 驗證方式,基於 UNIX 的用戶和組標識。在這種方式下,客戶端只需要發送自己的 UID 和 GID 並與伺服器上的 /etc/passwd 文件內容作對比,以決定其擁有怎樣的許可權。
所以當多個客戶端存在 UID 相同的用戶時,這些用戶會擁有相同的文件許可權。更進一步,擁有 root 許可權的用戶可以通過 su 命令切換到任意 UID 登錄,伺服器會因此給予其對應 UID 的許可權。
為了防止上面的問題出現,伺服器可選擇使用更健壯的驗證機制比如 Kerberos 結合 NFS PRCSEC_GSS。

NFS 共享目錄的訪問控制基於 /etc/exports 文件中定義的主機名或 IP 地址。但是客戶端很容易針對其身份和 IP 地址造假,這也會導致一些安全問題。
NFSv4 只使用 TCP 作為自己的傳輸協議,而且通常只開放 2049 埠進行數據傳輸。在配置防火牆時,除了放開 2049 埠的限制外,還要時刻注意數據傳輸的源地址和目標地址。

win10 系統默認不能掛載 NFS 共享目錄,需要進入 控制面板 - 程序 - 程序和功能 - 啟用或關閉 Windows 功能 ,勾選上 NFS 服務

UNIX and Linux System Administration Handbook, 4th Edition
How to Mount an NFS Share Using a Windows 10 Machine

⑦ Linux 環境下搭建NFS服務

NFS(Network File System),網路文件存儲系統,它最早是由 Sun 公司開發的,也是 FreeBSD 支持的文件系統中的一個,它允許網路中的計算機之間通過TCP/IP 網路共享資源。通過 NFS 協議,我們本地 NFS 的客戶端應用可以透明的讀寫位於服務端 NFS 伺服器上的文件,就像訪問本地文件一樣方便。簡單的理解,NFS 就是可以透過網路,讓不同的主機,不同的操作系統可以共享存儲的服務。
NFS 在文件傳送或信息傳送過程中依賴 RPC(Remote Procere Call)協議,即遠程過程調用,NFS的各項功能都必須向 RPC 來注冊,如此一來 RPC 才能了解 NFS 這服務的各項功能 Port,PID,NFS 在伺服器所監聽的 IP 等,而客戶端才能透過 RPC 的詢問找到正確對應的埠,所以 NFS 必須要有 RPC 存在是才能成功的提供服務,簡單的理解二者關系:NFS 是一個文件存儲系統,而 RPC 是負責信息的傳輸。

通過上面的簡介,我們知道 NFS 服務需要依賴 RPC 服務,所以這里 NFS 服務端需要安裝 rpcbind 和 nfs-utils ,客戶端只需要安裝 nfs-utils 即可,由於我們選用 CentOS 系統,所以可以使用 yum 快速的安裝。

然後安裝 NFS 服務

另:Ubuntu 16.04 安裝命令

我們在服務端創建一個共享目錄 /data/share ,作為客戶端掛載在遠端入口,然後設置許可權

然後,修改 NFS 配置文件 /etx/exports

說明一下,這里配置後邊有很多參數,每個參數有不同的含義,具體可以參考下邊。此處,我配置了將 /data/share 文件目錄設置為允許IP為 192.168.0.0/24 區間的客戶端掛載。然後,如果客戶端IP不在該區間也想要掛載的話,可以設置IP區間更大或者設置為 * 即允許所有客戶端掛載,例如: /home *(ro, sync,insecure,no_root_squash) 設置 /home 目錄允許所有客戶端只讀掛載。

接下來,我們先啟動 RPC 服務

我們發現,啟動了 NFS 服務後,RPC 注冊的埠列表明顯增多。現在服務端都啟動起來了,在服務端看下是否正確載入了設置的 /etc/exports 配置

最後,在另一台Linux虛擬機上測試一下,是否能夠正確掛載。首先,我們可以在客戶端查看下NFS服務端設置可共享的目錄信息

然後,在客戶端創建掛載目錄/share

最後,掛載遠端目錄到本地 /share 目錄

可以看到,可以正確將遠端 NFS 目錄掛載到本地。注意:掛載點 /share 目錄必須已經存在,而且目錄中沒有文件或子目錄
最後,我們在 NFS 服務端 /data/share 目錄下創建一個文件,看下客戶端能否正確讀取並修改

都可以了,這里因為上面設置了 NFS 遠端目錄許可權為 rw 擁有讀寫許可權,如果設置為 ro ,那麼客戶端只能讀取,不能寫入。根據實際應用場景合理配置。
NFS 默認使用 UDP協議進行掛載,為了提供 NFS 的穩定性,可以使用 TCP 協議掛載,那麼客戶端掛載命令如下:

最後,卸載命令

⑧ 【NFS】CentOS7.x NFS伺服器和客戶端設置

NFS:Network file system,網路文件系統

sun公司1984年推出,用來在網路中的多台計算機間實現資源共享(包括象文件或cd-rom) 

設計的目的是:實現在不同系統間交互使用,所以它的通信協議採用與主機和操作系統無關的技術

NFS Server可以看作是File Server,它可以讓你的PC通過網路將遠端得NFS SERVER共享出來的檔案MOUNT到自己的系統中,在CLIENT看來使 用NFS的遠端文件就象是在使用本地文件一樣

FS協議從誕生到現在有多個版本:NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)

RPC(Remote Procere call)

NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這 些傳輸協議用到這個RPC功能的。

NFS本身就是使用RPC的一個程序,或者說NFS也是一個RPC SERVER.所以只要用到NFS的地方都要啟動RPC

服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這么理解RPC和NFS的關系:NFS 是一個文件系統,而RPC是負責負責信息的傳輸。 

nfs在系統中的後台守護進程: nfs 

nfs服務需要啟動的其他進程: 

rpc.nfsd:接收從遠程系統發來的NFS請求,並將這些請求轉化為本地文件系統請求 

rpc.mountd:執行被請求的文件系統的掛接和卸載操作 

rpc.portmapper:將遠程請求映射到正確的NFS守護程序 

rpc.statd:在遠程主機重啟時,提供加鎖服務 

rpc.quotaed:提供硬碟容量的管理能力,磁碟限額

在伺服器上使用 rpcinfo -p | grep -iE "service|NFS" 命令,顯示伺服器上可使用的 NFS 版本

#  rpcinfo -p | grep -iE "service|NFS"

表示伺服器可提供 NFS V3 和 NFS V4。

如果不需要krb5p,設置完就可以直接可以mount了

如果需要krb5p,在/etc/sysconfig/nfs文件中要設置

RPCNFSDARGS="-N 4"  

-N 表示禁用 ,也可以是"-N 3"或者"-N 2",這是代表NFS版本,NFSv2,3,4,改完這個要將服務restart

這一項必須要填,不然client端會報錯access錯誤,而server端不會有一點反應,連log中都不會出現報錯!

CentOS 7 NFS設置

https://huataihuang.gitbooks.io/cloud-atlas/service/nfs/setup_nfs_on_centos7.html

鳥哥的 Linux 私房菜 -- NFS 伺服器

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

CentOS 7.x NFS Server 的防火牆設定

http://blog.ilc.e.tw/blog/index.php?op=printView&articleId=682711&blogId=25793

CentOS 7 NFS伺服器和客戶端設置

http://blog.huatai.me/2014/10/14/CentOS-7-NFS-Server-and-Client-Setup/

Linux NFS參數配置

http://virues.iteye.com/blog/1345014

NFS各個版本之間的比較

https://blog.csdn.net/ycnian/article/details/8515517

系統管理指南:網路服務

https://docs.oracle.com/cd/E19253-01/819-7059/index.html

網路文件系統

https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.performance/nfs_ovw.htm

⑨ 本地NAS構建

由於阿里雲線上有NAS存儲,又不能公網訪問,所以本地通過軟體構建一個NAS以供測試。

NFS的掛載原理

NFS分為客戶端與伺服器端,一般設置為一個Server端,多個客戶端,也可設置為多對多,當伺服器端設置好共享目錄/data後,客戶端通過相應的訪問許可權,將共享目錄掛載到本地系統的某個目錄下,就可以透明的看到共享目錄里的文件了,依據伺服器制定的相應許可權做操作

NFS伺服器與客戶端的通信原理

客戶端NFS和服務端NFS通訊過程

1)首先伺服器端啟動RPC服務,並開啟111埠

2)啟動NFS服務,並向RPC注冊埠信息

3)客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS埠

4)服務端的RPC(portmap)服務反饋NFS埠信息給客戶端。

5)客戶端通過獲取的NFS埠來建立和服務端的NFS連接並進行數據的傳輸。

NFS系統守護進程

nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄伺服器;

mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。

當客戶端順利通過nfsd登錄NFS伺服器後,在使用NFS服務所提供的文件前,還必須通過文件使用許可權的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端許可權。

portmap:主要功能是進行埠映射工作。當客戶端嘗試連接並使用RPC伺服器提供的服務(如NFS服務)時,portmap會將所管理的與服務對應的埠提供給客戶端,從而使客戶可以通過該埠向伺服器請求服務。

環境:

新建一個虛擬機,系統安裝使用最小化安裝,可參照我前面的文章,有詳細介紹。一般情況是系統盤是和數據盤分開。系統盤在線上我一般情況是分配20G,如果是容器等應用系盤我會分配50G,當然如果是有很多鏡像的容器環境,那麼我會系統將/var/lib/docker等用單獨的數據盤來掛載。

安裝配置NAS文件共享存儲

1、服務端安裝

2、關閉防火牆

3、配置nas

配置文件:/etc/exports

共享目錄創建:

4. 本地NAS存儲目錄 192.168.230.0/24(授權訪問客戶端的地址段)

5. 重新載入NFS配置

參數說明:

rw:可讀寫的許可權

ro:只讀的許可權 anonuid:可以自行設定這個UID的值,這個UID必需要存在於你的/etc/passwd當中anongid:同anonuid,但是變成groupID就是了 sync:資料同步寫入到內存與硬碟當中 async:資料會先暫存於內存當中,而非直接寫入硬碟 insecure:允許從這台機器過來的非授權訪問

no_root_squash:登入NFS主機,使用該共享目錄時相當於該目錄的擁有者,如果是root的話,那麼對於這個共享的目錄來說,他就具有root的許可權,這個參數『極不安全』,不建議使用

root_squash:登入NFS主機,使用該共享目錄時相當於該目錄的擁有者。但是如果是以root身份使用這個共享目錄的時候,那麼這個使用者(root)的許可權將被壓縮成為匿名使用者,即通常他的UID與GID都會變成nobody那個身份

all_squash:不論登入NFS的使用者身份為何,他的身份都會被壓縮成為匿名使用者,通常也就是nobody

6. 啟動服務

7. 設置開機啟動

8. 查看埠佔用,以便開著防火牆的時候設置,如果閑麻煩,可以通過限制訪問IP

Linux nfs客戶端安裝

vi /ettc/hosts

在末尾加入

開機自動掛載

vi /etc/fstab

##尾行下面新增加一行寫入

註:_netdev表示設備需要網路

⑩ NFS筆記(二)NFS伺服器配置實例

一、NFS伺服器配置實例

實驗拓撲

二、實驗要求及環境

2.1實驗環境

NFS伺服器 IP:192.168.8.5

環境:

[root@server7 ~]# uname -a

Linux server7.ctos.zu 3.10.0-514.el7.centos.plus.i686 #1 SMP Wed Jan 25 12:55:04 UTC 2017 i686 i686 i386 GNU/Linux

[root@server7 ~]# cat /etc/redhat-release

CentOS release 7.3.1611 (AltArch)

客戶端IP:192.168.8.7

環境:

[root@client-A ~]# uname -a

Linux client-A.ctos.zu 2.6.32-696.el6.i686 #1 SMP Tue Mar 21 18:53:30 UTC 2017 i686 i686 i386 GNU/Linux

[root@client-A ~]# cat /etc/redhat-release

CentOS release 6.9 (Final)

2.2、實驗要求

NFS伺服器

1、/home/share 目錄可讀寫,並且不限制用戶身份,共享給192.168.8.0/24網段不的所有主機;

2、/home/data 這個目錄僅共享給192.168.8.7這台主機,以供該主機上面的這個用戶來使用,

也就是說在192.168.8.5和192.168.8.7上均有賬號,且賬號均為;

3、/home/upload 這個目錄做為192.168.8.0/24網段的數據上傳目錄,其中/home/upload

的用戶和所屬組為nfs-upload這個名字,它的UID和GID均為222;

4、/home/nfs  這個目錄的屬性為只讀,可提供除了網段內的工作站外,向Internet也提供數據內容。

三、伺服器端設置

1、 編輯/etc/exports內容

[root@server7 etc]# cat /etc/exports

/home/share  192.168.8.0/24(rw,no_root_squash)

/home/data  192.168.8.7(rw)

/home/upload   192.168.8.0/24(rw,all_squash,anonuid=222,anongid=222)

/home/nfs     192.168.8.0/24(ro)  *(ro,all_squash)

2、按要求建立每個對應目錄

    2.1、創建/home/share目錄 任何人都可以在 /home/share內新增、修改文件,但

    僅有該文件/目錄的建立者與root能夠刪除自己的目錄或文件。

    [root@server7 etc]# mkdir -p  /home/share

    [root@server7 etc]# ll -d /home/share/

    drwxr-xr-x. 2 root root 6 9月   5 15:50 /home/share/

    [root@server7 etc]# chmod 1777  /home/share/

    [root@server7 etc]# ll -d /home/share/

    drwxrwxrwt. 2 root root 6 9月   5 15:50 /home/share/

    2.2、創建/home/nfs

    [root@server7 etc]# ll -d /home/nfs/

    drwxr-xr-x. 2 root root 6 9月   5 16:52 /home/nfs/

    2.3、創建/home/data目錄

    [root@server7 etc]# mkdir -v /home/data

    mkdir: 已創建目錄 "/home/data"

    [root@server7 etc]# ll -d /home/data/

    drwxr-xr-x. 2 root root 6 9月   5 16:57 /home/data/

    [root@server7 etc]# useradd

    root@server7 etc]# passwd

    更改用戶 的密碼 。

    新的 密碼:

    無效的密碼: 密碼少於 8 個字元

    重新輸入新的 密碼:

    passwd:所有的身份驗證令牌已經成功更新。

    [root@server7 etc]# cat /etc/passwd | grep

    :x:1000:1000::/home/:/bin/bash

    [root@server7 etc]# chmod 700 /home/data/

    [root@server7 etc]# chown -R : /home/data/

    [root@server7 etc]# ll -d /home/data/

    drwx------. 2 6 9月   5 16:57 /home/data/

    2.4、創建/home/upload目錄

#先建立對應賬號與組名及UID

[root@server7 etc]# groupadd  -g 222 nfs-upload

[root@server7 etc]# useradd -g 222 -u 222 -M nfs-upload

[root@server7 etc]# cat /etc/passwd|grep nfs

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

nfs-upload:x:222:222::/home/nfs-upload:/bin/bash

#創建目錄,修改屬主

[root@server7 etc]# mkdir /home/upload

[root@server7 etc]# chown -R nfs-upload:nfs-upload  /home/upload/

[root@server7 etc]# ll -d /home/upload/

drwxr-xr-x. 2 nfs-upload nfs-upload 6 9月   6 08:38 /home/upload/

2.5、重啟NFS服務

[root@server7 etc]# systemctl restart  nfs

[root@server7 etc]# systemctl status  nfs

● nfs-server.service - NFS server and services

   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)

   Active: active (exited) since 三 2017-09-06 08:41:40 CST; 8s ago

  Process: 9171 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)

  Process: 9169 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)

  Process: 9168 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)

  Process: 9181 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)

  Process: 9180 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)

 Main PID: 9181 (code=exited, status=0/SUCCESS)

   CGroup: /system.slice/nfs-server.service

9月 06 08:41:40 server7.ctos.zu systemd[1]: Starting NFS server and services...

9月 06 08:41:40 server7.ctos.zu systemd[1]: Started NFS server and services.

[root@server7 etc]# tail /var/log/messages

Sep  6 08:41:40 server7 systemd: Started NFS Mount Daemon.

Sep  6 08:41:40 server7 rpc.mountd[9178]: Version 1.3.0 starting

Sep  6 08:41:40 server7 systemd: Started NFSv4 ID-name mapping service.

Sep  6 08:41:40 server7 systemd: Starting NFS server and services...

Sep  6 08:41:40 server7 kernel: NFSD: starting 90-second grace period (net c0c932c0)

Sep  6 08:41:40 server7 systemd: Started NFS server and services.

Sep  6 08:41:40 server7 systemd: Starting Notify NFS peers of a restart...

Sep  6 08:41:40 server7 sm-notify[9198]: Version 1.3.0 starting

Sep  6 08:41:40 server7 sm-notify[9198]: Already notifying clients; Exiting!

Sep  6 08:41:40 server7 systemd: Started Notify NFS peers of a restart.

2.6、查看NFS伺服器共享出來目錄

2.7、關閉防火牆、selinux

2.8查看配置

[root@server7 ~]# exportfs -v

/home/data     192.168.8.7(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

/home/share       192.168.8.0/24(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

/home/upload      192.168.8.0/24(rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=222,anongid=222,sec=sys,rw,secure,root_squash,all_squash)

/home/nfs         192.168.8.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

/home/nfs         <world>(ro,wdelay,root_squash,all_squash,no_subtree_check,sec=sys,ro,secure,root_squash,all_squash)

四、客戶端配置

4.1、客戶端也要安裝nfs-utils和rcpbind軟體包

[root@client-A ~]# yum install nfs-utils rpcbind -y

4.2、啟動RPC

[root@client-A ~]# service rpcbind start  /systemctl start rpcbind

Starting rpcbind:                                          [  OK  ]

[root@client-A ~]# service rpcbind status

rpcbind (pid  1926) is running...

[root@client-A ~]# chkconfig --list |grep rpcbind

4.3、客戶端關閉防火牆、selinux

[root@client-A ~]# service iptables stop /systemctl stop firewalld

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Unloading moles:                               [  OK  ]

4.4測試網路

[root@client-A ~]# ping 192.168.8.5

PING 192.168.8.5 (192.168.8.5) 56(84) bytes of data.

64 bytes from 192.168.8.5: icmp_seq=1 ttl=64 time=2.16 ms

64 bytes from 192.168.8.5: icmp_seq=2 ttl=64 time=0.697 ms

64 bytes from 192.168.8.5: icmp_seq=3 ttl=64 time=0.346 ms

64 bytes from 192.168.8.5: icmp_seq=4 ttl=64 time=0.336 ms

64 bytes from 192.168.8.5: icmp_seq=5 ttl=64 time=0.335 ms

64 bytes from 192.168.8.5: icmp_seq=6 ttl=64 time=0.317 ms

64 bytes from 192.168.8.5: icmp_seq=7 ttl=64 time=0.512 ms

64 bytes from 192.168.8.5: icmp_seq=8 ttl=64 time=0.320 ms

^C

--- 192.168.8.5 ping statistics ---

8 packets transmitted, 8 received, 0% packet loss, time 7555ms

rtt min/avg/max/mdev = 0.317/0.629/2.169/0.595 ms

4.5 在客戶端查看NFS伺服器共享出來目錄

[root@client-A ~]# showmount -e 192.168.8.5

Export list for 192.168.8.5:

/home/nfs     (everyone)

/home/upload  192.168.8.0/24

/home/share   192.168.8.0/24

/home/data 192.168.8.7

4.6、掛載NFS伺服器上/home/nfs目錄到本地/opt/data目錄下

#臨時掛載

#永久掛載

編輯、/etc/fstab文件,新增如下條目:

192.168.8.5:/home/nfs  /opt/data/ nfs4 defaults 0 0

更多信息參考 nfs參數詳解

#查看信息

[root@client-A data] # df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                      6.5G  644M  5.6G  11% /

tmpfs                 250M     0  250M   0% /dev/shm

/dev/sda1             477M   26M  426M   6% /boot

192.168.8.5:/home/nfs

                      8.0G  1.6G  6.5G  20% /opt/data

[root@client-A data]# mount

/dev/mapper/VolGroup-lv_root on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

192.168.8.5:/home/nfs on /opt/data type nfs (rw,vers=4,addr=192.168.8.5,clientaddr=192.168.8.7)

#創建文件測試

[root@client-A data]# touch testabc

touch: cannot touch `testabc': Read-only file system

4.7掛載/home/upload 目錄到客戶端/opt/upload目錄下

#掛載

[root@client-A data]# mkdir /opt/upload

[root@client-A data]# mount -t nfs  192.168.8.5:/home/upload   /opt/upload/

#查看掛載是否成功

[root@client-A data]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                      6.5G  644M  5.6G  11% /

tmpfs                 250M     0  250M   0% /dev/shm

/dev/sda1             477M   26M  426M   6% /boot

192.168.8.5:/home/nfs

                      8.0G  1.6G  6.5G  20% /opt/data

192.168.8.5:/home/upload

                      8.0G  1.6G  6.5G  20% /opt/upload

#客戶端創建nfs-upload用戶

[root@client-A ~]# groupadd  -g 222 nfs-upload

[root@client-A ~]# useradd -g 222 -u 222 -m nfs-upload

#測試,可以看到創建的文件及目錄默認屬主為nfs-upload屬組為nfs-upload

[@client-A upload]$ pwd

/opt/upload

[@client-A upload]$ ll

total 0

#測試創建文件

[@client-A upload]$ touch test123

測試創建目錄

[@client-A upload]$ mkdir  testdir

[@client-A upload]$ ll -a

total 4

drwxr-xr-x  3 nfs-upload nfs-upload   36 Sep  6 10:28 .

drwxr-xr-x. 4 root       root       4096 Sep  6 18:22 ..

-rw-rw-r--  1 nfs-upload nfs-upload    0 Sep  6 10:28 test123

drwxrwxr-x  2 nfs-upload nfs-upload    6 Sep  6 10:28 testdir

# 在客戶端用root用戶創建文件測試

root@client-A upload]# touch testabc

[root@client-A upload]# ll

total 0

-rw-r--r-- 1 root       root       0 Sep  6 10:31 nfstest123

-rw-r--r-- 1 nfs-upload nfs-upload 0 Sep  6 10:32 testabc

drwxrwxr-x 2 nfs-upload nfs-upload 6 Sep  6 10:28 testdir

可以看到用root用戶創建的文件屬主仍是nfs-upload

#測試刪除文件

[@client-A upload]$ rm test123

[@client-A upload]$ ll

total 0

drwxrwxr-x 2 nfs-upload nfs-upload 6 Sep  6 10:28 testdir

熱點內容
關閉ip訪問 發布:2024-04-19 15:59:18 瀏覽:728
大屏安卓系統哪個好 發布:2024-04-19 15:49:10 瀏覽:790
解壓瀏覽器 發布:2024-04-19 15:39:22 瀏覽:573
pythonutfgbk 發布:2024-04-19 15:32:20 瀏覽:219
騰訊雲伺服器搭建網站打不開 發布:2024-04-19 15:32:15 瀏覽:966
光遇腳本輔助下載免費ios 發布:2024-04-19 15:22:11 瀏覽:241
表格VB腳本 發布:2024-04-19 15:13:07 瀏覽:778
python生成器表達式 發布:2024-04-19 15:12:10 瀏覽:745
獲取文件夾文件名 發布:2024-04-19 14:45:51 瀏覽:247
嗶咔本地緩存怎麼看 發布:2024-04-19 14:36:00 瀏覽:105