如何在基于RHEL 8的Linux发行版上设置NFS服务器和客户端

被称为客户端/服务器文件系统的网络文件系统(NFS)是一个流行的,跨平台以及分布式文件系统协议,其用于在网络上导出本地文件系统,使得客户端通过网络与其它机器共享目录和文件并且与它们交互,就像它们被本地挂载一样。

在RHEL 8上,可支持的NFS版本是NFSv3和NFSv4,并且默认NFS版本是4.2,其特性支持访问控制列表(ACLs),服务端复制,松散文件,空间预留,带标签的NFS,布局增强以及更多。

在本文种,我们学习如何在基于RHEL 8的Linux发行版上按照和配置NFS服务器和NFS客户端。

我们测试环境:

NFS 服务器IP:192.168.50.128 AlmaLinux 8

NFS客户端IP: 192.168.50.150  RockyLinux 8

在AlamLinux上设置NFS服务器

1、首先在NFS服务器上按照所需软件包。软件包是nfs-utls,它为内核NFS服务器提供了一个守护程序和相关工具,诸如包含showmount命令。

在NFS服务器上运行以下命令按照这个软件包(如果你以非root用户管理系统,使用sudo)

[root@localhost blctrl]# dnf install nfs-utils

2、安装完成后,用systemctl命令启动nfs-server服务,使其在系统启动时自动启动,并且接着验证它的状态。

[root@localhost blctrl]# systemctl start nfs-server
[root@localhost blctrl]# systemctl enable nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service →                                                                        /usr/lib/systemd/system/nfs-server.service.
[root@localhost blctrl]# systemctl status nfs-server
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor p>
   Active: active (exited) since Mon 2022-07-11 14:08:57 CST; 10s ago
 Main PID: 173982 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 23504)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service

Jul 11 14:08:57 localhost.localdomain systemd[1]: Starting NFS server and servic>
Jul 11 14:08:57 localhost.localdomain systemd[1]: Started NFS server and service>
lines 1-10/10 (END)...skipping...
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
   Active: active (exited) since Mon 2022-07-11 14:08:57 CST; 10s ago
 Main PID: 173982 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 23504)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service

注意:运行一个NFS服务器或挂载NFS共享的其它服务,诸如nfsd, nfs-idmapd, rpcbind, rpc.mounted, lockd, rpc.statd, rpc.rquotad和rpc.idmapd将被自动启动。

NFS服务器的配置文件是:

  • /etc/nfs.conf:NFS守护程序和工具的主配置文件
  • /etc/nfsmount.conf:一个NFS挂载的配置文件。

3、接着,在NFS服务器上创建要导出或共享的文件系统。在这里,我们将创建四个文件系统,其中三个被来自三个部门的员工使用:人力资源、财务和市场共享文件,一个用于root用户备份。

[root@localhost blctrl]# mkdir -p /mnt/nfs_shares/{hr,finace,market}
[root@localhost blctrl]# mkdir -p /mnt/nfs_shares/backups
[root@localhost blctrl]# ls -l /mnt/nfs_shares/
total 0
drwxr-xr-x. 2 root root 6 Jul 11 15:53 backups
drwxr-xr-x. 2 root root 6 Jul 11 15:53 finace
drwxr-xr-x. 2 root root 6 Jul 11 15:53 hr
drwxr-xr-x. 2 root root 6 Jul 11 15:53 market

4、在NFS服务器/etc/exports配置文件中导出以上文件系统来确定对于NFS客户端可访问的本地物理文件系统。

[root@localhost blctrl]# cat /etc/exports
/mnt/nfs_share/hr       192.168.50.0/24(rw,sync)
/mnt/nfs_share/finance  192.168.50.0/24(rw,sync)
/mnt/nfs_share/market   192.168.50.0/24(rw,sync)
/mnt/nfs_share/backups  192.168.50.0/24(rw,sync,no_all_squash,root_squash)

这是exports选选项中的一些(更多信息和export选项阅读man exports)

  • rw:允许在文件系统上读写。
  • sync:高速NFS服务器在请求(默认使用)时写操作(写信息到磁盘)
  • all_squash:映射来自客户端请求的所有UIDs和GIDs为匿名用户。
  • no_all_squash:映射来自客户端请求的所有UID和GIDs为在NFS服务器上相同的UIDs和GIDs。
  • root_squash:映射来自root用户或UID/GID 0的请求为匿名UID/GID。

5、要导出以上文件系统,用-a标记允许exportfs命令,表示导出或者取消导出所有目录,-r表示重新导出所有目录,与/etc/exports和在/etc/exports.d下的文件同步/var/lib/etab,而-v使能详细输出。

[root@localhost blctrl]# exportfs -arv
exporting 192.168.50.0/24:/mnt/nfs_shares/backups
exporting 192.168.50.0/24:/mnt/nfs_shares/market
exporting 192.168.50.0/24:/mnt/nfs_shares/finance
exporting 192.168.50.0/24:/mnt/nfs_shares/hr

6、要显示当前导出列表,运行以下命令。注意:exports表也应用了一些没有显式被定义的默认exports选项。

[root@localhost blctrl]# exportfs -s
/mnt/nfs_shares/hr  192.168.50.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,                                                                       secure,root_squash,no_all_squash)
/mnt/nfs_shares/finance  192.168.50.0/24(sync,wdelay,hide,no_subtree_check,sec=sy                                                                       s,rw,secure,root_squash,no_all_squash)
/mnt/nfs_shares/market  192.168.50.0/24(sync,wdelay,hide,no_subtree_check,sec=sys                                                                       ,rw,secure,root_squash,no_all_squash)
/mnt/nfs_shares/backups  192.168.50.0/24(sync,wdelay,hide,no_subtree_check,sec=sy                                                                       s,rw,secure,root_squash,no_all_squash)

7、接下来,如果你运行了firewalld服务,你需要允许必要的NFS服务流量(mounted, nfs, rpc-bind)通过防火墙,接着重载防火墙规则来允许变化:

[root@localhost blctrl]# firewall-cmd --permanent --add-service=nfs
[root@localhost blctrl]# firewall-cmd --permanent --add-service=rpc-bind
[root@localhost blctrl]# firewall-cmd --permanent --add-service=mounted
[root@localhost blctrl]# firewall-cmd --reload

8、更改/mnt/nfs_shares/backups目录的所有者和所有组为nobody:nobody:

[root@localhost blctrl]# chown nobody:nobody -R /mnt/nfs_shares/backups

在客户系统上设置NFS客户端

1、现在在客户节点,在客户系统上安装必要的软件包来访问NFS共享。运行合适你发行版的命令:

基于RHEL的发行版上

[root@areadetector blctrl]# dnf install nfs-utils nfs4-acl-tools

在Ubuntu上:

blctrl@blctrl-KVM:~/Desktop$ sudo apt install nfs-common nfs4-acl-tools

2、运行showmount命令显式NFS服务器的信息。命令应该在客户端上输出导出的文件系统。

[root@areadetector blctrl]# showmount -e 192.168.50.128
Export list for 192.168.50.128:
/mnt/nfs_shares/backups 192.168.50.0/24
/mnt/nfs_shares/market  192.168.50.0/24
/mnt/nfs_shares/finance 192.168.50.0/24
/mnt/nfs_shares/hr      192.168.50.0/24

3、接着,为挂载远程NFS文件系统创建一个本地文件系统目录并且以nfs文件系统挂载它。

[root@areadetector blctrl]# mkdir -p /mnt/backups
[root@areadetector blctrl]# mount -t nfs 192.168.50.128:/mnt/nfs_shares/backups /mnt/backups

4、接着通过mount命令和过滤nfs确认已经挂载了远程文件系统:

[root@areadetector blctrl]# mount | grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
192.168.50.128:/mnt/nfs_shares/backups on /mnt/backups type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.50.150,local_lock=none,addr=192.168.50.128)

5、要在系统重启后,能够一直挂载,运行以下命令在/etc/fstab中增加合适的条目:

[root@areadetector blctrl]# echo "192.168.50.128:/mnt/nfs_shares/backups  /mnt/backups nfs defaults 0 0" >>/etc/fstab
[root@areadetector blctrl]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Fri Jan  1 00:32:29 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rl-root     /                       xfs     defaults        0 0
UUID=2a91513c-5b4f-43fa-8703-342700a4d86a /boot                   xfs     defaults        0 0
UUID=9170-5EA4          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
/dev/mapper/rl-home     /home                   xfs     defaults        0 0
/dev/mapper/rl-swap     none                    swap    defaults        0 0
/dev/sda4  /home/blctrl                    xfs     defaults        0 0

//192.168.50.128/public /mnt/smb_public  cifs    defaults      0       0
//192.168.50.128/private /mnt/smb_private cifs username=smbuser,password=xrdxrd 0 0
192.168.50.128:/mnt/nfs_shares/backups  /mnt/backups nfs defaults 0 0
[root@areadetector blctrl]# mount -a
[root@areadetector blctrl]# df -h
Filesystem                              Size  Used Avail Use% Mounted on
devtmpfs                                 63G     0   63G   0% /dev
tmpfs                                    63G     0   63G   0% /dev/shm
tmpfs                                    63G  4.1G   59G   7% /run
tmpfs                                    63G     0   63G   0% /sys/fs/cgroup
/dev/mapper/rl-root                     330G   60G  271G  19% /
/dev/mapper/rl-home                     595M  132M  463M  23% /home
/dev/sda2                              1014M  186M  829M  19% /boot
/dev/sda4                               596G   57G  539G  10% /home/blctrl
/dev/sda1                               599M  5.7M  594M   1% /boot/efi
tmpfs                                    13G   60K   13G   1% /run/user/1000
//192.168.50.128/private                 36G  6.8G   29G  20% /mnt/smb_private
//192.168.50.128/public                  36G  6.8G   29G  20% /mnt/smb_public
192.168.50.128:/mnt/nfs_shares/backups   36G  6.8G   29G  20% /mnt/backups

6、最后,通过在服务器上创建文件并且在客户端中是否可以看到这个文件测试NFS是否运行正常:

服务器:
[root@localhost backups]# rm -rf client.txt
[root@localhost backups]# ls
[root@localhost backups]# touch server.txt
[root@localhost backups]# ls
server.txt

客户端:
[root@areadetector blctrl]# cd /mnt/backups/
[root@areadetector backups]# ls
server.txt

7、在客户端卸载远程文件系统:

[root@areadetector backups]# cd ..;umount /mnt/backups
[root@areadetector mnt]# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                   63G     0   63G   0% /dev
tmpfs                      63G     0   63G   0% /dev/shm
tmpfs                      63G  4.1G   59G   7% /run
tmpfs                      63G     0   63G   0% /sys/fs/cgroup
/dev/mapper/rl-root       330G   60G  271G  19% /
/dev/mapper/rl-home       595M  132M  463M  23% /home
/dev/sda2                1014M  186M  829M  19% /boot
/dev/sda4                 596G   57G  539G  10% /home/blctrl
/dev/sda1                 599M  5.7M  594M   1% /boot/efi
tmpfs                      13G   60K   13G   1% /run/user/1000
//192.168.50.128/private   36G  6.8G   29G  20% /mnt/smb_private
//192.168.50.128/public    36G  6.8G   29G  20% /mnt/smb_public
[root@areadetector mnt]# ls backups/
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值