美文网首页
centos7搭建nfs

centos7搭建nfs

作者: 彩色的炮灰 | 来源:发表于2023-06-07 11:26 被阅读0次

    1、概述:
    NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件。本文将给大家讲解怎么在CentOS7上安装和配置NFS服务器。

    1.1 准备
    用虚拟机做测试,分别做NFS服务器和客户端,配置如下:

    Centos虚拟机三台
    NFS服务器ip:192.168.180.48
    客户端ip:192.168.180.47
    客户端ip:192.168.180.46

    我们要实现的目标是:在NFS服务器上共享一个目录,在客户端上可以直接操作NFS服务器上的这个共享目录下的文件。

    2、NFS服务器配置
    2.1 安装NFS服务
    首先使用yum安装nfs服务:
    [root@test3 nfs]# yum -y install rpcbind nfs-utils
    在服务器上创建共享目录,并设置权限。
    [root@test3 nfs]# mkdir /home/simon/nfs/share/

    2.2 配置NFS
    nfs的配置文件是 /etc/exports ,vim /etc/exports后在配置文件中加入一行:

    /home/simon/nfs/share/47share/ 192.168.180.47(rw,no_root_squash,no_all_squash,sync)
    /home/simon/nfs/share/46share/ 192.168.180.46(rw,no_root_squash,no_all_squash,sync)
    

    这行代码的意思是把共享目录/home/simon/nfs/share/47share/ 共享给1192.168.180.47这个客户端

    注:ip可以为192.168.180.1/24 #表示整个192.168.180网段都可以访问,也可以指定单个地址如:192.168.180.47,也可以用*号表示所有用户都可以访问你所共享的目录

    ip 后面括号里的内容是权限参数,其中:

    rw 表示设置目录可读写。
    sync 表示数据会同步写入到内存和硬盘中,相反 async 表示数据会先暂存于内存中,而非直接写入到硬盘中。
    no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。
    no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。

    其他参数说明:

    secure: 这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。
    rw: 这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
    async: 这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,这也可能会造成数据丢失。
    no_wdelay: 这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
    nohide: 如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用 hide 选项。
    no_subtree_check: 这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。
    no_auth_nlm: 这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 secure_locks。
    mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录。
    fsid=num: 这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档
    wdelay 如果多个用户要写入nfs目录,则归组写入(默认)
    no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
    all_squash: 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。
    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

    如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:
    [root@test3 nfs]# exportfs -r

    2.3 设置防火墙
    如果你的系统没有开启防火墙,那么此步骤可以省略。

    NFS的防火墙除了固定的port111、2049外,还有其他服务如rpc.mounted等开启的不固定的端口,因此我们需要设置NFS服务的端口配置文件。

    vim /etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加:

    RQUOTAD_PORT=1001
    LOCKD_TCPPORT=30001
    LOCKD_UDPPORT=30002
    MOUNTD_PORT=1002

    保存好后,将端口加入到防火墙允许策略中。执行:

    [root@test3 nfs]# firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=1001/tcp --add-port=1001/udp --add-port=1002/tcp --add-port=1002/udp --add-port=30001/tcp --add-port=30002/udp --permanent
    
    [root@test3 nfs]# firewall-cmd --reload
    

    注:若只为测试操作,也可直接关闭防火墙

    2.4 启动服务
    按顺序启动rpcbind和nfs服务:(此顺序不能颠倒,否则后续会报错)

    [root@test3 nfs]# systemctl start rpcbind
    [root@test3 nfs]# systemctl start nfs ##(centos7)
    [root@test3 nfs]# systemctl start nfs-server ##(centos8)

    加入开机启动:

    [root@test3 nfs]# systemctl enable rpcbind
    [root@test3 nfs]# systemctl enable nfs ##(centos7)
    [root@test3 nfs]# systemctl enable nfs-server ##(centos8)

    nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。

    我们可以使用 showmount 命令来查看服务端(本机)是否可连接:

    [root@test3 nfs]# showmount -e localhost
    Export list for localhost:
    /home/simon/nfs/share 192.168.180.46,192.168.180.47
    [root@test3 nfs]#

    出现上面结果表明NFS服务端配置正常。

    3、客户端配置
    3.1 安装rpcbind服务
    客户端只需要安装rpcbind服务即可,一般无需安装nfs或开启nfs服务。

    [root@test3 nfs]# yum -y install rpcbind

    (注:若后续操作无法使用showmount命令则此步骤建议使用命令yum -y install rpcbind nfs-utils因为有些虚拟机可能会内置showmount命令,同时若安装nfs,需确保与nfs服务器端版本一致)

    3.2 挂载远程nfs文件系统
    查看服务端已共享的目录:

    [root@test2 ~]# showmount -e 192.168.180.48
    Export list for 192.168.180.48:
    /home/simon/nfs/share 192.168.180.46,192.168.180.47
    

    建立挂载目录,执行挂载命令:

    [root@test2 simon]# mount -t nfs 192.168.180.48:/home/simon/nfs/share/47share /home/simon/nfsclient -o nolock,nfsvers=3,vers=3

    如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root。

    如果要解除挂载,可执行命令:

    [root@test2 simon]# umount /home/simon/nfsclient

    3.3 开机自动挂载
    如果按本文上面的部分配置好,NFS即部署好了,但是如果你重启客户端系统,发现不能随机器一起挂载,需要再次手动操作挂载,这样操作比较麻烦,因此我们需要设置开机自动挂载。我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到/etc/rc.d/rc.local文件中即可。

    [root@test2 nfsclient]# vim /etc/rc.d/rc.local

    在文件最后添加一行:

    mount -t nfs 192.168.180.48:/home/simon/nfs/share/47share /home/simon/nfsclient -o nolock,nfsvers=3,vers=3

    保存并重启机器看看。

    3.4 测试验证
    root@test2 simon]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    devtmpfs 7.9G 0 7.9G 0% /dev
    tmpfs 7.9G 0 7.9G 0% /dev/shm
    tmpfs 7.9G 710M 7.2G 9% /run
    tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
    /dev/mapper/centos-root 57G 8.2G 49G 15% /
    /dev/sda1 10G 282M 9.8G 3% /boot
    /dev/mapper/vg1-lv1 118G 76G 37G 68% /home
    overlay 118G 76G 37G 68%
    tmpfs 1.6G 0 1.6G 0% /run/user/0
    192.168.180.48:/home/simon/nfs/share 118G 21G 92G 19% /home/simon/nfsclient

    看到最后一行,就说明已经挂载成功了。接下来就可以在客户端上进入目录/mnt/share下,新建/删除文件,然后在服务端的目录/data/share查看是不是有效果了
    ————————————————

    原文链接:https://blog.csdn.net/lihongbao80/article/details/119869383

    相关文章

      网友评论

          本文标题:centos7搭建nfs

          本文链接:https://www.haomeiwen.com/subject/krbnedtx.html