NFS服務

配置NFS服務器並實現開機自動掛載

NFS服務端概述:
NFS,是Network File System的簡寫,即網絡文件系統。網絡文件系統是FreeBSD支持的文件系統中的一種,也被稱爲NFS. NFS允許一個系統在網絡上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。

在這裏插入圖片描述
在這裏插入圖片描述

模式: C/S 模式
端口:
RHEL7是以NFSv4作爲默認版本,NFSv4使用TCP協議(端口號是2049)和NFS服務器建立連接

安裝NFS

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

配置文件位置

[root@localhost178 ~]# ls /etc/exports
/etc/exports

啓動NFS服務

[root@localhost178 ~]# systemctl start rpcbind           #啓動nfs前,先啓動rpcbind
[root@localhost178 ~]# systemctl start nfs-server.service
[root@localhost178 ~]# netstat -anltpu |grep 2049            #查看端口2049
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
udp        0      0 0.0.0.0:2049            0.0.0.0:*                           -                   
udp6       0      0 :::2049                 :::*          

配置開機自啓動

[root@localhost178 ~]# chkconfig nfs-server on
注意:正在將請求轉發到“systemctl enable nfs-server.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

客戶端

[root@localhost181 ~]# yum -y install rpcbind nfs-utils  #安裝不需要啓服務
[root@localhost181 ~]# showmount -e 10.10.100.178    #能夠查看到這樣的內容,就可以進行掛載了
Export list for 10.10.100.178:

服務端配置文件

[root@localhost178 ~]# mkdir /web
[root@localhost178 ~]# vim /etc/exports   #寫入內容
/web  *(rw)
共享文件夾      對所有開放(讀寫權限)

注意: * 表示對所有網段開放權限
也可以指定特定的網段

重啓服務

[root@localhost178 ~]# exportfs -rv    ##重新讀取配置文件,不中斷服務.
exporting *:/web

客戶端掛載共享

[root@localhost181 ~]# mkdir  /test1
[root@localhost181 ~]# mount -t nfs 10.10.100.178:/web /test1
[root@localhost181 ~]# df -h
文件系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   50G  1.5G   49G    3% /
devtmpfs                 979M     0  979M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M  9.5M  981M    1% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/sda1               1014M  133M  882M   14% /boot
/dev/mapper/centos-home   47G   33M   47G    1% /home
tmpfs                    199M     0  199M    0% /run/user/0
10.10.100.178:/web        50G  1.4G   49G    3% /test1     #查看掛載成功

開機自動掛載:

[root@localhost181 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Thu Oct 17 08:19:57 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=e1a9a299-73a7-4f54-a401-f4031627ab79 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
10.10.100.178:/web  /test1  nfs    defaults   0 0       #添加這一行,注意不要寫錯

驗證寫入權限

[root@localhost181 test1]# mkdir 11
mkdir: 無法創建目錄"11": 權限不夠

解決方法:
設置訪問權限一般包含2部分
1)服務本身權限
2)目錄訪問權限
nfs默認使用nfsnobody用戶

[root@localhost178 ~]# grep nfs /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@localhost178 ~]# chmod o+w /web/
或者直接修改目錄的屬主與屬組
[root@localhost178 ~]# ll -d /web/
drwxr-xrwx 3 root root 16 10月 17 13:40 /web/
[root@localhost178 ~]# chown nfsnobody.nfsnobody -R /web/

再次驗證寫入權限

[root@localhost181 test1]# mkdir 11
[root@localhost181 test1]# ll
總用量 0
drwxr-xr-x. 2 nfsnobody nfsnobody 6 10月 17 13:40 11

下面是一些NFS共享的常用參數:
ro 只讀訪問
rw 讀寫訪問
sync 資料同步寫入到內存與硬盤當中
async 資料會先暫存於內存當中,而非直接寫入硬盤

secure NFS通過1024以下的安全TCP/IP端口發送
insecure NFS通過1024以上的端口發送
wdelay 如果多個用戶要寫入NFS目錄,則歸組寫入(默認)
no_wdelay 如果多個用戶要寫入NFS目錄,則立即寫入,當使用async時,無需此設置。
Hide 在NFS共享目錄中不共享其子目錄
no_hide 共享NFS目錄的子目錄
subtree_check 如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認)
no_subtree_check 和上面相對,不檢查父目錄權限

all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認)
root_squash root用戶的所有請求映射成如anonymous用戶一樣的權限(默認)
no_root_squash root用戶具有根目錄的完全管理訪問權限

[root@localhost178 ~]# cat /etc/exports
/web/a/      *(rw,no_root_squash)
/web/a/sync               10.10.100.0/24(rw,sync)
/web/a/ro                  10.10.100.181(ro)
/web/a/all_squash             10.10.100.0/24(rw,all_squash,anonuid=500,anongid=500)
/web/a/async                    10.10.100.0/255.255.255.0(async)
/web/a/rw          10.10.100.0/255.255.255.0(rw)    10.10.101.0/255.255.255.0(rw)
/web/a/root_squash   *(rw,root_squash)    

注意:在發佈共享目錄的格式中除了共享目錄是必跟參數外,其他參數都是可選的。並且共享
目錄與客戶端之間及客戶端與客戶端之間需要使用空格符號,但是客戶端與參數之間是不能有
空格的

NFS客戶端掛載參數的優化:

NFS高併發環境下的服務端重要優化(mount -o 參數)

async 異步同步,此參數會提高I/O性能,但會降低數據安全(除非對性能要求很高,對數據可靠性不要求的場合。一般生產環境,不推薦使用)

noatime 取消更新文件系統上的inode訪問時間,提升I/O性能,優化I/O目的,推薦使用。

nodiratime 取消更新文件系統上的directory inode訪問時間,高併發環境,推薦顯式應用該選項,提高系統性能

intr:可以中斷不成功的掛載

rsize/wsize 讀取(rsize)/寫入(wsize)的區塊大小(block size),這個設置值可以影響客戶端與服
務端傳輸數據的緩衝存儲量。一般來說,如果在局域網內,並且客戶端與服務端都具有足夠的內存,這個
值可以設置大一點,比如說32768(bytes),提升緩衝區塊將可提升NFS文件系統的傳輸能力。但設置的值也不要太大,最好是實現網絡能夠傳輸的最大值爲限。

內核優化:

net.core.wmem_default = 8388608 #內核默認讀緩存
net.core.rmem_default = 8388608 #內核默認寫緩存
net.core.rmem_max = 16777216 #內核最大讀緩存
net.core.wmem_max = 16777216 #內核最大寫緩存

用法:

[root@localhost181 test1]#mount  -t nfs  -o noatime,nodiratime,rsize=131072,wsize=131072,intr 10.10.100.178:/web/NFS  /test1

或者寫到掛載文件裏:

[root@localhost181 test1]#vim /etc/fstab
10.10.100.178:/web/NFS /test1  nfs       noatime,nodiratime,rsize=131072,wsize=131072,intr 0 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章