1为什么用共享存储
2存储有哪些工具
3共享存储应用场景有哪些
4部署nfs共享存储
5客户端尝试连接共享存储
什么是NFS?
NFS 是 Network File System 的缩写及网络文件系统。 NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS 系统和 Windows 网络共享、网络驱动器类似, 只不过 windows 用于局域网, NFS 用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统 FastDFS,glusterfs,HDFS
那么我们为什么要使用数据存储共享服务?
1实现多台服务器之间数据共享
2实现多台服务器之间数据一致
下面我将通过图解给大家展示集群需要共享存储服务的理由。
1A 用户上传经过负载均衡,负载均衡将上传请求调度至 WEB1 服务器上。
2B 用户访问 A 用户上传的,此时 B 用户被负载均衡调度至 WEB2 上,因为 WEB2 上没有这张,所以 B用户无法看到 A 用户传的
如果有共享存储的情况
1A 用户上传无论被负载均衡调度至 WEB1 还是 WEB2, 最终数据都被写入至共享存储
2B 用户访问 A 用户上传时,无论调度至 WEB1 还是 WEB2,最终都会上共享存储访问对应的文件,这样就可以访问到资源了
NFS工作原理
1用户进程访问 NFS 客户端,使用不同的函数对数据进行处理
2NFS 客户端通过 TCP/IP 的方式传递给 NFS 服务端
3NFS 服务端接收到请求后,会先调用 portmap 进程进行端口映射。
4nfsd 进程用于判断 NFS 客户端是否拥有权限连接 NFS 服务端。
5Rpcmount 进程判断客户端是否有对应的权限进行验证。
6idmap 进程实现用户映射和压缩
7最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
注意: rpc 是一个远程过程调用,那么使用 nfs 必须有 rpc 服务
1nfs依赖于RPC服务来传递消息
2NFS服务启动的端口号是随机的,启动之后会向本地的RCP注册
3先启动RPC服务,再启动NFS服务
4NFS和RPC之间的通讯是他们自己内部完成的,对于用户来说无感知
5NFS客户端和服务端不会直接沟通,必须通过RPC服务传递消息
6防火墙要开放RPC服务的端口
nfs 服务程序的配置文件为/etc/exports,需要严格按照共享目录的路径 允许访问的 NFS 客户端(共享权限参数)格式书写,定义要共享的目录与相应的权限,具体书写方式如下图所示
配置文件参数解释:
执行 man exports 命令,然后切换到文件结尾,可以快速查看如下样例格式:
nfs共享参数 参数作用
rw 读写权限
ro 只读权限
root_squash
当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户(不常用)
no_root_squash
当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员(不常用)
all_squash
无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户(常用)
no_all_squash
无论 NFS 客户端使用什么账户访问,都不进行压缩
sync
同时将数据写入到内存与硬盘中,保证不丢失数据
async
优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid
配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统
anongid
配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统
写入配置文件:注意!IP地址和后面的小括号没有空格
创建数据目录和授权:
在使用 NFS 服务进行文件共享之前,需要使用 RPC(Remote Procedure Call 远程过程调用服务将 NFS 服务器的IP 地址和端口号信息发送给客户端。因此,在启动 NFS 服务之前,需要先重启并启用 rpcbind 服务程序,同时都加入开机自启动
客户端安装nfs服务十分简单,只需要安装nfs软件包即可
安装完成后只需要启动rpcbind,不需要启动nfs
使用showmount命令查看nfs共享信息查询 NFS 服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。
挂载命令: 创建挂载目录
在 NFS 客户端创建一个挂载目录, 使用 mount 命令并结合-t 参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的 IP 地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录
查看是否挂载成功:
测试写入数据是否正常
写入开机自动挂载
卸载命令:注意!卸载的时候如果提示”umountnfs: /nfsdir: device is busy”先切换到其他目录再卸载
强制卸载命令:
服务端配置:
客户端挂载:
测试读取:
写入测试:
服务端配置:
服务端创建用户及授权:
重启NFS服务:
更改目录授权:
客户端 *** 作:
我们会发现依然可以写入,但是为了避免这种情况发生,建议客户端也创建相同uid gid的用户
参考博客
启动NFS会开启如下端口:
1)portmapper 端口:111 udp/tcp;
2)nfs/nfs_acl 端口:2049 udp/tcp;
3)mountd 端口:"32768--65535" udp/tcp
4)nlockmgr 端口:"32768--65535" udp/tcp
系统 RPC服务在 nfs服务启动时默认会给 mountd 和 nlockmgr 动态选取一个随机端口来进行通讯。
1查看NFS启动后的端口
2将随机的端口号设置固定
3重启nfs和rpc服务
4再次查看端口信息,发现端口号已经固定了
5设置iptables
6保存配置
如果设置了开机自启动,但是系统启动的时候NFS并没有提供服务,就会导致开机自检的时候卡在挂在那一步
NFS 存储优点
1NFS 文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
2NFS 文件系统内存放的数据都在文件系统之上,所有数据都是能看得见
NFS 存储局限
1存在单点故障, 如果构建高可用维护麻烦 web->nfs()->backup
2NFS 数据明文, 并不对数据做任何校验。
3客户端挂载 NFS 服务没有密码验证, 安全性一般(内网使用)
NFS 应用建议
1生产场景应将静态数据尽可能往前端推, 减少后端存储压力
2必须将存储里的静态资源通过 CDN 缓存 jpg\png\mp4\avi\css\js
3如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用
准备 3 台虚拟机服务器,并且请按照要求搭建配置 NFS 服务。
NFS 服务端(A)
NFS 客户端(B)
NFS 客户端(C)
1在 NFS 服务端(A)上共享/data/w(可写)及/data/r(只读)
2在 NFS 客户端(B/C)上进行挂载
环境准备
热门频道
首页
博客
研修院
VIP
APP
问答
下载
社区
推荐频道
活动
招聘
专题
打开CSDN APP
Copyright © 1999-2020, CSDNNET, All Rights Reserved
c语言文件读写 *** 作代码
打开APP
开心才是真
关注
Linux网络文件系统NFS详解 转载
2018-12-07 14:21:17
开心才是真
码龄5年
关注
Linux网络文件系统NFS详解
阅读目录
什么是文件系统,NFS文件系统又是什么?
NFS包括两部分,服务端(servlet)及客户端(client)
NFS配置文件
回到顶部
什么是文件系统,NFS文件系统又是什么?
简单的说,文件系统就是通过软件对磁盘上的数据进行组织和管理的一种机制,对其的一种封装或透视。
你女朋友拍了美美的暧昧照片,放一个文件夹里发送给了A服务器,当你来访问的时候,被F5路由给B服务器了,然后你找不到资源了,你女朋友给你闹,你就不性福了哈哈,所以我们很容易想到,是不是可以把文件上传到一个公用的服务器上呢? 这样不管访问的是A还是B,读、取文件都只存在一份。答案是肯定的,这个公用的服务器我们也称之为文件服务器,NFS,Network File System。顾名思义,网络文件系统,即通过网络,对在不同主机上的文件进行共享。
回到顶部
NFS包括两部分,服务端(servlet)及客户端(client)
由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,(pc -ef | egrep nfs 我们可以看到nfs 不同的端口号)那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, (rpc 一定是在nfs启动前,就已经启动了,)那么客户端PRC就能与服务器RPC进行通信, 从而进行文件的传输。
当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件(如果是远程共享文件就都挂载mount 到/etc/initd/rclocal下面),如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。
为了更好的并发,RPC进程及NFS进程都有多个。
NFS服务进程启动说明表格
服务(进程名字) 用途说明
nfsd(rpcnfsd) rpcnfsd主要功能就是管理NFS客户端是否能够登陆NFS服务器主机(登陆着id判别)
mountd(rpcmountd) rpcmountd管理nfs文件系统,当nfs客户端顺利通过rpcnfsd服务端后,它可以使用NFS服务器提供数据,读取NFS的配置文件/etc/exports来进行文件系统权限比对
rpcstatd 检查文件的一致性
这些进程都可以执行man 进程名 来查看进程的详细功能
回到顶部
NFS配置文件
NFS配置文件定义
NFS的配置文件为 /etc/exports,内容格式,如:<共享目录> 客户端1(选项) [客户端2(选项) ]
共享目录:NFS共享给客户机的目录。
客户端 :网络中可以访问此目录的主机。多个客户端以空格分隔。
选项:设置目录的访问权限、用户映射等,多个选项以逗号分隔。
例如: /data 19216810/24(rw,insecure,sync,all_squash,anonuid= 65534,anongid=65534)
NFS配置文件路径
NFS常用路径 说明
/etc/exports NFS服务主配置文件,配置NFS具体共享服务的地点,默认内容是空的 /usr/sbin/exports NFS服务的管理命令
exportfs
不重启nfs服务应用更新,相关选项如下:
-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。
nfsstat
查看NFS的运行状态。
rpcinfo
查看rpc服务注册情况。
相关选项:
-p 显示所有的端口与程序信息。
示例:
rpcinfo -p localhost #列出本机的RPC注册状况。
showmount
查询nfs共享目录信息,相关选项如下:
-a 显示已经于客户端连接上的目录信息
-e IP或者hostname 显示此IP地址分享出来的目录
示例:
showmount -e localhost #查询本机nfs共享目录情况
showmount -a localhost #查询本机共享目录连接情况
/usr/sbin/showmount 用来查看客户度那,查看NFS配置及挂载结果的命令 /var/lib/nfs/etab NFS配置文件的完成参数设定的文件
NFS配置参数权限
rw表示可读写权限。
sync 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。
async写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)。
all_squash不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩为匿名用户,同时它的UID和GID都会变成nfsnobody账号身份,在生产环境中配置NFS的重要技巧:
1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限,all_squash把所有客户端都压缩成匿名用户(UID相同),就是anonuid,anongid指定的UID和GID相同,
2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,nfsnodoby(UID必须相同)
anonuid 参数以anon开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。一般默认就好
anongid 同anonuid,区别是把uid(用户id)换成gid(组id)
ro 表示只有只读权限
sync是synchronized的缩写,意为同步,async是asynchonous的缩写意为异步,怎么理解同步和异步的,比如:你女朋买了一张票等你下班一起看**,她会亲自给你**票然后一起看**,在比如生产者跟消费者,(要实现这个问题,需要用到多线程,要实现多线程,就需要继承(extend)Thread类,实现Runnable,Future接口并写run方法,,,线程有6中状态,初始,运行,阻塞,等待,等待超时,结束,,,咳咳咳跑题了)我们常常加同步锁synchronized,这样就是生产一个,消费一个(Linux分为实时同步和定时同步)。异步,在比如生产者跟消费者,生产100个产品,消费者只能消费50个,那么就会把生产者的产品放在超市,消费者就会去超市买东西,
总结NFS服务的配置过程:
--服务端--
1)查看系统版本,并检测有没有安装nfs和rpcbind服务,如果没有安装就执行:
2启动服务(先启动rpcbind)
3设置开机自启动
4配置NFS服务
5重新加载服务
6检查或测试挂载
--客户端-
1安装软件
2启动rpcbind
3配置开机自启动
1
chkconfig rpcbind on
4测试服务端共享情况
5挂载
如果客户端没有写权限,就检查共享文件的配置是否是rw权限,检查共享的文件的本身是否是rw 权限(也就是检查/data ls -li /data 如果不是655 就chmod 655 /data)
常见错误
1df -h 检查服务端的NFS服务是不是启动成功,
2确认NFS客户端showmount是否OK。
3确认rpcbind上是否有NFS注册,(rpcbind必须先启动)
3确认网络是否通畅
4确认是否因为防火墙挡住(一般内网不需要开启防火墙,在出口加防火墙就够了)(/etc/initd/iptables stop/start)
技术的提升是量的积累,思想的提升是质的飞越
分类: Linux学习之路
打开CSDN,阅读体验更佳
最新发布 linux-NFS(网络文件系统)
全称 Network File System,网络文件系统专用于Linux与Linux之间的文件共享服务NFS服务可以将远程Linux机器上的文件目录数据,通过挂载的形式映射在本地机器。
继续访问
linux 的NFS网络文件系统
NFS(Network File System)即网络文件系统,是由Sun 公司开发的一种通过网络方式共享文件系统的通用共享解决方案。目前NFS 有三个版本,分别为NFSv2、NFSv3、NFSv4。NFSv2 是一个古老的版本,但却被众多的 *** 作系统所支持,这样它的兼容性会更好;NFSv3 拥有更多的特点,包括更快的速度、更大的单个文件大小、更多便于排错的错误及成功信息、对TCP
继续访问
服务器 硬盘 恢复,服务器硬盘故障恢复备忘
新系统使用的是Fedora Core 4。回家学习使用了一下yum,和debian的apt-get差不多了:而且软件包的依赖关系整理的比较好。以下是应用的安装备忘:2006年7月30日 星期日 00时18分用awk生成关闭服务的脚本:关闭不需要的服务sudo /sbin/chkconfig --list| grep 3:on | awk '{print "/sbin/chkconfig "$1"
继续访问
配置网络文件系统(NFS)
网络文件系统(NFS)网络文件系统(NFS)是一种在网络上的机器间共享文件的方法,文件就如同位于客户的本地硬盘驱动器上一样。Red Hat Linux 既可以是 NFS 服务器也可以是 NFS 客户,这意味着它可以把文件系统导出给其它系统,也可以挂载从其它机器上导入的文件系统。NFS 对于在同一网络上的多个用户间共享目录很有用途。譬如,一组致力于同一工程项目的用户可以通过使用 NFS 文件系统(
继续访问
linux 命令 /sbin/chkconfig
chkconfig --list 查看全部服务状态 例如: 运行chkconfig --list >
NFS是NAS服务器支持的其中一种文件系统。
1、NAS被定义为一种特殊的专用数据存储服务器,包括存储器件和内嵌系统软件,可提供跨平台文件共享功能。NAS通常在一个LAN上占有自己的节点,无需应用服务器的干预,允许用户在网络上存取数据,在这种配置中,NAS集中管理和处理网络上的所有数据,将负载从应用或企业服务器上卸载下来,有效降低总拥有成本,保护用户投资。
它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。目前国际著名的NAS企业有Netapp、EMC、OUO等。
2、NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
扩展资料:
NFS最显而易见的好处:
1、节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2、用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
3、一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
参考资料来源:
百度百科-NAS
百度百科-NFS
以上就是关于NFS架构(转载)全部的内容,包括:NFS架构(转载)、nfs的管理命令不包括、NFS 与 NAS 是什么关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)