关于NFS

关于NFS

NFS篇

现在有三台服务器需要实现文件实时同步,我们可以通过安装NFS服务端和客户端来实现

安装NFS服务器所有需要的软件包

yum install -y rpcbind nfs-utils

编辑exports文件,将目录共享出去,将要使用该共享目录的主机添加至该配置文件

vim /etc/exports
/mnt/data 192.168.34.1(rw,sync,fsid=0)		192.168.34.0/24(rw,sync,fsid=0)

192.168.34.1 和整个34网段的机器都可以挂载NFS机器上的/mnt/data目录到自己的文件系统中
rw 给予读写权限
sync 表示同步写
fsid=0 表示将/mnt/data这个目录包装成根目录

启动nfs服务

将rpcbind和nfs启动

systemctl enable --now rpcbind && systemctl enable --now nfs-server

确认NFS服务器状态和查看nfs信息

rpcinfo -p
systemctl status nfs-server

检查nfs是否共享我们想让其共享的目录

exportfs

在从服务器上挂载共享目录

yum install -y rpcbind nfs-utils && systemctl enable --now rpcbind && showmount -e nfs服务器的IP

挂载

mkdir /data && mount -t nfs4 nfsIP:/ /data && df -h

开机自动挂载

vim /etc/fstab
nfsIP:/ /data nfs4 rw,hard,intr,rpoto=tcp 0 0

客户端挂载后,写文件时可能会报一个权限问题:Permission denied。解决这个问题可以修改该nfs主服务器上的/etc/exports文件,改成如下内容:

vim /etc/exports
/data 192.168.34.0/24(rw,sync,fsid=0,anonuid=,anongid=)
查看uid
将uid加入上面
id root

让NFS重新读取配置

exports -rv

查看nfs配置

exportfs -v

但是你会发现,服务端可以读写客户端的文件,但是客户端的无法读写服务端的。

可以有下面的配置

/testfs 10.0.0.0/8(rw)
重启NFS服务以后,在客户机通过mount -o rw -t nfs 10.214.54.29:/testfs /rd1命令将网络文件mount到本地。执行完成之后,目录是可以访问了,但无法写入。感觉有点奇怪,明明在命令中指定可以写入了。于是到网上搜索资料,发现exports目录权限中,有这么一个参数no_root_squash。其作用是:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!。默认情况使用的是相反参数 root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID 与 GID 都会变成 nobody 那个身份。 因为我的客户端是使用root登录的,自然权限被压缩为nobody了,因此无法写入。将配置信息改为:
/testfs 10.0.0.0/8(rw,no_root_squash)
据说有点不安全,但问题是解决了。
另外,在测试NFS文件系统时,会经常mount和umount文件,但有时会出现device is busy的错误提示。你肯定感到很奇怪,我明明没有使用啊,看看你当前所在的目录,是不是在mount的文件目录中?回退到上层目录重新umount,是不是OK了?

  • 1、exports参数说明
    ro 只读访问
    rw 读写访问
    sync 所有数据在请求时写入共享
    async NFS在写入数据前可以相应请求
    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用户具有根目录的完全管理访问权限
    anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
    anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID

  • 2、NFS管理命令
    showmount -e 在NFS Server上执行此命令显示NFS Server上所有的共享卷;
    showmount -e 192.168.1.100 在NFS Client上执行此命令显示NFS Server上所有共享卷;
    exportfs -av 根据/etc/exports导出所有卷;
    exportfs -rv 重新导出所有卷,增加/etc/exports中的新项目、删除不存在的项目、更新改变的项目;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河越柯衍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值