青蛙学Linux—NFS
NFS,Network File Syttem,网络文件系统。它允许网络上运行不同操作系统的主机通过网络连接到运行NFS服务的主机上,以实现数据共享。NFS的配置非常简单,经过简单的设置既能快速使用NFS。
使用NFS,首先在服务端运行NFS服务,并设置共享指定的目录,客户端即可将该目录挂载到本地,以使用这些共享的目录。
1、NFS服务端配置
要运行NFS服务端依赖以下软件包:
rpcbind nfs-utils
请确保运行NFS服务端的主机已经安装了以上软件包。如果以上软件包尚未安装,可以使用YUM进行安装。
NFS服务端需要启动以下两个服务:
rpcbind nfs nfslock # 分布式锁,运行在服务端,由客户端进行请求加锁,一个可选的服务
NFS服务端的配置文件为:
/etc/exports
该文件默认为空。该文件的格式非常简单:
共享路径 客户端地址(选项)
- 共享路径:提供给客户端访问的目录
- 客户端地址:允许访问服务器共享资源的主机,可以是IP地址、主机名、域名,支持通配符
- 选项:可能为以下值, ro – read only,客户端对共享资源仅有只读的权限;rw – read write,客户端对共享资源拥有读写的权限;no_root_squash - 信任客户端root用户,如果客户端登录的用户为root,则客户端对共享资源拥有最高权限;root_squash - 默认值,不信任客户端root用户,如果客户端登录的用户为root,则将被映射成为nfsnobody,对于共享资源仅有只读的权限;all_squash - 不管客户端登录的是什么用户,都将被映射为nfsnobody;no_all_squash - 默认值,只有当客户端登录的用户UID和GID与共享资源的UID和GID一致时,该用户才对共享资源拥有读写权限;sync - 默认值,共享数据同步写入磁盘;async - 数据暂时保存在内存,不写入磁盘
在完成/etc/exports的配置之后,使用以下命令使配置立即生效:
exportfs [选项]
常用选项:
- -r:重新挂载共享目录
- -v:在屏幕上输出详细信息
2、连接NFS服务器
2.1、Linux主机连接NFS服务器
在需要连接到NFS服务器的主机上也必须安装以下依赖包:
rpcbind nfs-utils
使用mount命令即可连接到NFS服务器上指定的共享目录:
mount -t nfs NFS服务器:共享目录 本地目录
使用以下命令可以查看NFS服务器上的共享目录:
showmount -e NFS服务器
2.2、Windows连接NFS服务器
NFS支持不同的操作系统,所以Windows也可以连接到NFS服务器以使用共享的资源。这里以Windows 10为例介绍如何在Windows下连接NFS服务器。
安装Windows下的NFS支持软件:
打开控制面板,进入程序和功能,然后点击启用或关闭Windows功能选项,勾选以下内容
确定后等待功能安装完毕,然后进入命令提示符,使用以下命令连接NFS服务器:
mount \\NFS服务器\共享目录 盘符
3、一个例子
有主机A、B、C三台主机,在主机A上运行NFS服务,主机B和C做为客户端连接到主机A上使用同一个共享目录。
三台主机的状况如下:
- 主机A:IP地址为192.168.0.106,操作系统为CentOS 6.10
- 主机B:操作系统为CentOS 7.5.1804
- 主机C:操作系统为Windows 10
3.1、NFS服务端设置
使用YUM查看是否已经安装NFS依赖的软件包:
[root@localhost /]# rpm -qa|grep rpcbind rpcbind-0.2.0-16.el6.x86_64 [root@localhost /]# rpm -qa|grep nfs-utils nfs-utils-lib-1.1.5-13.el6.x86_64 nfs-utils-1.2.3-78.el6_10.1.x86_64
查看rpcbing和nfs服务是否已经启动:
[root@localhost ~]# service rpcbind status rpcbind (pid 1684) 正在运行... [root@localhost ~]# service nfs status rpc.svcgssd 已停 rpc.mountd (pid 2503) 正在运行... nfsd (pid 2519 2518 2517 2516 2515 2514 2513 2512) 正在运行... rpc.rquotad (pid 2498) 正在运行...
服务端设置允许任何主机连接,并设置rw及all_squash,共享目录为/data。在/etc/exports中写入如下内容:
/data *(rw,all_squash)
由于使用的是all_squash选项,客户端登录到NFS服务器的用户将被自动映射为nfsnobody,所以必须将/data目录的属主和属组设置为nfsnobody,这样客户端才可以读写共享目录:
[root@localhost /]# chown -R nfsnobody:nfsnobody data
使配置立即生效:
[root@localhost ~]# exportfs -r
3.2、主机B连接NFS服务器
主机B的操作系统为CentOS 7.5.1804,所以这里先检查下NFS依赖的软件包是否安装:
[root@localhost ~]# rpm -qa|grep rpcbind [root@localhost ~]# rpm -qa|grep nfs-utils
无任何返回信息,表明依赖的软件包尚未安装,使用YUM安装这两个依赖包:
[root@localhost ~]# yum install rpcbind nfs-utils
安装好依赖包后使用mount命令挂载NFS服务器上的共享目录,挂载到主机B的/nfs目录下:
[root@localhost ~]# mount -t nfs 192.168.0.106:/data /nfs
使用df命令查看是否挂载成功:
[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 22G 2.1G 20G 10% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.8M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot tmpfs 783M 0 783M 0% /run/user/0 192.168.0.106:/data 22G 2.9G 18G 14% /nfs
通过返回的信息可以看到共享目录已经挂载到了/nfs。
3.3、主机C连接NFS服务器
首先查看控制面板-程序和功能-启用和关闭Windows功能下的NFS服务是否已经安装,安装完成后即可使用以下命令连接NFS服务器,并为共享目录分配 x: 盘符:
Microsoft Windows [版本 10.0.14393] (c) 2016 Microsoft Corporation。保留所有权利。 C:\Users\FangYu>mount \\192.168.0.106\data x: x: 现已成功连接到 \\192.168.0.106\data 命令已成功完成。
此时在资源管理器里就可以看到x盘了: