NFS概要
网络文件系统(NFS)是Unix系统和网络附加存储文件管理器常用的网络文件系统,允许多个客户端通过网络共享文件访问。它可用于提供对共享二进制目录的访问,也可用于允许用户在同一用户组中从不同客户端访问文件。
NFS协议有多个版本:Linux支持版本4、版本3和版本2,而大多数系统管理员熟悉的是NFSv3。默认情况下,该协议并不安全,但是更新的版本(如NFSv3)提供了对更安全的身份验证的支持,甚至可以通过Kerberos进行加密NFS是票据kerbose认证方式,版本4比3多了票据认证,版本3比2多了用户认证。
以下是NFS最显而易见的好处:
- 1.节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
- 2.用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
- 3.一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
应用:
NFS 有很多实际应用。下面是比较常见的一些:
- 多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
- 在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
- 不同客户端可在NFS上观看影视文件,节省本地空间。
- 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下。 NFS是运行在应用层的协议。随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。
NFS基本环境的配置
安装yum install nfs-utils -y
systemctl start nfs // 开启服务
systemctl enable nfs-server // 开机自启nfs-server
注意要关闭火墙
查看共享目录,这是里面是空的
[root@smb_server ~]# showmount -e 172.25.254.209
Export list for 172.25.254.209:
创建共享目录及文件
mkdir /westosshare
touch /westosshare/file{1..5}
NFS服务器的配置
NFS的主配置文件: /etc/exports
编辑文件/etc/exports配置
man 5 exports查看文件的写法,这个比samba要简单很多
//发现还可以用正则表达式书写
/westosshare 172.25.254.9(sync) 172.25.254.110(ro)
//sync 数据同步 只给172.25.254.9所有权限 给172.25.254.110只读的权限
//修改完不能重启服务,不然会读数据同步,非常慢
刷新用 exportfs -rv //-v :显示 ; -r :刷新
在172.25.254.9进行远程挂载:
mount 172.25.254.209:/westosshare /mnt/
- 用mount可以看见挂载的相应信息
用172.25.254.209本身去mount也会失败,因为没有权限
[root@smb_server ~]# mount 172.25.254.209:/westosshare /mnt/
mount.nfs: access denied by server while mounting 172.25.254.209:/westosshare
showmount -e 172.25.254.209都可以查看209共享的目录:
再次编辑/etc/exports
/westosshare 172.25.254.9(sync) 172.25.254.209(rw,sync,anonuid=1000,anongid=1001)
//给209添加读写,数据同步,匿名用户创建时文件的uid是1000,gid是1001
no_root_squash //写的时候以root身份操作,出来的文件所属用户所属组都是root
测试:
westos1 是写了 : (rw,sync,no_root_squash)
westos2 写了 :
(rw,sync,anonuid=1000,anongid=1001,no_root_squash)
//可见后者优先级更高
westos3写了
//(rw,sync,anonuid=1000,anongid=1001)
在/etc/fstab里面写
172.25.254.209:/westosshare /home nfs defaults 0 0
重新登陆之后进去就直接挂载到/home了,也可以直接操作
但是,不合理的地方,自己不用的时候,依然被别人占用
*解决这个问题,就要实现在客户端上闲置时自动卸载,用的时候自动挂载
autonfs 只支持nfs协议
安装yum install autofs -y
systemctl start autofs.service
开启之后会自动生成一个/net文件
//进入后ls没有东西
- cd 172.25.254.209 ##可以直接进入172.25.254.209查看共享的文件
- 但是出来后df发现还是有挂载,这是因为这个服务默认休眠时间是300秒 所以可以修改他的配置文件
/etc/autofs.conf ,如果没有这个文件,就去 /etc/sysconfig/autofs
发现里面timeout = 300 单位为秒
将他修改为3
出来之后,等待三秒
df挂载点就取消了 //(注,df也会触发使用挂载,所以出来等待三秒再df)
想让客户端自己直接进入共享的家目录,进去用户家目录之后,就直接是共享的
比如业务服务器,正常写数据,但是写的,包括自己的用户目录都是直接的共享目录,这样在挂了,没有任何影响
首先要再主服务器(server端)编辑可以共享的目录
这里共享两个用户目录:
[root@smb_server /]# cp -rp /home/student/ /westosshare/
[root@smb_server /]# cp -rp /home/lee/ /westosshare/
编辑/etc/exports,
/westosshare/student 172.25.254.0/24(rw,sync,anonuid=1000,anongid=1000)
/westosshare/lee 172.25.254.0/24(rw,sync,anonuid=1001,anongid=1001)
配置好后 exportfs -rv ##刷新
下面是client端,即相当于业务服务器
编辑/etc/auto.master ##是编辑它的存放目录
最终挂载点的上一层 /etc/auto.nfs ##指定配置文件,这个是自己编写的
/home /etc/auto.nfs ##名称随意
创建/etc/auto.nfs
编辑/etc/auto.nfs
* ... /& ##语法: *是什么&就是什么,相当于接收变量
* 172.25.254.209:/westosshare/& ##这里前面\*是任意匹配填写,后面的&是替换前面*输入的,即*写了什么,它就是什么
或者单独的话
student 172.25.254.209/westosshare/student
这里选择*的写法
重启autofs
在客户端student用户下写的文件就直接同步server端了
- 注 :
- 部署服务时,一定要搞清你的安装源,和你的版本
- yum history ##有update更新时,一定要查看你的版本
版本兼容性一定要考虑!!要使用和自己系统匹配的版本!!
关闭火墙
//客户端登陆,创建文件之后,直接就共享出去了
- 共享文件实际为共享存储设备的使用权,但是会影响数据传输
下一篇将讲解直接贡享设备使用权的方法,更加节省系统资源 — iscsi