实战NFS文件共享存储详解
对Linux有兴趣的朋友加入QQ群:476794643 在线交流
本文防盗链:http://zhang789.blog.51cto.com
目录
- NFS简介
- NFS工作流程
- 使用NFS的好处
- NFS应用环境
- NFS服务器安装
- NFS客户端配置
- 实例:创建web共享
NFS简介
NFS(Network File System)即网络文件系统,Sun公司开发,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
简单的说:NFS是Linux之间的一种文件共享系统(Linux与Windows之间的共享使用Samba是专业的),NFS配置完成之后,客户端访问这个共享就像访问本地文件一样!(NFS通过软件也可以实现与Windows之间的共享)
NFS工作流程
RPC,Remote Procedure Call Protocol
,远程过程调用协议,是实现本地调用远程主机实现系统调用的协议。 portmapper
:负责分配RPC服务器的端口,并在客户端请求时,负责响应目的RPC服务器端口返回给客户端,工作在tcp与udp的111端口上。 mountd
:是nfs服务的认证服务的守护进程,客户端在收到返回的真正端口时,就会去连接mountd,认证取得令牌。 nfsd
:nfs的守护进程,负责接收到用户的调用请求后与内核发出请求并得到调用结果响应给用户。 idmapd
:是NFS的一个程序,用来负责远程客户端创建文件后的权限问题。
使用NFS的好处
使用NFS的好处
- 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
- 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用,而却通过Autofs可以实现目录漫游!(NIS,LDAP)
- 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
- 强有力的权限控制
NFS应用环境
NFS应用环境
- 多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
- 在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。家目录漫游
- 不同客户端可在NFS上观看影视文件,节省本地空间。
- 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下。
- NFS是运行在应用层的协议。随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。
- 控制统一存储,比如集群,这样当我们的访问集群提供的服务,我们拿到的数据怎么都是一致的!
监听端口
NFS服务nfsd本身监听的端口是2049/tcp和2049/udp,但还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口
NFS服务器安装
要安装NFS服务器必须安装两个软件包:rpcbind和nfs-utils
Rpcbind,是rpc主程序,
Nfs-utils,是nfs的主程序
[root@localhost ~]# yum -y install rpcbind nfs-utils #基本都已经安装过了[root@localhost ~]# systemctl start nfs
主要文件:
- /etc/exports 主配置文件
- /usr/sbin/exportfs 维护NFS共享资源的指令,一般用于NFS服务器端
- /usr/sbin/showmount 查看NFS共享出来的目录资源,一般用于NFS客户端
- /var/lib/nfs/xtab NFS的日志文件,主要记录曾经连入NFS服务器端的客户端信息
/etc/exports详解
/etc/exports文件是NFS主要的配置文件,该文件用于设置服务器的共享目录,以及目录允许访问的主机,访问权限,和其他选项,NFS安装后会在/etc/目录下创建一个空文件,用户需要自定编辑
格式
共享目录 [客户端1(选项1,选项2…)] [客户端1(选项1,选项2…)]…
- 共享目录:即提供了NFS客户端使用的目录
- 客户端:可以访问共享目录的计算机,可以通过IP地址和主机名进行指定,也可以使用子网掩码指定网段
- 选项:指定该共享目录的访问权限
一些常见权限参数
ro | 该主机对该共享目录有只读权限 |
rw | 该主机对该共享目录有读写权限,要注意是针对nfs之外还有目录自己权限 |
root_squash | 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户 |
no_root_squash | 客户机用root访问该共享文件夹时,不压制root用户身份 |
all_squash | 客户机上的任何用户访问该共享目录时都映射成匿名用户 |
anonuid | 将客户机上的用户映射成指定的本地用户ID的用户 |
anongid | 将客户机上的用户映射成属于指定的本地用户组ID |
sync | 资料同步写入到内存与硬盘中 |
async | 资料会先暂存于内存中,而非直接写入硬盘 |
insecure | 允许从这台机器过来的非授权访问 |
exportfs命令:输出共享目录
NFS服务启动后,会读取/etc/exports配置文件的内容,把文件中设置的共享目录输出,供客户端使用,在NFS后,如果对/etc/exports进行了修改,需要通过exportfs命令进行对共享目录输出,输入完成后,客户端才能访问新设置的共享目录
1. -a:操作所有文件系统2. -ra:重新导出所有文件系统3. -ua:取消导出的所有文件系统4. -v:显示详细信息
创建一个共享
[root@localhost ~]# mkdir /www[root@localhost ~]# cd /www/[root@localhost www]# mkdir www.mageedu.com[root@localhost www]# mkdir bbs.mageedu.com[root@localhost www]# cat /etc/exports/www/www.mageedu.com 192.168.211.128(rw,no_root_squash)/www/bbs.mageedu.com 192.168.211.128(rw,no_root_squash)[root@localhost www]# exportfs -r
NFS客户端配置
要在NFS客户端使用服务器的共享目录,需要在本地主机上启动rpcbind服务,还可以使用showmount命令查看NFS服务器共享的目录有哪些,使用mkdir命令在本地建立共享目录的挂载点,然后受用mount命令挂载到本地
查看共享目录列表(showmount)
1. -a :全部 在nfs服务器端显示所有的挂载会话2. -d :文件 在服务器端执行,显示那个导出的文件系统被那些客户端挂载过3. -e :共享,在客户端执行,探查某主机所导出的nfs文件系统,使用格式为showmount -e Server_IP
[[email protected] ~]# showmount -e 192.168.211.130Export list for 192.168.211.130:/www/bbs.mageedu.com 192.168.211.128/www/www.mageedu.com 192.168.211.128
挂载共享目录
[[email protected] ~]# mkdir /www/www.mageedu.com -pvmkdir: created directory `/www‘mkdir: created directory `/www/www.mageedu.com‘[[email protected] ~]# mount -t nfs 192.168.211.130:/www/www.mageedu.com /www/www.mageedu.com[[email protected] ~]# df -h /www/www.mageedu.com/Filesystem Size Used Avail Use% Mounted on192.168.211.130:/www/www.mageedu.com 40G 170M 40G 1% /www/www.mageedu.com
卸载挂载目录
[root@localhost ~]# umount /www/www.mageedu.com/
开机自动挂载NFS共享目录
[[email protected] ~]# tail -1 /etc/fstab 192.168.211.130:/www/www.mageedu.com /www/www.mageedu.com nfs defaults 0 0
实例:创建web共享
共享服务器配置
1、 创建web目录
[root@localhost ~]# mkdir /www/{www,bbs}.mageedu.com -pvmkdir: created directory `/www‘mkdir: created directory `/www/www.mageedu.com‘mkdir: created directory `/www/bbs.mageedu.com‘[root@localhost www.mageedu.com]# echo "<h1>Server WWW Mageedu</h1>" >index.html
2、共享web目录
[[email protected] www.mageedu.com]# cat /etc/exports /www/www.mageedu.com 192.168.211.0/24(rw,no_root_squash)[[email protected] www.mageedu.com]# exportfs –r
3、启动nfs功能
[[email protected] www.mageedu.com]# service nfs startStarting NFS services: [ OK ]Starting NFS quotas: [ OK ]Starting NFS mountd: [ OK ]Starting NFS daemon: [ OK ]Starting RPC idmapd: [ OK ]
客户端web服务配置(WEB1)
1、创建挂载点
[root@localhost ~]# mkdir /www/www.mageedu.com -pvmkdir: created directory ‘/www’mkdir: created directory ‘/www/www.mageedu.com’
2、挂载共享目录
[[email protected] ~]# showmount -e 192.168.211.128Export list for 192.168.211.128:/www/www.mageedu.com 192.168.211.0/24[[email protected] ~]# mount -t nfs 192.168.211.128:/www/www.mageedu.com /www/www.mageedu.com[[email protected] ~]# ll /www/www.mageedu.com/total 4-rw-r--r-- 1 root root 28 Jul 25 08:53 index.html
3、安装配置httpd
[[email protected] yum.repos.d]# yum -y install httpd[[email protected] yum.repos.d]# vim /etc/httpd/conf/httpd.confDocumentRoot "/www/www.mageedu.com/"
## Relax access to content within /var/www.#<Directory "/www/www.mageedu.com"> AllowOverride None # Allow open access: Require all granted</Directory>
# Further relax access to the default document root:<Directory "/www/www.mageedu.com">[[email protected] yum.repos.d]# systemctl reload httpd