NFS服务

部署NFS服务端


1.yum -y install nfs-utils #安装NFS软件

------------------------------------------------

2  创建nfs运行的虚拟用户

服务端创建用户,默认是nfsnobody。为配合rsync备份数据,改成www用户。

groupadd -g 666 www

-----------------------------

useradd -s /sbin/nologin -M -u 666 -g 666 www

---------------------------------------------

[root@nfs /data]# id  www

uid=666(www) gid=666(www) groups=666(www)

3.修改nfs服务端配置文件

vi  /etc/exports  #配置nfs服务

---------------------------

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)  #配置内容

--------------------------------------------------------------------

cat /etc/exports    #检测

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) #检测结果

-----------------------------------------------------------------------

4.创建数据目录并授权

[root@nfs ~]# mkdir -p /data

---------------------------------------

[root@nfs ~]# chown -R www.www /data/

---------------------------------------

5.启动rpcbind和nfs服务

systemctl start rpcbind    #打开rpc

--------------------------------------

systemctl status rpcbind #检测

---------------------------------------------

systemctl start nfs-server.service #打开NFS

--------------------------------------------------

systemctl status nfs-server.service #检测

---------------------------------------------------

设置开机自启:

systemctl enable rpcbind nfs-server #开机自启

-----------------------------------------------------------

systemctl restart rpcbind nfs-server #重启rpc

-----------------------------------------------------------------

6.服务端检查命令

[root@nfs ~]# showmount -e 172.16.1.31

----------------------------------------------

Export list for 172.16.1.31:

/data 172.16.1.0/24

7.查看端口

#rpc主端口:111

#nfs主端口:2049(随机的,可变)

[root@nfs /server/scripts]# 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

    100005    1  udp  20048  mountd

    100005    1  tcp  20048  mountd

    100005    2  udp  20048  mountd

    100005    2  tcp  20048  mountd

    100005    3  udp  20048  mountd

    100005    3  tcp  20048  mountd

    100003    3  tcp  2049  nfs

    100003    4  tcp  2049  nfs

    100227    3  tcp  2049  nfs_acl

    100003    3  udp  2049  nfs

    100003    4  udp  2049  nfs

    100227    3  udp  2049  nfs_acl

    100021    1  udp  42622  nlockmgr

    100021    3  udp  42622  nlockmgr

    100021    4  udp  42622  nlockmgr

    100021    1  tcp  44645  nlockmgr

    100021    3  tcp  44645  nlockmgr

    100021    4  tcp  44645  nlockmgr



部署NFS客户端在【172.16.1.41】配置

1. yum -y install nfs-utils  #安装NFS软件

---------------------------------

2.启动rpcbind服务

#客户端只需要启动rpcbind,不需要启动nfs

systemctl start rpcbind    #启动rpc

systemctl enable rpcbind #开机自启

systemctl status rpcbind #检测

-------------------------------------------------

3 创建www虚拟用户

创建相同uid gid的用户,如果客户端没有创建这个用户 ,查看文件的时候显示的是666。

groupadd -g 666 www

useradd -s /sbin/nologin -M -u 666 -g 666 www

--------------------------------------------------

4 查询NFS远程共享信息

使用showmount命令查看nfs共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。

[root@backup ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/24

--------------------------------------

5 客户端挂载并查看

在 NFS 客户端创建一个挂载目录, 使用 mount 命令并结合-t 参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的 IP 地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录

mkdir -p /data

mount -t nfs 172.16.1.31:/data /data

#查看是否挂载成功

[root@backup ~]# df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/centos_mode-root  37G  1.8G  36G  5% /

devtmpfs                      476M    0  476M  0% /dev

tmpfs                        488M    0  488M  0% /dev/shm

tmpfs                        488M  7.6M  480M  2% /run

tmpfs                        488M    0  488M  0% /sys/fs/cgroup

/dev/sda1                    1014M  130M  885M  13% /boot

tmpfs                          98M    0  98M  0% /run/user/0

172.16.1.31:/data              37G  2.8G  35G  8% /data

------------------------------------------------------------------------

6 写入开机自动挂载

[root@backup ~]# tail -1  /etc/fstab

172.16.1.31:/data   /data      nfs    defaults     0 0

----------------------------------------------------------------------

mount -a  #重新加载/etc/fstab,不用重启直接挂载。

-----------------------------------------------------

7 卸载

umount /data/

umount -rl /data #强制卸载

#卸载的时候如果提示"umount.nfs: /nfsdir: device is busy"先切换到其他目录再卸载


nfs 服务程序的配置文件为/etc/exports,需要严格按照共享目录的路径 允许访问的 NFS 客户端(共享权限参数)格式书写,定义要共享的目录与相应的权限,具体书写方式如下图所示

![image-20200330175531035](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200330175531035.png)

扩展


NFS天坑

1.如果在客户端挂载172.16.1.31:/data后,服务端重启网卡,会导致客户端查看data目录卡顿。

解决:强制卸载后重新挂载

umount-rl/data

mount-tnfs172.16.1.31:/data /data

2.如果nfs服务挂了,访问客户端data目录会卡住。

解决:1.服务端重启nfs即可 2.客户端强制卸载umunt-rl/data

3.如果客户端设置了开机自动挂载,服务端nfs挂掉了,重启客户端会卡住很久,会一直在等挂载。

解决:

#如果是物理服务器

    1、观察读秒时间,如果比较短,宁愿等1分42秒(看读秒),也不进单用户模式。进单用户模式会花费至少五分钟以上。

#如果是云服务器

    1.不愿意等就进单用户模式,注释掉开机自动挂载的参数。

#进入单用户模式的方法:

   开机启动时按e,然后光标移动到倒数第二行尾部添加rd.break

ctrl+x

mount-oremount,rw /sysroot/

chroot/sysroot/   

NFS共享多个目录


1.配置文件修改

[root@nfs ~]# cat /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

/data2 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

2.重启nfs服务

systemctl restart nfs

3.客户端挂载测试

    showmount -e 172.16.1.31

    Export list for 172.16.1.31:

    /data  172.16.1.0/24

    /data2 172.16.1.0/24

NFS固定端口号

1.固定NFS随机端口

    [root@nfs01 ~]# vim /etc/sysconfig/nfs

    RQUOTAD_PORT=4001

    LOCKD_TCPPORT=4002

    LOCKD_UDPPORT=4002

    MOUNTD_PORT=4003

    STATD_PORT=4004

    --------------------------------------------------------

    [root@nfs01 ~]# tail -5 /etc/sysconfig/nfs #尾部追加

2.重启rpcbind和nfs

systemctl restart rpcbind.service nfs-server.service

3.查看端口

[root@nfs /data]# rpcinfo -p

  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

    100005    1  udp  4003  mountd

    100005    1  tcp  4003  mountd

    100005    2  udp  4003  mountd

    100005    2  tcp  4003  mountd

    100005    3  udp  4003  mountd

    100005    3  tcp  4003  mountd

    100003    3  tcp  2049  nfs

    100003    4  tcp  2049  nfs

    100227    3  tcp  2049  nfs_acl

    100003    3  udp  2049  nfs

    100003    4  udp  2049  nfs

    100227    3  udp  2049  nfs_acl

    100021    1  udp  4002  nlockmgr

    100021    3  udp  4002  nlockmgr

    100021    4  udp  4002  nlockmgr

    100021    1  tcp  4002  nlockmgr

    100021    3  tcp  4002  nlockmgr

    100021    4  tcp  4002  nlockmgr

4.firewalld开放端口(C7)

firewall-cmd --add-service=nfs --permanent

    firewall-cmd --add-service=mountd --permanent

    firewall-cmd --add-service=rpc-bind --permanent

    firewall-cmd --reload

5.iptables开放端口(C6)

vim /etc/sysconfig/iptables

        -A INPUT -p tcp -m tcp --dport 111 -j ACCEPT

        -A INPUT -p udp -m udp --dport 111 -j ACCEPT

        -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT

        -A INPUT -p udp -m udp --dport 2049 -j ACCEPT

        -A INPUT -p tcp -m tcp --dport 4001:4004 -j ACCEPT

        -A INPUT -p udp -m udp --dport 4001:4004 -j ACCEPT


    iptables-save #保存配置

iptables -nL

NFS小结


#NFS 存储优点

    1.NFS 文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。

    2.NFS 文件系统内存放的数据都在文件系统之上,所有数据都是能看得见

#NFS 存储局限

    1.存在单点故障, 如果构建高可用维护麻烦 web->nfs()->backup

    2.NFS 数据明文, 并不对数据做任何校验。

    3.客户端挂载 NFS 服务没有密码验证, 安全性一般(内网使用)

#NFS 应用建议

    1.生产场景应将静态数据尽可能往前端推, 减少后端存储压力

    2.必须将存储里的静态资源通过 CDN 缓存 jpg\png\mp4\avi\css\js

    3.如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用

你可能感兴趣的:(NFS服务)