Linux 下 NFS 文件共享服务的部署
- NFS(Network File System)网络文件系统
服务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共享文件。
1. NFS 服务的安装
在 NFS 客户端,服务端都进行安装
[root@server ~]# yum install nfs-utils.x86_64
# nfs 服务安装
[root@server ~]# systemctl start nfs-server
# nfs 服务启动
[root@server ~]# systemctl enable nfs-server
# nfs 服务开机自启
注意关闭服务端与客户端的防火墙
NFS 服务程序的配置文件为 /etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的 NFS 客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
NFS 服务程序配置文件的参数如下
参数 | 作用 |
ro | 只读 |
rw | 读写 |
root_squash | 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户 |
no_root_squash | 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员 |
all_squash | 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
2. NFS 服务的共享配置
2.1 建立 nfs 共享目录
[root@server ~]# mkdir /nfsshare
# 建立共享目录
[root@server ~]# chmod 777 /nfsshare/
# 修改目录权限,让所有人可以访问
在服务端编辑主配置文件 /etc/exports
[root@server ~]# vim /etc/exports #编辑配置文件
内容如下:
1 /mnt *(sync,rw,anonuid=1001,anongid=1001)
#共享目录 对所有用户共享(同步数据,读写权限,指定用户ID,组ID'如建立的文件属于此用户')
2 /nfsshare 172.25.151.0/24(sync) 172.25.151.50(sync,rw)
#共享目录 对此网段的共享(数据同步)对此 IP 进行共享(数据同步,读写)
编辑完成后执行:exportfs -rv 进行刷新
exportfs #维护导出的NFS文件系统的表
-r #重新导出所有目录
-v #示导出选项列表
执行如下:
编辑配置文件
进行列表刷新
在客户端进行使用
[root@client ~]# showmount
#显示NFS服务器的挂载信息
-e #显示 NFS 服务器的共享列表
-a #显示本机挂载的文件资源的情况
-v #显示版本号
[root@client ~]# showmount -e 172.25.151.150
#查看 172.25.151.150 主机的 NFS 共享目录列表
[root@client ~]# mount 172.25.151.150:/nfsshare /mnt
#执行此命令进行挂载使用
将172.25.151.150 下的共享目录 /nfsshare 挂载到客户端的 /mnt 下使用
执行如下:
执行 showmount -e IP 查看对应主机的共享目录信息
在IP为 172.25.151.50 客户端进行挂载使用,在配置文件中赋予的权限为 rw
在IP为 172.25.151.250 客户端进行挂载使用,在配置文件中赋予的权限为 ro
注:
将172.25.151.150 ,即 nfs 服务器下的 /mnt 目录进行挂载使用,在配置文件中所指定的‘annotallow=1001,annotallow=1001’意味着,在客户端进行操作后的用户 id 为1001
示例如下:
将挂载信息填入/etc/fstab 文件后,系统在每次开机时都自动将其挂载,
而 autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和
服务器的硬件资源。
3. autofs 自动挂载服务
无论是 Samba 服务还是 NFS 服务,都要把挂载信息写入到/etc/fstab 中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费
autofs 服务程序是一种 Linux 系统守护进程,当检测到用户视图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。
进行服务的安装及使用
[root@client ~]# yum install autofs.x86_64 -y #进行安装
[root@client ~]# systemctl start autofs #开启服务
[root@client ~]# systemctl enable autofs #开机自启
#启动完毕后,会生成 /net 目录,此目录下没有任何东西。
#进入 /net/加NFS主机的IP 然后可以看到默认共享的目录,
#进入目录后,将会自动进行挂载操 作并将其作为挂载点
[root@client ~]# cd /net/172.25.151.150/nfsshare/
#当挂载设备闲置后,默认是在300s后将其卸载,可以通过编辑配置文件对此时间进行修改
#编辑 /etc/sysconfig/autofs 对第 13 行进行修改
[root@client ~]# vim /etc/sysconfig/autofs
编辑第 13 行:
13 TIMEOUT=5 规定了默认卸载时间,单位为 s (秒)
执行如下:
直接进入对应目录,自动挂载
编辑配置文件,修改自动卸载时间
未执行卸载操作,只要系统不再以任何方式访问共享目录 5 秒后自动卸载
使用 autofs 进行挂载目录以及挂载类型的指定
/etc/auto.master 此处定义最终挂载点的上层目录
/etc/auso.test 此处定义最终挂载点(此文件自己创建)
编辑 /etc/auto.master
[root@client ~]# vim /etc/auto.master
在第 7 行后添加
9 /nfs /etc/auto.test
其中/nfs #最终挂载点的上层目录
/etc/auto.test 子配置目录
建立并编辑 /etc/auto.test 对最终挂载点,挂载方式以及挂载设备进行确认
[root@client ~]# vim /etc/auto.test
内容如下:
1 test -ro 172.25.151.150:/nfsshare
其中 test 最终挂载点
-ro 只读挂载
172.25.254.239:/nfsshare 设备
重启服务后 进入 /nfs/test
[root@client ~]# cd /nfs/test
执行如下:
编辑配置文件:
/etc/auto.master
/etc/auto.test
进入目录(/nfs/test)进行查看