centos7.9 安装nfs

docker-compose安装

version: '2.1'

services:
  nfs-server:
   image: itsthenetwork/nfs-server-alpine
   privileged: true
   container_name: nfs-server
   ports:
    - "2049:2049"
   cap_add:
    - SYS_ADMIN
    - SETPCAP
   environment:
    - "SHARED_DIRECTORY=/share"
   volumes:
    - /home/nfs/nfs-data:/share
   restart: always

centos 7.9 安装 nfs

参考1
参考2

服务端:

1、安装服务

yum -y install nfs-utils rpcbind

2、 设置服务开机启动与启动服务

 systemctl enable rpcbind && systemctl start rpcbind
 systemctl enable nfs && systemctl start nfs

3、配置exports
#创建共享存储文件夹

mkdir /nfs
  • 配置nfs

输入以下内容,格式为:nfs共享目录 nfs客户端地址1(param1, param2,…) nfs客户端地址2(param1, param2,…)

如: /nfs 10.0.0.200/24(rw,async,no_root_squash)

  1. 固定网段所有IP可挂载
echo "/data/nfs 10.0.0.*(rw,sync,no_root_squash)" >> /etc/exports
  1. 固定网段固定IP区间可挂载
echo "/data/nfs 10.0.0.200/24(rw,sync,no_root_squash)" >> /etc/exports
  1. 所有客户端可挂载
echo "/data/nfs *(rw,sync,no_root_squash)" >> /etc/exports
  • 启动服务

1.先启动rpc服务,再启动nfs服务

systemctl start rpcbind

2.加入开始自启动

systemctl enable rpcbind
systemctl enable nfs && systemctl restart nfs

3.查看服务状态

systemctl status rpcbind
systemctl status nfs

在这里插入图片描述
4.如果显示rpc 服务器注册的端口列表(端口:111),则启动成功。

rpcinfo -p 
  • 配置文件/etc/exports
    权限配置的说明:
    • rw:可读写
    • ro: 只读,但最终能不能读写,还是与文件系统的 rwx 及身份有关
    • no_root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
    • root_squash: 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名(nobody)用户
    • all_squash: 不论登入 NFS 的使用者身份为何, 均被映射为匿名用户,通常就是 nobody(nfsnobody)
    • insecure: 允许从客户端过来的非授权访问
    • sync: 数据会同步写入到内存与硬盘中
    • async: 数据会先暂存于内存当中,而非直接写入硬盘
    • anonuid: 指定uid的值,此uid必须存在于/etc/passwd中
    • anongid:指定gid的值

  • exportfs的参数说明:
    • -a:全部mount 或unmount /etc/exports中的内容
    • -r: Reexport all directories: 重新导出所有目录
    • -u:umount目录
    • -v: verbose,输出详情
    如: 使nfs配置生效exportfs -r

  • 查看是否成功和可用的nfs地址:

 showmount -e 127.0.0.1或showmount -e localhost

[root@node2 ~]# showmount -e localhost
Export list for localhost:
/nfs 10.0.0.200/24

  • 看有哪些参数生效

[root@node2 ~]# cat /var/lib/nfs/etab
/nfs 10.0.0.200/24(rw,async,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)

参数说明:

  1. ro:只读设置,这样 NFS 客户端只能读、不能写(默认设置);
  2. rw:读写设置,NFS 客户端可读写;
  3. sync:将数据同步写入磁盘中,效率低,但可以保证数据的一致性(默认设置);
  4. async:将数据先保存在内存缓冲区中,必要时才写入磁盘;如果服务器重新启动,这种行为可能会导致数据损坏,但效率
  5. root_squash:当客户端用 root 用户访问该共享文件夹时,将 root 用户映射成匿名用户(默认设置);
  6. no_root_squash:客户端的 root 用户不映射。这样客户端的 root 用户与服务端的 root 用户具有相同的访问权限,这可能会带来严重的安全影响。没有充分的理由,不应该指定此选项;
  7. all_squash:客户端所有普通用户及所属组都映射为匿名用户及匿名用户组;「推荐设置」
  8. no_all_squash:客户端所有普通用户及所属组不映射(默认设置);
  9. subtree_check:如果共享,如:/usr/bin之类的子目录时,强制NFS检查父目录的权限;
  10. no_subtree_check:即使共享 NFS 服务端的子目录时,nfs服务端也不检查其父目录的权限,这样可以提高效率(默认设置)
  11. secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
  12. insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
  13. wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
  14. no_wdelay:若有写操作则立即执行,当使用async时,无需此设置;
  15. anonuid=xxx:将远程访问的所有用户主都映射为匿名用户主账户,并指定该匿名用户主为本地用户主(UID=xxx);
  16. anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组为本地用户组(GID=xxx);

客户端:

1、安装服务

yum -y install nfs-utils rpcbind

2、 设置服务开机启动与启动服务

 systemctl enable rpcbind && systemctl start rpcbind
 systemctl enable nfs && systemctl start nfs

3、挂载nfs服务器的路径

mount -v 服务端IP:/   ~/nfs/nfs-data(客户端挂载的路径)

4、卸载路径

umount  ~/nfs/nfs-data

坑汇总

解决mount.nfs: access denied by server while mounting
在linux下进行挂载时突然出现: mount.nfs: access denied by server while mounting
第一感觉是读取文件权限不够,准备去更改一下挂载点的权限,但又考虑到在其他服务器上都能正常挂载,那就说明权限是正确的。

排除了权限问题后,就需要检查需要挂载的服务器ip是否在被挂载服务器的允许范围内,检查/etc/exports文件中的配置,如下所示:
/home/share 10.10.166.0/255.255.255.0(rw,sync,no_root_squash)
/home/share为被挂载服务器中的目录(挂载点)
10.10.166.0/255.255.255.0为允许被挂载的ip
(rw,sync,no_root_squash) 为允许的权限
如果被挂载服务器允许在所有机器上进行挂载,则可以在被挂载服务器的/etc/exports文件中记录一条 /home/share *(rw,sync,no_root_squash),*代表所有的ip
如果需要挂载的服务器ip不在/etc/exports文件内,则可以在该服务器中增加一条记录,保存退出后,重启nfs服务即可(sudo /etc/init.d/nfs-kernel-server restart <—重启nfs服务)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值