liunx之nfs

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29590071/article/details/86567668

liunx之nfs#

NFS的介绍

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS工作流程图
在这里插入图片描述
NFS运行原理图
NFS工作流程图

NFS服务器端配置

操作系统

[root@nfs-31 ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 
[root@nfs-31 ~]# uname -r
3.10.0-862.el7.x86_64
[root@nfs-31 ~]# uname -m
x86_64

NFS&rpcbind软件

  1. 安装
root@nfs01 ~]# yum install nfs-utils rpcbind -y
  1. 检查
    rpm
    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
[root@nfs-31 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-47.el7.x86_64
nfs-utils-1.3.0-0.61.el7.x86_64
  1. 自动创建nfsnobody用户
[root@nfs-31 ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

启动服务

  1. 启动 rpcbind
[root@nfs-31 ~]# systemctl start rpcbind
#检查rpc是否启动《一》
[root@nfs-31 ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-01-20 13:45:44 CST; 8h ago
   #检查rpc是否启动《二》
 [root@nfs-31 ~]# rpcinfo -p 172.16.1.31
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper  
  1. 启动NFS
[root@nfs-31 ~]# systemctl start nfs
#检查rpc是否启动《一》
[root@nfs-31 ~]# rpcinfo -p 172.16.1.31
   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
    100024    1   udp  59272  status
    100024    1   tcp  56237  status
    #检查rpc是否启动《一》
    [root@nfs-31 ~]# ps -ef | grep nfs
root      1905     2  0 13:46 ?        00:00:00 [nfsd4_callbacks]
root      1909     2  0 13:46 ?        00:00:00 [nfsd]
root      1910     2  0 13:46 ?        00:00:00 [nfsd]
root      1911     2  0 13:46 ?        00:00:00 [nfsd]
root      1912     2  0 13:46 ?        00:00:00 [nfsd]
root      1913     2  0 13:46 ?        00:00:00 [nfsd]
root      1914     2  0 13:46 ?        00:00:00 [nfsd]
root      1915     2  0 13:46 ?        00:00:00 [nfsd]
root      1916     2  0 13:46 ?        00:00:00 [nfsd]
root      2848  2221  0 22:12 pts/0    00:00:00 grep --color=auto nfs


开机启动
相关的服务添加到开机自启动中
【方法1】
将nfs服务加入并检查:
[root@nfs01 ~]# chkconfig nfs on
[root@nfs01 ~]# chkconfig --list nfs
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
将rpcbind服务加入并检查:
[root@nfs01 ~]# chkconfig rpcbind on
[root@nfs01 ~]# chkconfig --list rpcbind
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
【方法2】
加入:
[root@nfs01 ~]# echo “/etc/init.d/rpcbind start” >>/etc/rc.local
[root@nfs01 ~]# echo “/etc/init.d/nfs start” >>/etc/rc.local
查看:
[root@nfs01 ~]# tail -2 /etc/rc.local
/etc/init.d/rpcbind start
/etc/init.d/nfs start
【注意】
在实际的生产环境中用方法2而不用方法1,因为可以方便运维人员的管理
设置共享目录
默认情况下该配置文件是空的

  1. 配置nfs的配置文件 /etc/exports
#share /data
#/data 172.16.1.0/24(rw,sync)
#最狗血错误172.16.1.0/24(rw,sync)中24和(之间不能有空格
  1. 配置文件书写格式
    格式:NFS共享目录 客户端地址1(参1,参2只读还是可写) 客户端地址2(参1,参2)

  2. 参数选项说明
    NFS共享的目录:为NFS服务端要共享的实际目录,要用绝对路径如(/data)。注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写。/etc/exports配置文件格式书写详细如下表

客户端地址 具体地址例子 说明
授权单一客户端访问NFS 172.16.1.31 单一客户端不符合使用场景
授权整个网段可访问NFS 172.16.1.31/24 /24==255.255.255.0(最常用)

NFS权限设置

常用格式 实例
读写 /data 172.16.1.0/24(rw,sync) 允许客户端读写,并且数据同步写到服务器的磁盘里
指定客户端 data 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888) 允许客户端读写,并且数据同步写到服务器的磁盘里,并且指定客户端的uid和gid,早期生产环境中的一种配置,适合多客户端共享一个NFS单目录,如果所有服务器的nfsnodoby账户的UID相同,则本案例就没什么意义了
只读 /data 172.16.1.0/24(ro) 只读共享,用途:例如在生产环境中开发人员有查看服务器日志的需求,但是又不希望给开发服务器的权限,那么就可以给开发提供从某个测试服务器NFS客户端上查看某个生产服务器日志目录(NFS共享目录)的权限,但是,这不是唯一的方法喲

NFS配置参数权限

rw(熟记) 表示可读写权限
ync(熟记)s 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回,优点:数据安全不会丢,缺点:性能比不启用该参数要差
async(熟记) 写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)
all_squash(熟记) 不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩为匿名用户,同时它的UID和GID都会变成nfsnobody账号身份,在早期多个NFS客户端同时读写NFS Server数据时,这个参数很有用,在生产环境中配置NFS的重要技巧:1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限,all_squash把所有客户端都压缩成匿名用户(UID相同),就是anonuid,anongid指定的UID和GID相同,2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,nfsnodoby(UID必须相同)
anonuid(熟记) 参数以anon*开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。一般默认就好
anongid(熟记) 同anonuid,区别是把uid(用户id)换成gid(组id)
  1. 更改共享目录的权限
[root@nfs-31 ~]# chown -R nfsnodoby.nfsnodoby /data
[root@nfs-31 ~]# ll -d /data
drwxr-xr-x 3 nfsnobody nfsnobody 94 Jan 20 15:12 /data
 5. 平滑重启nfs服务
 	systemctl  reload nfs
问题标记
  • [解决 ] Job for nfs-server.service invalid.
    重启后同样无法启动
    nfs启动失败
    在用上述平滑启动reload nfs的时候出现错误 解决办法:重启nfs
    问题标记
    /data 拒绝访问
    mount.nfs: access denied by server while mounting 172.16.1.21:/data
    查看是否NFS没有开启
    服务端测试
    挂载本地ip 的mnt目录 mount -t nfs 172.16.1.21:/data /mnt
    在mnt中创建xingchao.txt
    查看/data中是否也有
    测试开机启动*
    共享目录使用结束之后,卸载共享目录
[root@demo-nfs-21 ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda3           48G  1.9G   47G   4% /
devtmpfs           988M     0  988M   0% /dev
tmpfs              998M     0  998M   0% /dev/shm
tmpfs              998M  9.3M  989M   1% /run
tmpfs              998M     0  998M   0% /sys/fs/cgroup
/dev/sda1         1014M  124M  891M  13% /boot
tmpfs              200M     0  200M   0% /run/user/0
172.16.1.21:/data   48G  1.9G   47G   4% /mnt
[root@demo-nfs-21 ~]# umount /mnt #卸载挂载目录

关于NFS本地测试流程图
NFS服务端和客户端交互
umount
-lf 强制卸载
问题总结
在这里插入图片描述

  1. 出现上述图片谁有办法解决联系我
  2. 亟待解决重启后nfs无法启动问题
    无法启动nfs服务问题已经解决
    systemctl enable nfs-server.service 开机启动是添加
  3. 测试挂载
    客户端测试挂载
    mount -t nfs 172.16.1.31:/data /app/uploads/
    NFS设置开机启动没有启动
    [root@demo-nfs-21 ~]# systemctl status nfs
    ● nfs-server.service - NFS server and services
    Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
    Drop-In: /run/systemd/generator/nfs-server.service.d
    └─order-with-mounts.conf
    Active: inactive (dead)

猜你喜欢

转载自blog.csdn.net/qq_29590071/article/details/86567668
今日推荐