1. 程式人生 > >centos7下NFS使用與配置

centos7下NFS使用與配置

nfs linuxnfs centosnfs

NFS是Network File System的縮寫,即網絡文件系統。客戶端通過掛載的方式將NFS服務器端共享的數據目錄掛載到本地目錄下。

一、NFS的工作流程

1、由程序在NFS客戶端發起存取文件的請求,客戶端本地的RPC(rpcbind)服務會通過網絡向NFS服務端的RPC的111端口發出文件存取功能的請求。
2、NFS服務端的RPC找到對應已註冊的NFS端口,通知客戶端RPC服務。
3、客戶端獲取正確的端口,並與NFS daemon聯機存取數據。
4、存取數據成功後,返回前端訪問程序,完成一次存取操作。


所以無論客戶端 和服務端都需要用NFS,必須安裝RPC服務。

NFS的RPC服務,在Centos5下名為portmap,Centos6下名稱為rpcbind.


二、Centos7搭建NFS服務器實例


服務器系統

角色

IP

CentOS7-150--server

NFS服務器端

192.168.10.150

CentOS7-151

-client

NFS客戶端

192.168.10.151

共享CentOS7-150--server/data/bbs目錄,使192.168.10.1 IP段所有主機都可以訪問


1、因是測試環境,先關閉selinux和firewalld

1)關閉selinux

[root@service ~]# sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config

2)關閉firewalld防火墻

查看firewalld防火墻開機自動狀態

[root@service ~]# systemctl list-unit-files|grep enable|grep firewalld
firewalld.service                             enabled

關閉firewalld防火墻開機自動啟

[root@service ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

停止防火墻

[root@service ~]# systemctl stop firewalld.service

查看防火墻狀態

[root@service ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon   
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)   
Active: inactive (dead)     
Docs: man:firewalld(1)Mar 14 18:52:24 localhost.localdomain systemd[1]: Starting firewalld - dynamic ....
Mar 14 18:52:24 localhost.localdomain systemd[1]: Started firewalld - dynamic f....
Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: ICMP type 'beyond...
Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: beyond-scope: INV...
Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: ICMP type 'failed...
Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: failed-policy: IN...
Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: ICMP type 'reject..
Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: reject-route: INV...
Mar 14 11:21:43 service systemd[1]: Stopping firewalld - dynamic firewall daemon...
Mar 14 11:21:43 service systemd[1]: Stopped firewalld - dynamic firewall daemon.Hint: Some lines were ellipsized, use -l to show in full.


2、服務端部署

1)檢查系統版本及NFS服務nfs-utils 和rpcbind有沒有安裝

[root@service ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@service ~]# rpm -qa nfs-utils rpcbind

2)安裝NFS服務nfs-untils和rpcbind

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

3)啟動rpcbind服務(一定要先啟動rpcbind服務再啟動nfs服務)

查看rpcbind服務狀態

[root@service ~]# systemctl status rpcbind.service

啟動rpcbind服務

[root@service ~]# systemctl start rpcbind.service

查看rpc

[root@service ~]# lsof -i :111
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd    1 root   33u  IPv6  25136      0t0  TCP *:sunrpc (LISTEN)
systemd    1 root   38u  IPv4  25137      0t0  TCP *:sunrpc (LISTEN)
rpcbind 9227  rpc    4u  IPv6  25136      0t0  TCP *:sunrpc (LISTEN)
rpcbind 9227  rpc    5u  IPv4  25137      0t0  TCP *:sunrpc (LISTEN)
rpcbind 9227  rpc    8u  IPv4  33497      0t0  UDP *:sunrpc 
rpcbind 9227  rpc   10u  IPv6  33499      0t0  UDP *:sunrpc 
[root@service ~]# netstat -lntup|grep 
rpcbindudp     0      0 0.0.0.0:922             0.0.0.0:*                    9227/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                 9227/rpcbind        
udp6        0      0 :::922                  :::*                 9227/rpcbind        
udp6        0      0 :::111                  :::*                9227/rpcbind

查看nfs服務向rpc註冊的端 口信息

[root@service ~]# rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

把rpcbind另入開機自啟動

[root@service ~]# systemctl enable rpcbind.service
[root@service ~]# systemctl list-unit-files|grep enabled|grep rpcbind
rpcbind.socket                 enabled

4)啟動NFS服務並查看其狀態

[root@service ~]# systemctl start nfs.service
[root@service ~]# systemctl status nfs.service

把NFS服務加入開機自啟動並查看其狀態

[root@service ~]# systemctl enable nfs.service
[root@service ~]# systemctl list-unit-files|grep nfs

5)授權nfsnobody於/data/bbs讓客戶端掛載後可寫可讀

[root@service /]# chown nfsnobody:nfsnobody /data/bbs

6)創建測試目錄及文件

[root@service ~]# mkdir /data/bbs -p
[root@service ~]# mkdir /data/bbs/test.txt

7)配置NFS服務的export文件

[root@service ~]# echo "/data/bbs/ 192.168.10.1/24(rw,sync,root_squash)">>/etc/exports

重新加載nfs配置文件

[root@service ~]# exportfs -rv
exporting 192.168.10.1/24:/data/bbs

查看nfs服務器掛載情況

[root@service ~]# showmount -e localhost
Export list for localhost:
/data/bbs 192.168.10.1/24


ro:目錄只讀rw:目錄讀寫sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性async:將數據先保存在內存緩沖區中,必要時才寫入磁盤all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody)no_all_squash:與all_squash取反(默認設置)root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置)no_root_squash:與rootsquash取反anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx)anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶


3、客戶端配置

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

把rpcbind加入開機自啟動

[root@localhost bbs]# systemctl enable rpcbind.service

創建測試目錄文件

[root@localhost ~]# mkdir /data/bbs/ -p

掃描NFS服務器的文件共享列表

[root@localhost bbs]# showmount -e 192.168.10.150
Export list for 192.168.10.150:
/data/bbs 192.168.10.1/24

把服務器的目錄掛載到客戶端 的目錄下

[root@localhost ~]# mount -t nfs 192.168.10.150:/data/bbs /data/bbs
[root@localhost ~]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/sda3                  18G 1004M   17G   6% /
devtmpfs                  479M     0  479M   0% /dev
tmpfs                    489M     0  489M   0% /dev/shm
tmpfs                     489M  6.8M  482M   2% /run
tmpfs                    489M     0  489M   0% /sys/fs/cgroup
/dev/sda1                  497M  112M  385M  23% /boot
tmpfs                    98M     0   98M   0% /run/user/0
192.168.10.150:/data/bbs   18G 1006M   17G   6% /data/bbs

三、數據測試

服務端

[root@service /]# cd /data/bbs
[root@service bbs]# touch a.txt

客戶端

[root@localhost ~]# ls /data/bbsa.txt


提示: 1.配置NFS服務端後,不用重啟NFS服務,只要使用exportfs -rv
2.rpc主程序Centos5.8下為portmap 、Centos6.4和Centos7下為rpcbind
3.NFS共享目錄不要授權於777權限,可以改所屬主和組為nfsnobody,因為nfsnobody權限不是很大,也不能登陸

centos7下NFS使用與配置