linux系统之nfs(网络文件系统)文件共享

来源:互联网 发布:饥荒攻略秘籍软件 编辑:程序博客网 时间:2024/05/17 09:33

一.nfs基本介绍

  网络文件系统(NFS)是Unix系统和网络附加存储文件管理器常用的网络文件系统,允许多个客户端通过网络共享文件访问。  它可用于提供对共享二进制目录的访问,也可用于允许用户在同一工作组中从不同客户端访问其文件。  NFS协议有多个版本:Linux支持版本4、版本3和版本2, 而大多数系统管理员熟悉的是NFSv3。  默认情况下,该协议并不安全,但是更新的版本(如NFSv4)提供了对更安全的身份验证的支持,甚至可以通过kerberos进行加密。  NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。  在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。以下是NFS最显而易见的好处:  1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。  2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。  3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。     这可以减少整个网络上可移动介质设备的数量。示意图:

二.nfs服务器的配置

1.概述 #若要配置基本NFS服务器,先安装nfs-utils软件包。  然后,编辑/etc/exports以列出希望通过网络与客户端系统共享的文件系统,并指出哪些客户端对导出具有何种访问权限。  例如:      /var/ftp/pub      192.168.0.0/24(ro,sync)      #将目录/var/ftp/pub导出至192.168.0.0/24网络上的所有主机(对目录具有只读权限)。      /export/homes *.example.com(rw,sync)      #将目录/export/homes导出至exmaple.com中的所有主机(对目录具有读写权限)。   当NFS服务器运行时,每次编辑/etc/exports后,都应通过在保存更改后执行exportfs -r来确保应用这些更改。   可以使用exportfs -v显示所有导出。   NFSv4还导出pseudo-root(所有导出的文件系统的root)。如果客户端挂载nfs-server:/ ,这将在NFS服务器上的/下面相对于其位置挂载所有导出文件系统。   这对于浏览从客户端的服务器导出的所有文件系统有用。仍可单独挂载文件系统。 #默认情况下,NFS服务器将NFS客户端上的root视为用户nfsnobody。   即,如果root尝试访问挂载的导出中的文件,服务器会将其视作用户nfsnobody访问。   在NFS导出被无磁盘客户端用作/和root需要被视作root的情况中,这种安全措施存在隐患。   若要禁用此保护,服务器需要将no_root_squash添加到在/etc/exports中导出设置的选项列表:/exports/root 192.168.0.1(rw,no_root_squash)   对于NFSv4,必须在服务器上打开端口2049/TCP(对于nfsd)。   对于NFSv3和更早版本,必须为rpcbind、rpc.mountd、lockd和rpc.rquotad打开更多端口,   而在“随机”选择的端口上启动其中许多服务这一事实又增加了复杂性。   此外,NFSv2和NFSv3支持UDP传输,还要求打开相应的端口2.安装服务及配置防火墙策略   yum install nfs-utils.x86_64 -y     systemctl start nfs-server     systemctl enable nfs-server.service ###开启nfs服务     systemctl start firewalld           ###如果开启防火墙还要访问nfs,要写以下火墙策略     firewall-cmd --permanent  --add-service=nfs       ###添加nfs服务     firewall-cmd --permanent --add-service=rpc-bind   ###添加rpc-bind服务     firewall-cmd --permanent --add-service=mountd     ###添加mountd     firewall-cmd --reload               ###重载火墙策略 3.建立一个共享目录/etc/exports对客户端访问进行设置   mkdir /public   chmod 777 /public/   touch /public/test{1..3}   vim /etc/exports     /public *(sync) ##将/public共享给所有人并且数据同步 代表所有人,sync代表数据同步   exportfs -rv     ##提示:对配置的文件进行刷新,一定不能重启nfs服务,那样会导致服务卡住,这是已知的bug4.访问控制vim /etc/exports/public 172.25.0.0/24(sync)  ##只允许172.25.0.0/24网段的ip访问/public *.example.com(sync)  ##只允许同一个域名的主机访问/public 172.25.254.20(ro,sync) 172.25.254.21(rw,sync)  ##允许20主机只读访问 ,21主机读写访问/public *(rw,sync,no_root_squash)  ##获得root权限在另外一台虚拟机上测试:nfs主机:*.example域名可以访问,但是没有写权限测试:nfs主机:172.25.254.250主机可以访问,可以写150主机测试:nfs主机:150主机获得roto权限测试主机:nfs主机:1001为用户,1001为用户组150主机测试:5.永久挂载NFS文件系统:vim /etc/fstab172.25.254.250:/public /mnt nfs defaults 0 0rw:挂载可读写的文件系统ro:挂载只读文件系统vers=4:尝试只使用指定的NFS版本进行挂载。如果服务器不支持该版本,则挂载请求失败soft:如果NFS请求超时,三次尝试后返回错误。权衡数据完整性与提高客户端响应性。(默认行为hard,将无限期地重试)
原创粉丝点击