nfs实现分布式存储
❶ CEPH和NFS什么区别哪个更好
ceph是分布式存储系统
NFS是文件存储系统,无优劣的说法,主要看实际的使用场景。
ceph提供的类型更多,如块、对象等,性能更好,NFS提供的文件系统单一,但是操作简单。
❷ 分布式文件存储系统采用什么方式
一。分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的高可用性? 4. 基于resin/tomcat web容器本身的session复制机制 5. 基于TT/Redis 或 jbosscache 进行 session 共享。 6. 基于cookie 进行session共享 或者是: 一、Session Replication 方式管理 (即session复制) 简介:将一台机器上的Session数据广播复制到集群中其余机器上 使用场景:机器较少,网络流量较小 优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问 缺点:广播式复制到其余机器有一定廷时,带来一定网络开销 二、Session Sticky 方式管理 简介:即粘性Session、当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上 使用场景:机器数适中、对稳定性要求不是非常苛刻 优点:实现简单、配置方便、没有额外网络开销 缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障 三、缓存集中式管理 简介:将Session存入分布式缓存集群中的某台机器上,当用户访问不同节点时先从缓存中拿Session信息 使用场景:集群中机器数多、网络环境复杂 优点:可靠性好 缺点:实现复杂、稳定性依赖于缓存的稳定性、Session信息放入缓存时要有合理的策略写入 二。Session和Cookie的区别和联系以及Session的实现原理 1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。 2、session中保存的是对象,cookie中保存的是字符串。 3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。 4、session需要借助cookie才能正常<nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key3" onmouseover="kwE(event,3, this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">工作</nobr>。如果客户端完全禁止cookie,session将失效。 http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的 购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客 户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我 们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但 是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到 sessionid=KWJHUG6JJM65HS2K6之类的字符串。 明白了原理,我们就可以很容易的分辨出persistent cookies和session cookie的区别了,网上那些关于两者安全性的讨论也就一目了然了,session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,自然不如 session cookie安全了。 通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到 了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking(会话跟踪)。 在一些web开发的书中,往往只是简单的把Session和cookie作为两种并列的http传送信息的方式,session cookies位于服务器端,persistent cookie位于客户端,可是session又是以cookie为基础的,明白的两者之间的联系和区别,我们就不难选择合适的技术来开发web service了。 总之: 一、cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。 同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择。 二、会话cookie和持久cookie的区别 如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。 如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。 存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。 三、如何利用实现自动登录 当用户在某个网站注册后,就会收到一个惟一用户ID的cookie。客户后来重新连接时,这个用户ID会自动返回,服务器对它进行检查,确定它是否为注册用户且选择了自动登录,从而使用户无需给出明确的用户名和密码,就可以访问服务器上的资源。 四、如何根据用户的爱好定制站点 网站可以使用cookie记录用户的意愿。对于简单的设置,网站可以直接将页面的设置存储在cookie中完成定制。然而对于更复杂的定制,网站只需仅将一个惟一的标识符发送给用户,由服务器端的数据库存储每个标识符对应的页面设置。 五、cookie的发送 1.创建Cookie对象 2.设置最大时效 3.将Cookie放入到HTTP响应报头 如果你创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie:存储在浏览器的内存中,用户退出浏览器之后被删除。如 果你希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该 cookie。 发送cookie需要使用HttpServletResponse的addCookie方法,将cookie插入到一个 Set-Cookie HTTP请求报头中。由于这个方法并不修改任何之前指定的Set-Cookie报头,而是创建新的报头,因此我们将这个方法称为是addCookie,而 非setCookie。同样要记住响应报头必须在任何文档内容发送到客户端之前设置。 六、cookie的读取 1.调用request.getCookie 要获取有浏览器发送来的cookie,需要调用HttpServletRequest的getCookies方法,这个调用返回Cookie对象的数组,对应由HTTP请求中Cookie报头输入的值。 2.对数组进行循环,调用每个cookie的getName方法,直到找到感兴趣的cookie为止 cookie与你的主机(域)相关,而非你的servlet或JSP页面。因而,尽管你的servlet可能只发送了单个cookie,你也可能会得到许多不相关的cookie。 例如: String cookieName = “userID”; Cookie cookies[] = request.getCookies(); if (cookies!=null){ for(int i=0;i Cookie cookie = cookies[i]; if (cookieName.equals(cookie.getName())){ doSomethingWith(cookie.getValue()); } } } 七、如何使用cookie检测初访者 A.调用HttpServletRequest.getCookies()获取Cookie数组 B.在循环中检索指定名字的cookie是否存在以及对应的值是否正确 C.如果是则退出循环并设置区别标识 D.根据区别标识判断用户是否为初访者从而进行不同的操作 八、使用cookie检测初访者的常见错误 不能仅仅因为cookie数组中不存在在特定的数据项就认为用户是个初访者。如果cookie数组为null,客户可能是一个初访者,也可能是由于用户将cookie删除或禁用造成的结果。 但是,如果数组非null,也不过是显示客户曾经到过你的网站或域,并不能说明他们曾经访问过你的servlet。其它servlet、JSP页面以及 非Java Web应用都可以设置cookie,依据路径的设置,其中的任何cookie都有可能返回给用户的浏览器。 正确的做法是判断cookie数组是否为空且是否存在指定的Cookie对象且值正确。 九、使用cookie属性的注意问题 属性是从服务器发送到浏览器的报头的一部分;但它们不属于由浏览器返回给服务器的报头。 因此除了名称和值之外,cookie属性只适用于从服务器输出到客户端的cookie;服务器端来自于浏览器的cookie并没有设置这些属性。 因而不要期望通过request.getCookies得到的cookie中可以使用这个属性。这意味着,你不能仅仅通过设置cookie的最大时效, 发出它,在随后的输入数组中查找适当的cookie,读取它的值,修改它并将它存回Cookie,从而实现不断改变的cookie值。 十、如何使用cookie记录各个用户的访问计数 1.获取cookie数组中专门用于统计用户访问次数的cookie的值 2.将值转换成int型 3.将值加1并用原来的名称重新创建一个Cookie对象 4.重新设置最大时效 5.将新的cookie输出 十一、session在不同环境下的不同含义 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话是从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。 然而当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义。 session在Web开发环境下的语义又有了新的扩展,它的含义是指一类用来在客户端与服务器端之间保持状态的解决方案。有时候Session也用来指这种解决方案的存储结构。 十二、session的机制 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 但程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否包含了一个session标识-称为session id,如果已经包含一个session id则说明以前已经为此客户创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为 地在请求的URL后面附加上一个JSESSION的参数)。 如果客户请求不包含session id,则为此客户创建一个session并且生成一个与此session相关联的session id,这个session id将在本次响应中返回给客户端保存。 十三、保存session id的几种方式 A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。 B. 由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后面。网络在整个交互过程中始终 保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。 C.另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。 十四、session什么时候被创建 一个常见的错误是以为session在有客户端访问时就被创建,然而事实是直到某server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建。 十五、session何时被删除 session在下列情况下被删除: A.程序调用HttpSession.invalidate() B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间 C.服务器进程被停止 再次注意关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。
❸ linux,NFS服务,是什么啊
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS最显而易见的优点:
1、节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2、用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
3、一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。

(3)nfs实现分布式存储扩展阅读:
NFS 有很多实际应用。下面是比较常见的四点:
1、多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
2、在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
3、不同客户端可在NFS上观看影视文件,节省本地空间。
4、在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下。
NFS是运行在应用层的协议。随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。
参考资料来源:
网络-NFS
网络-linux
❹ NFS架构(转载)
1.为什么用共享存储
2.存储有哪些工具
3.共享存储应用场景有哪些
4.部署nfs共享存储
5.客户端尝试连接共享存储
什么是NFS?
NFS 是 Network File System 的缩写及网络文件系统。 NFS 主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS 系统和 Windows 网络共享、网络驱动器类似, 只不过 windows 用于局域网, NFS 用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统 FastDFS,glusterfs,HDFS
那么我们为什么要使用数据存储共享服务?
1.实现多台服务器之间数据共享
2.实现多台服务器之间数据一致
下面我将通过图解给大家展示集群需要共享存储服务的理由。
1.A 用户上传图片经过负载均衡,负载均衡将上传请求调度至 WEB1 服务器上。
2.B 用户访问 A 用户上传的图片,此时 B 用户被负载均衡调度至 WEB2 上,因为 WEB2 上没有这张图片,所以 B用户无法看到 A 用户传的图片
如果有共享存储的情况
1.A 用户上传图片无论被负载均衡调度至 WEB1 还是 WEB2, 最终数据都被写入至共享存储
2.B 用户访问 A 用户上传图片时,无论调度至 WEB1 还是 WEB2,最终都会上共享存储访问对应的文件,这样就可以访问到资源了
NFS工作原理
1.用户进程访问 NFS 客户端,使用不同的函数对数据进行处理
2.NFS 客户端通过 TCP/IP 的方式传递给 NFS 服务端
3.NFS 服务端接收到请求后,会先调用 portmap 进程进行端口映射。
4.nfsd 进程用于判断 NFS 客户端是否拥有权限连接 NFS 服务端。
5.Rpc.mount 进程判断客户端是否有对应的权限进行验证。
6.idmap 进程实现用户映射和压缩
7.最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
注意: rpc 是一个远程过程调用,那么使用 nfs 必须有 rpc 服务
1.nfs依赖于RPC服务来传递消息
2.NFS服务启动的端口号是随机的,启动之后会向本地的RCP注册
3.先启动RPC服务,再启动NFS服务
4.NFS和RPC之间的通讯是他们自己内部完成的,对于用户来说无感知
5.NFS客户端和服务端不会直接沟通,必须通过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 Procere Call 远程过程调用服务将 NFS 服务器的IP 地址和端口号信息发送给客户端。因此,在启动 NFS 服务之前,需要先重启并启用 rpcbind 服务程序,同时都加入开机自启动
客户端安装nfs服务十分简单,只需要安装nfs软件包即可
安装完成后只需要启动rpcbind,不需要启动nfs
使用showmount命令查看nfs共享信息查询 NFS 服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。
挂载命令: 创建挂载目录
在 NFS 客户端创建一个挂载目录, 使用 mount 命令并结合-t 参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的 IP 地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录
查看是否挂载成功:
测试写入数据是否正常
写入开机自动挂载
卸载命令:注意!卸载的时候如果提示”umount.nfs: /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 存储优点
1.NFS 文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
2.NFS 文件系统内存放的数据都在文件系统之上,所有数据都是能看得见
NFS 存储局限
1.存在单点故障, 如果构建高可用维护麻烦 web->nfs()->backup
2.NFS 数据明文, 并不对数据做任何校验。
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)上进行挂载
环境准备
❺ NFS 深入配置
1.1 NFS配置参数权限
参数名称
参数用途
rw
read-write,表示可读写权限
ro
read-only,表示只读权限
sync
请求或写入数据时,数据同步写入到硬盘才完成
async
异步写到远程缓冲区
all_squash
不管客户端什么用户,到服务端都会被压缩成匿名用户
anonuid
匿名用户的UID
anongid
匿名用户的GID
在配置文件内设置共享目录时所给予的权限:
[root@nfs01 ~]$ cat /etc/exports
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)
配置好NFS服务后,/var/lib/nfs/etab文件中可以看到的配置参数以及默认自带的参数:
[root@nfs01 ~]$ cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,
anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash
1.1.1 更改NFS默认用户
1.1.1.1 nfs01服务端NFS、以及所有客户端:
[root@nfs01 ~] id www
uid=1111(www) gid=1111(www) 组=1111(www)
1.1.1.2 服务端NFS特殊配置
配置文件增加如下内容:
[root@nfs01 ~]$ tail -2 /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1 10.0.0.0/24(ro)
共享目录更改用户和用户组:
[root@nfs01 ~] ls -ld /data
drwxr-xr-x 2 www www 70 4月 18 10:05 /data
1.1.1.3 服务端NFS重启
[root@nfs01 ~]$ systemctl reload nfs
1.1.1.4 每个客户端挂载
[root@web01 ~] df -h
文件系统 容量 已用 可用 已用% 挂载点
172.16.1.31:/data 19G 1.8G 18G 10% /data
新创建文件验证用户名:
[root@web01 /data]# touch new_web01.txt
[root@web01 /data]# ls -l
总用量 0
-rw-r--r-- 1 www www 0 4月 18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月 17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月 17 12:30 oldgirl.txt
1.2 NFS服务重点知识梳理
当多个NFS客户端访问服务器端读写文件时,需要具有以下几个权限:
NFS服务器/etc/exports设置需要开放许可写入的权限,即服务器端的共享权限
NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务器端本地目录的安全权限
每台机器都对应存在和NFS默认配置UID的相同UID的用户
下表列出了常用的重点NFS服务文件或命令。
NFS常用路径
说明
/etc/exports
NFS服务主配置文件,配置NFS具体共享服务的地点,默认内容为空
/var/lib/nfs/etab
NFS配置文件的完整参数设定的文件
/proc/mounts
客户端的挂载参数
1.3 NFS客户端挂载深入
1.3.1 mount -o 参数选项及系统默认设置
参数
参数意义
系统默认值
suid/nosuid
当挂载的文件系统上有任何SUID的程序时,只要使用nosuid就能够取消设置SUID的功能
suid
rw/ro
可以指定文件系统是只读(ro)或可读写(rw)
rw
dev/nodev
是否可以保留装置文件的特殊功能
dev
exec/noexec
是否具有执行文件的权限
exec
user/nouser
是否允许用户拥有文件的挂载与卸载功能
nouser
auto/noauto
auto指的是“mount -a”时会不会被挂载的项目,如果不需要这个分区随时被挂载,可以设置为noauto
auto
1.3.2 mount -o 参数详细说明
参数选项
说明
async
涉及文件系统I/O的操作都是异步处理,即不会同步写到磁盘,能提高性能,但会降低数据安全。
sync
有I/O操作时,都会同步处理I/O,会降低性能,但数据比较安全。
atime
在每一次数据访问时,会更新访问文件的时间戳,是默认选项,在高并发的情况下,可以通过添加noatime来取消默认项。
ro
以只读的方式挂载一个文件系统
rw
以可读写的方式挂载一个文件系统
auto
能够被自动挂载通过-a选项
noauto
不会自动挂载文件系统
defaults
这是fstab里的默认值,包括rw、suid、dev、exec、auto、nouser、async
exec
允许文件系统执行二进制文件,取消这个参数,可以提升系统安全性。
noexec
在挂载的文件系统中不允许执行任何二进制程序,进仅对二进制程序有效。
noatime
访问文件时不更新文件的时间戳,高并发情况下,一般使用该参数
nodiratime
不更新文件系统上的directory inode时间戳,高并发环境,推荐显式应用该选项,可以提高系统I/O性能。
nosuid
不允许set-user-identifier or set-group-identifier位生效。
suid
允许set-user-identifier or set-group-identifier位生效。
nouser
禁止一个普通用户挂载该文件系统,这是默认挂载时的默认选项。
remount
尝试重新挂载一个已经挂载了的文件系统,这通常被用来改变一个文件系统的挂载标志,从而使得一个只读文件系统变的可写,这个动作不会改变设备或者挂载点。当系统故障时进人single或rescue模式修复系统时,会发现根文件系统经常会变成只读文件系统,不允许修改,此时该命令就派上用场了。具体命令为:mount -o remount,rw /,表示将根文件系统重新挂载使得可写。single或rescue模式修复系统时这个命令十分重要。
dirsync
目录更新时同步写人磁盘。
1.3.3 企业生产场景NFS共享存储优化
硬件:使用ssd/sas磁盘,可以买多块,制作成raid10。
NFS服务器端配置:
/data 10.0.0.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)
NFS客户端挂载优化配置命令:
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,
wsize=131072 172.16.1.31:/data /mnt <===兼顾安全性能
对NFS服务的所有服务器内核进行优化,执行命令如下:
cat >>/etc/sysctl.conf <<EOF
net.core.wmen_default = 8388608
net.core.rmen_default = 8388608
net.core.wmen_max = 16777216
net.core.rmen_max = 16777216
EOF
执行sysctl -p 生效
大型网站NFS网络文件系统的替代软件为分布式文件系统,如:Moosefs(mfs)、GlusterFS、FastDFS。
1.4 NFS系统应用的优缺点
1.4.1 优点
简单,容易上手,容易掌握。
NFS文件系统内数据是在文件系统之上的,即数据是能看得见的。
部署快速维护简单方便,且可控,满足需求就是最好的。
可靠,从软件层面上看,数据可靠性高,经久耐用。
服务非常稳定。
1.4.2 缺点(局限)
存在单点故障,如果NFS服务端宕机了,所有客户端都不能访问共享目录。
在大数据高并发的场合,NFS效率、性能有限。
客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般。
NFS数据是明文的,NFS本身不对数据完整性进行验证。
多台客户机挂载一个NFS服务器时,连接管理维护麻烦。
1.4.3 解决性能问题的方法
使用CDN加速以及自己搭建文件缓存服务(squid、nginx、varnish)。
把多个目录分配到不同的NFS服务器上。
弃用NFS(即读写分离)。
使用分布式文件系统。
❻ nfs是什么
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS体系至少有两个主要部分:
一台NFS服务器和若干台客户机。
客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据。
在NFS服务器正式启用前,需要根据实际环境和需求,配置一些NFS参数。

(6)nfs实现分布式存储扩展阅读:
NFS是基于UDP/IP协议的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。
RPC采用了XDR的支持。XDR是一种与机器无关的数据描述编码的协议,他以独立与任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。
参考资料来源:网络-网络文件系统
参考资料来源:网络-NFS
❼ 在Windows上自建nfs,性能比较差,这个怎么办
本文描述了在应用环境为Windows系统下,需要使用文件存储的场景。本文采用了私有化部署的方式向用户提供了文件共享存储服务。用NFS协议,搭建Windows环境NFS服务,为Windows系统下的云主机提供共享访问服务。
存储格式都有哪些?
文件、块和对象是三种以不同的方式来保存、整理和呈现数据的存储格式。这些格式各有各的功能和限制。文件存储会以文件和文件夹的层次结构来整理和呈现数据;块存储会将数据拆分到任意划分且大小相同的卷中; 对象存储会管理数据并将其链接至关联的元数据
块存储
块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有5块硬盘(为方便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种方式逻辑划分出N个逻辑的硬盘。(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了。例如第一个逻辑硬盘A里面,可能第一个200M是来自物理硬盘1,第二个200M是来自物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘。)
典型设备:磁盘阵列,硬盘
文件存储
为了克服块存储文件无法共享的问题,所以有了文件存储。主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。本文文件存储采用NFS协议,NFS客户端(一般为应用服务器,例如Web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载带NFS客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或目录一样,而实际上确实远端的NFS服务器的目录。
典型设备:FTP、NAS
对象存储
对象存储系统(Object-Based Storage System)是综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性、跨平台性以及安全的数据共享的存储体系结构。对象存储主要操作对象是对象(Object)。和文件和对象存储相比,没有随机读写的接口。和文件存储相比,没有目录树的概念。协议更注重简洁。
典型设备:内置大容量硬盘的分布式服务器、京东云OSS即对象存储
文件存储的适用场景
文件与较底层的块存储不同, 上升到了应用层, 一般指的就是NAS ,一套网络储存设备, 通过TCP/IP进行访问, 协议为NFSv3/v4由于通过网络。下面简单介绍以下NFS存储适用的两个场景,当然,还有更多的场景适合使用文件存储,本文不一一列出。
Web 服务
前端面向终端用户的服务由多台web服务器提供,多台服务器需要共享文件存储,文件系统、文件命名约定和权限等符合应用系统需求。
媒资管理
媒体行业由于其工作流和媒资是一直变化的,很多用户使用多云或混合云,媒体的剪辑、编辑在本地进行,存储和分发在云端,由于文件存储可以和现有的系统轻松的集成,因此,很多用户将文件存储用于媒资管理。
Windows环境下的NFS文件服务的搭建
选择Windows系统搭建NFS协议文件存储系统的优势如下:
系统交付后由用户进行维护,用户对Windows系统熟悉;
部分应用系统只能访问文件存储;
微软的SMB协议是面向网络连接的共享协议,对网络传输的可靠性要求高,常使用TCP/IP;NFS是独立于传输的,可使用TCP或UDP,同时考虑后期有linux系统扩容需求,故选择NFS协议。
京东云提供Linux环境的文件存储服务,无需另行搭建。(详见https://www.jdcloud.com/cn/procts/cloud-file-service)
本设计的优势:
共享访问-您在同一子网内的多台云主机可以共享同一个云文件服务中的文件存储系统。对于多个应用实例需要共享通用数据源的场景,特别适合使用云文件服务实现。
易于使用-支持标准的NFS协议,提供全托管的服务,无需修改应用,通过标准的文件系统挂载步骤即可实现无缝集成。极大降低迁移成本,简化云上项目开发。
稳定可靠-本系统存储基于京东云云硬盘,采用3副本冗余存储,提供超强的稳定性和可靠性,满足应用服务对文件系统的可用性和可靠性需求。
易于扩展-本系统存储基于京东云云硬盘,可根据业务需求进行存储空间的扩展。
一、创建NFS服务主机
1、创建实例
在京东云上创建一台云主机,作为NFS服务器;NFS服务要和已有云资源创建在同一区域,同一VPC中。
登录京东云控制台,选择弹性计算-云主机-实例,选择创建实例所属地域,点击“创建”按钮,进入云主机购买页面。
2、选择计费模式
包年包月和按配置计费,包年包月按一个正月进行购买付费,按配置计费按照实际使用的时长(精确至秒)每小时进行扣费。
3、地域与可用区选择
在此步骤仍可以选择实例对应的地域(华北-北京、华南-广州、华东-宿迁及华东-上海)及可用区,请注意“不同地域资源内网不互通,创建之后不可更改”,如果所选地域限额已满,可以通过提交工单提升限额。
4、创建方式选择
提供三种创建方式 自定义创建、使用实例模板创建、在高可用组内创建,后两种需要您预先创建好实例模板和高可用组,我们使用保持默认选项“自定义创建”。
5、选择windows系统镜像
镜像分为云硬盘系统盘镜像及本地盘系统盘镜像,前者仅支持创建系统盘为云硬盘的实例,后者仅支持创建系统盘为本地盘的实例。因为搭建windows系统环境的NFS存储,故镜像选择官方-windows server-windows server 2012 R2标准版。
6、选择实例规格
实例的规格支持用户自定义选择,从最小的1核1G(如g.s1.micro)到72C576GB(如m.n2.18xlarge),用户可以根据不同业务场景选择实例规格及相应配置。考虑到NFS对主机计算性能要求不高,选择2核4G规格主机。
7、配置NFS存储
云主机数据盘:数据盘为NFS系统存储盘,可以根据实际业务需要选择容量。(此处选择20G为例)
8、配置实例网络
选择私有网络及子网:VPC子网选择与需要访问NFS存储的云主机所在的VPC。
选择内网IP分配方式:如对内网IP地址没有特殊要求,可以不指定由系统自动在子网可用网段内分配,如需指定请在提示范围内输入,系统会校验IP是否可用。须注意的是,若选择自定义内网IP地址,则无法批量创建实例。
9、选择安全组
实例在创建时必须绑定一个安全组,若当前地域下未创建自定义安全组,可以在系统创建的三个默认安全组中选择一个绑定(每个私有网络创建成功之后都会自动创建三个默认安全组),也可以通过快速入口前往安全组页面创建安全组。由于官方镜像系统内防火墙默认关闭,建议绑定仅开放22端口(Linux)或3389端口(Windows)的安全组,实例创建之后再根据访问需求创建新的安全组并绑定。
10、配置公网带宽
带宽计费方式:京东云提供按固定带宽和按使用流量两种带宽计费类型的弹性公网IP,按固定带宽计费按购买时设置的带宽上限值付费,而与实际访问公网所用带宽无关,按使用流量计费则根据您实时访问公网的实际流量计费。
线路:弹性公网IP线路分为:BGP和非BGP,若您需要更快更高效的网络接入请选用BGP。
带宽范围:1Mbps~200Mbps。在创建主机过程中可以暂不购买公网IP,完成主机创建后,再进行绑定。
NFS存储如果只供VPC内云主机使用,可以不购买公网IP和带宽。
11、设置实例名称、描述
您需要设置创建的主机名,名称不可为空,只支持中文、数字、大小写字母、英文下划线“ _ ”及中划线“ - ”,且不能超过32字符,如果为批量创建购买,名称以“xxx1”、“xxx2”依次显示。同时支持为实例添加描述,描述允许为空,若添加长度不能超过256字符。
12、设置密码
可以选择“立即设置”密码,也可以选择“暂不设置”(系统会以短信和邮件方式发送默认密码),密码除了用于SSH登录实例时的密码,也是控制台通过VNC登录实例的密码。
确认云主机数量及购买时长 购买数量受限该地域您云主机、云硬盘、公网IP限额以及所选子网剩余IP数量,若限额不够,可通过提交工单提升限额。若购买包年包月实例,则需要设置购买时长,最短为1个月,最长为2年,支付十个月费用即可享受一年服务。若需要更长服务时长请提交工单。
点击确认后,返回到控制台,显示创建中,待状态为运行,NFS服务主机创建完毕。
13、登陆云主机
14、添加数据盘
打开,开始菜单-服务器管理器-文件和存储服务-磁盘,如下图:
选择数据硬盘,右键选择新建卷,文件格式为NTSF
二、建立NFS服务
1、安装NFS服务器端组件
打开,开始菜单-服务器管理器”,在主页仪表板中单击“添加角色和功能”,如下图所示。
在“开始之前”对话框中,会显示配置成NFS服务器必要的前提步骤,请按文字介绍的注意事项确认一下,如果没有问题的话,可以单击“下一步”,如下图所示:
在“安装类型”对话框中,选择“基于角色或基于功能的安装”,然后单击“下一步”,如下图所示:
在“服务器选择”对话框中,选择“从服务器池中选择服务器”,然后单击“下一步”:
在“服务器角色”对话框中,选择“文件和存储服务”中“NFS服务器”,然后单击“下一步”,如下图所示:
继续单击“下一步”,如下图所示:
在“确认”对话框中,可以看到我们从第一步到最后一步选择的参数等信息,如果有要修改的地方,可以单击“上一步”返回修改,确认没有问题的话,可以单击“安装”,如下图所示:
至此,Windows系统的NFS服务端安装完毕,根据提示重启服务器。
2、创建共享服务
NFS服务端安装完毕,回到服务器管理器,选择文件和存储服务
选择 共享-启动新加共享向导
选择“NFS共享-快速”
选择数据盘,设置共享名称
选择“身份验证”相关配置,如下图所示:
设置共享权限,权限请根据实际需要设置
创建完毕,显示”已成功创建共享“,如下图所示:
3、设置共享文件夹
在要设定共享的文件夹属性中,选择“NFS共享”栏位,点击“管理NFS共享”, 在“NFS高级共享”对话框中,选择并勾选“共享此文件夹”:
返回服务器管理器,共享对话框中,可以看到刚才新建的文件夹共享已经成功
参考资料:
1、文件存储、块存储还是对象存储?redhat官网
2、块存储、文件存储、对象存储这三者的本质差别是什么?.知乎.2016-1-1[引用日期2017-10-04]
(https://ke..com/reference/18736489/a856jWYROoQogtX1hq-v--)
3、今非昔比:块存储的复杂度提高 .TechTarget存储[引用日期2015-10-21](https://ke..com/reference/18736489/_rJK0l8aRaFmmhbzPj4Kk-4OMDrn9AGlEt1D-YeUws8wnhuYuc7rJUcaI-B0fg)
点击"京东云"了解更多详情
❽ 基于mogileFS搭建分布式文件系统--海量小文件的存储利器
1.简介
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。
当下我们处在一个互联网飞速发展的信息 社会 ,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化。在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集、数据存储、数据搜索、数据共享、数据传输、数据分析、数据可视化等一系列问题。
传统存储在面对海量数据存储表现出的力不从心已经是不争的事实,例如:纵向扩展受阵列空间限制、横向扩展受交换设备限制、节点受文件系统限制。
然而分布式存储的出现在一定程度上有效的缓解了这一问题,之所以称之为缓解是因为分布式存储在面对海量数据存储时也并非十全十美毫无压力,依然存在的难点与挑战例如:节点间通信、数据存储、数据空间平衡、容错、文件系统支持等一系列问题仍处在不断摸索和完善中。
2.分布式文件系统的一些解决方案
Google Filesystem适合存储海量大个文件,元数据存储与内存中
HDFS(Hadoop Filesystem)GFS的山寨版,适合存储大量大个文件
TFS(Taobao Filesystem)淘宝的文件系统,在名称节点上将元数据存储与关系数据库中,文件数量不在受限于名称节点的内容空间,可以存储海量小文件LustreOracle开发的企业级分布式系统,较重量级MooseFS基于FUSE的格式,可以进行挂载使用MogileFS
擅长存储海量的小数据,元数据存储与关系型数据库中
1.简介
MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。
目前使用 MogileFS 的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个.
国内所知道的使用 MogileFS 的公司有图片托管网站 yupoo又拍,digg, 薯仔, 豆瓣,1 号店, 大众点评,搜狗,安居客等等网站.基本很多网站容量,图片都超过 30T 以上。
2.MogileFS特性
1) 应用层提供服务,不需要使用核心组件
2)无单点失败,主要有三个组件组成,分为tracker(跟踪节点)、mogstore(存储节点)、database(数据库节点)
3)自动复制文件,复制文件的最小单位不是文件,而是class
4)传输中立,无特殊协议,可以通过NFS或HTTP实现通信
5)简单的命名空间:没有目录,直接存在与存储空间上,通过域来实现
6)不用共享任何数据
3.MogileFS的组成
1)Tracker--跟踪器,调度器
MogileFS的核心,是一个调度器,mogilefsd进程就是trackers进程程序,trackers的主要职责有:删除数据、复制数据、监控、查询等等.这个是基于事件的( event-based ) 父进程/消息总线来管理所有来之于客户端应用的交互(requesting operations to be performed), 包括将请求负载平衡到多个"query workers"中,然后让 mogilefs的子进程去处理.
mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡.trackers也可以只运行在一台机器上,使用负载均衡时可以使用搞一些简单的负载均衡解决方案,如haproxy,lvs,nginx等,
tarcker的配置文件为/etc/mogilefs/mogilefsd.conf,监听在TCP的7001端口
2)Database--数据库部分
主要用来存储mogilefs的元数据,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用
3)mogstored--存储节点
数据存储的位置,通常是一个HTTP(webDAV)服务器,用来做数据的创建、删除、获取,任何 WebDAV 服务器都可以, 不过推荐使用 mogstored . mogilefsd可以配置到两个机器上使用不同端口… mogstored 来进行所有的 DAV 操作和流量,IO监测, 并且你自己选择的HTTP服务器(默认为 perlbal)用来做 GET 操作给客户端提供文件.
典型的应用是一个挂载点有一个大容量的SATA磁盘. 只要配置完配置文件后mogstored程序的启动将会使本机成为一个存储节点.当然还需要mogadm这个工具增加这台机器到Cluster中.
配置文件为/etc/mogilefs/mogstored.conf,监听在TCP的7500端口
4.基本工作流程
应用程序请求打开一个文件 (通过RPC 通知到 tracker, 找到一个可用的机器). 做一个 “create_open” 请求.
tracker 做一些负载均衡(load balancing)处理,决定应该去哪儿,然后给应用程序一些可能用的位置。
应用程序写到其中的一个位置去 (如果写失败,他会重新尝试并写到另外一个位置去).
应用程序 (client) 通过”create_close” 告诉tracker文件写到哪里去了.
tracker 将该名称和域命的名空间关联 (通过数据库来做的)
tracker, 在后台, 开始复制文件,知道他满足该文件类别设定的复制规则
然后,应用程序通过 “get_paths” 请求 domain+key (key == “filename”) 文件, tracker基于每一位置的I/O繁忙情况回复(在内部经过 database/memcache/etc 等的一些抉择处理), 该文件可用的完整 URLs地址列表.
应用程序然后按顺序尝试这些URL地址. (tracker’持续监测主机和设备的状态,因此不会返回死连接,默认情况下他对返回列表中的第一个元素做双重检查,除非你不要他这么做..)
1.拓扑图
说明:1.用户通过URL访问前端的nginx
2.nginx根据特定的挑选算法,挑选出后端一台tracker来响应nginx请求
3.tracker通过查找database数据库,获取到要访问的URL的值,并返回给nginx
4.nginx通过返回的值及某种挑选算法挑选一台mogstored发起请求
5.mogstored将结果返回给nginx
6.nginx构建响应报文返回给客户端
2.ip规划
角色运行软件ip地址反向代理nginx192.168.1.201存储节点与调度节点1
mogilefs192.168.1.202存储节点与调度节点2
mogilefs192.168.1.203数据库节点
MariaDB192.168.1.204
3.数据库的安装操作并为授权
关于数据库的编译安装,请参照本人相关博文http://wangfeng7399.blog.51cto.com/3518031/1393146,本处将不再累赘,本处使用的为yum源的安装方式安装mysql
4.安装mogilefs. 安装mogilefs,可以使用yum安装,也可以使用编译安装,本处通过yum安装
5.初始化数据库
可以看到在数据库中创建了一些表
6.修改配置文件,启动服务
7.配置mogilefs
添加存储主机
添加存储设备
添加域
添加class
8.配置192.168.1.203的mogilefs 。切记不要初始化数据库,配置应该与192.168.1.202一样
9.尝试上传数据,获取数据,客户端读取数据
上传数据,在任何一个节点上传都可以
获取数据
客户端查看数据
我们可以通过任何一个节点查看到数据
要想nginx能够实现对后端trucker的反向代理,必须结合第三方模块来实现
1.编译安装nginx
2.准备启动脚本
3.nginx与mofilefs互联
查看效果
5.配置后端truckers的集群
查看效果
大功告成了,后续思路,前段的nginx和数据库都存在单点故障,可以实现高可用集群
❾ 分布式存储选型
云计算场景中, 通常使用对象存储系统来做保存文件, 例如用户上传的图片, 视频, 文档等, 或是虚拟镜像, iso镜像的内部数据. 公有云厂商通常还会基于对象存储提供SDN服务, 用来加速用户数据的访问. 而块存储则作为一种补充, 提供独立于虚拟机的(虚拟机删除数据不丢失), 方便扩展的存储设备.
对象存储由于是通过网络API提供服务的, 所以可以跨集群访问.
集群内文件共享的方案非常多, windows上的共享磁盘, linux 上的samba, nfs 等项目都提供这样的功能. 集群文件系统通常会和NAS进行对比, 以体现其在成本方面的优势. 但是, 由于传统的基于共享磁盘的集群文件系统在可扩展性方面比较弱, 有催生的分布式的集群文件系统, moosefs 就是典型的分布式集群文件系统.
集群文件系统也可以用来存储虚拟机镜像, 已达到存储节点和计算节点的分离.
直观上看, 对象存储系统与业务系统是平行关系, 而集群文件系统则通常是业务系统的一个组成部分.
分布式存储目前主要分两大类: 块存储(文件系统, 裸设备), 对象存储. 像 NFS 这样只提供, 只提供简单磁盘共享, 缺乏扩展能力的项目, 只能叫集群存储, 而不能算分布式存储.
考虑到未来分布式存储的可能有多种应用场景, 所以我们更关注各个方案的功能是否完备. 以下是本次选型的标准.
|-|Ceph |Taobao TFS |Openstack Swift |MooseFS |
|----|----|----|----|----|----|
|MetaData冗余[1] |YES[选举] |YES[主从] |NO[3] |YES[主从]
|数据冗余[2] |YES |YES |YES |YES
由于块存储是直接挂载到操作系统上使用的, 除了使用软件本身的配额管理工具, 还可以使用操作系统的配个管理工具来实现基于用户的容量配额管理.
根据前述选项标准, 这里推荐部署Ceph系统.
❿ 分布式文件系统的NFS介绍
(NFS)(Network File System)是个分布式的客户机/服务器文件系统。NFS的实质在于用户间计算机的共享。用户可以联结到共享计算机并像访问本地硬盘一样访问共享计算机上的文件。管理员可以建立远程系统上文件的访问,以至于用户感觉不到他们是在访问远程文件。
NFS是个到处可用和广泛实现的开放式系统。 允许用户象访问本地文件一样访问其他系统上的文件。提供对无盘工作站的支持以降低网络开销。
简化应用程序对远程文件的访问使得不需要因访问这些文件而调用特殊的过程。
使用一次一个服务请求以使系统能从已崩溃的服务器或工作站上恢复。
采用安全措施保护文件免遭偷窃与破坏。
使NFS协议可移植和简单,以便它们能在许多不同计算机上实现,包括低档的PC机。
大型计算机、小型计算机和文件服务器运行NFS时,都为多个用户提供了一个文件存储区。工作站只需要运行TCP/IP协议来访问这些系统和位于NFS存储区内的文件。工作站上的NFS通常由TCP/IP软件支持。对DOS用户,一个远程NFS文件存储区看起来是另一个磁盘驱动器盘符。对Macintosh用户,远程NFS文件存储区就是一个图标。 服务器目录共享 服务器广播或通知正在共享的目录,一个共享目录通常叫做出版或出口目录。有关共享目录和谁可访问它们的信息放在一个文件中,由操作系统启动时读取。
客户机访问 在共享目录上建立一种链接和访问文件的过程叫做装联(mounting),用户将网络用作一条通信链路来访问远程文件系统。
NFS的一个重要组成是虚拟文件系统(VFS),它是应用程序与低层文件系统间的接口。 close文件关闭操作
create 文件生成操作
fsync将改变保存到文件中
getattr 取文件属性
link 用另一个名字访问一个文件
lookup 读目录项
mkdir建立新目录
open 文件打开操作
rdwr 文件读写操作
remove 删除一个文件
rename 文件改名
rmdir删除一目录
setattr 设置文件属性 Andrew File System(AFS)Andrew文件系统(AFS)
AFS是专门为在大型分布式环境中提供可靠的文件服务而设计的。它通过基于单元的结构生成一种可管理的分布式环境。一个单元是某个独立区域中文件服务器和客户机系统的集合,这个独立区域由特定的机构管理。通常代表一个组织的计算资源。用户可以和同一单元中其他用户方便地共享信息,他们也可以和其他单元内的用户共享信息,这取决于那些单元中的机构所授予的访问权限。
文件服务器进程 这个进程响应客户工作站对文件服务的请求,维护目录结构,监控文件和目录状态信息,检查用户的访问。
基本监察(BOS)服务器进程 这个进程运行于有BOS设定的服务器。它监控和管理运行其他服务的进程并可自动重启服务器进程,而不需人工帮助。
卷宗服务器进程 此进程处理与卷宗有关的文件系统操作,如卷宗生成、移动、复制、备份和恢复。
卷宗定位服务器进程 该进程提供了对文件卷宗的位置透明性。即使卷宗被移动了,用户也能访问它而不需要知道卷宗移动了。
鉴别服务器进程 此进程通过授权和相互鉴别提供网络安全性。用一个“鉴别服务器”维护一个存有口令和加密密钥的鉴别数据库,此系统是基于Kerberos的。
保护服务器进程 此进程基于一个保护数据库中的访问信息,使用户和组获得对文件服务的访问权。
更新服务器进程 此进程将AFS的更新和任何配置文件传播到所有AFS服务器。
AFS还配有一套用于差错处理,系统备份和AFS分布式文件系统管理的实用工具程序。例如,SCOUT定期探查和收集AFS文件服务器的信息。信息在给定格式的屏幕上提供给管理员。设置多种阈值向管理者报告一些将发生的问题,如磁盘空间将用完等。另一个工具是USS,可创建基于带有字段常量模板的用户帐户。Ubik提供数据库复制和同步服务。一个复制的数据库是一个其信息放于多个位置的系统以便于本地用户更方便地访问这些数据信息。同步机制保证所有数据库的信息是一致的。

