CentOS7部署NFS服务

版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://cloud.tencent.com/developer/article/1434707

1、NFS简介

  • NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件 运行模式: C/S 模式 端口:CentOS7以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接

2、配置NFS服务

  • 配置NFS服务器以共享网络上的目录,本实验​基于以下环境: +———————-+ | +———————-+ | NFS Server |10.1.1.56 | 10.1.1.53| NFS Client | | vdevops.org +———-+———-+ linuxprobe.org | +———————-+ +———————-+

3、配置NFS SERVER

代码语言:javascript
复制
[root@vdevops ~]# yum -y install nfs-utils
[root@vdevops ~]# vi /etc/idmapd.conf
  • line 5: uncomment and change to your domain name

Domain = vdevops.org
[root@vdevops ~]# vi /etc/exports

  • write settings for NFS exports

/home 10.1.1.0/24(rw,no_root_squash)
[root@vdevops ~]# systemctl start rpcbind nfs-server
[root@vdevops ~]# systemctl enable rpcbind nfs-server
[root@vdevops ~]# showmount -e #查看NFS共享的目录
Export list for vdevops.org:
/home 10.1.1.0/24

  • 防火墙开启情况下,做如下配置

[root@vdevops ~]# firewall-cmd --add-service=nfs --permanent
success
[root@vdevops ~]# firewall-cmd --reload
success

  • Option Description
代码语言:javascript
复制
rw  在NFS卷上同时允许读取和写入请求。
ro 在NFS卷上只允许读取请求。
sync 只有在更改已提交到稳定存储后才会对请求进行回复。 (默认)
async 此选项允许NFS服务器违反NFS协议并在该请求所做的任何更改已提交到稳定存储器之前对请求进行回复。
secure 此选项要求请求源自小于IPPORT_RESERVED(1024)的Internet端口。 (默认)
insecure 此选项接受所有端口。
wdelay 如果其怀疑另一个相关的写入请求可能正在进行或可能很快到达,则延迟向磁盘提交写入请求。 (默认)
no_wdelay 如果同时设置了异步,此选项不起作用。如果NFS服务器怀疑另一个相关的写入请求可能正在进行或可能很快到达,则NFS服务器通常会将写入请求延迟提交给磁盘。这允许多个写入请求提交到磁盘,其中一个操作可以提高性能。如果NFS服务器主要接收小的无关请求,这种行为实际上可能会降低性能,因此no_wdelay可用于关闭它。
no_subtree_check 此选项禁用子树检查,它具有温和的安全影响,但可以提高某些情况下的可靠性
root_squash 将请求从uid / gid 0映射到匿名uid / gid。请注意,这不适用于可能同样敏感的任何其他uid或gids,例如用户bin或组工作人员。
all_squash 将所有uids和gids映射到匿名用户。用于NFS导出的公共FTP目录,新闻spool目录等。
no_all_squash Turn off all squashing. (Default)
anonuid=UID 这些选项显式设置匿名帐户的uid和gid。此选项主要适用于PC / NFS客户端,您可能希望所有请求显示为来自一个用户。例如,在下面的示例部分中考虑/ home / joe的导出条目,它将所有请求映射到uid 150。

4、配置NFS Client

  • 实验环境和NFS Server相同
代码语言:javascript
复制
[root@linuxprobe ~]# yum -y install nfs-utils
[root@linuxprobe ~]# vi /etc/idmapd.conf
-- line 5: 取消注释,改变域名
Domain = vdevops.org
[root@linuxprobe ~]# systemctl start rpcbind
[root@linuxprobe ~]# systemctl enable rpcbind
[root@linuxprobe ~]# showmount -e vdevops.org #查看NFS Server共享的目录,记得本地hosts配置域名解析
Export list for vdevops.org:
/home 10.1.1.0/24
[root@linuxprobe ~]# mount -t nfs vdevops.org:/home /home
[root@linuxprobe ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 18G 4.4G 14G 25% /
devtmpfs devtmpfs 483M 0 483M 0% /dev
tmpfs tmpfs 493M 100K 493M 1% /dev/shm
tmpfs tmpfs 493M 13M 480M 3% /run
tmpfs tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 125M 373M 26% /boot
tmpfs tmpfs 99M 52K 99M 1% /run/user/0
/dev/sr0 iso9660 4.1G 4.1G 0 100% /run/media/root/CentOS 7 x86_64
vdevops.org:/home nfs4 18G 1.4G 17G 8% /home
  • –配置NFS开机自动挂载
代码语言:javascript
复制
[root@linuxprobe ~]# cat "vdevops.org:/home  /home                   nfs     defaults        0 0" >> /etc/fstab
--配置自动安装。例如,在/mntdir上设置NFS目录。
[root@linuxprobe ~]# yum -y install autofs
[root@linuxprobe ~]# vi /etc/auto.master
--add follows to the end
/- /etc/auto.mount
[root@linuxprobe ~]# vi /etc/auto.mount #此文件默认不存在,需新建
--create new : [mount point] [option] [location]
/mntdir -fstype=nfs,rw dlp.srv.world:/home
[root@linuxprobe ~]# mkdir /mntdir
[root@linuxprobe ~]# systemctl start autofs
[root@linuxprobe ~]# systemctl enable autofs
--启动到挂载点确认是否挂载成功
[root@linuxprobe ~]# cd /mntdir
[root@linuxprobe mntdir]# ls
shaon testuser wang
[root@linuxprobe mntdir]# ll
total 0
drwx------. 2 shaon shaon 59 Oct 26 01:02 shaon
drwx------. 2 1002 1003 59 Oct 26 20:19 testuser
drwx------. 3 wang wang 90 Oct 26 15:39 wang
[root@linuxprobe mntdir]# cat /proc/mounts | grep mntdir
/etc/auto.mount /mntdir autofs rw,relatime,fd=18,pgrp=48875,timeout=300,minproto=5,maxproto=5,direct 0 0
vdevops.org:/home /mntdir nfs4 rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.1.1.53,local_lock=none,addr=10.1.1.56 0 0
--可以看到已经挂载成功