zoukankan      html  css  js  c++  java
  • 打赏 jQuery火箭图标返回顶部代码</h1> <div style="border: 1px solid #dfdfdf;border-top:none;"></div> <div style=" height: 200px; overflow:hidden;"> <span class="pre-scrollable"><div id="cnblogs_post_body" class="blogpost-body"> <h2><span style="font-family: 隶书;">什么是文件系统,NFS文件系统又是什么?</span></h2> <p>简单的说,文件系统就是通过软件对磁盘上的数据进行组织和管理的一种机制,对其的一种封装或透视。</p> <p><img src="https://images2018.cnblogs.com/blog/1430251/201809/1430251-20180913144514830-1342954188.png" alt="" /></p> <p>你女朋友拍了美美的暧昧照片,放一个文件夹里发送给了A服务器,当你来访问的时候,被F5路由给B服务器了,然后你找不到资源了,你女朋友给你闹,你就不性福了哈哈,所以我们很容易想到,是不是可以把文件上传到一个公用的服务器上呢? 这样不管访问的是A还是B,读、取文件都只存在一份。答案是肯定的,这个公用的服务器我们也称之为文件服务器,NFS,Network File System。顾名思义,网络文件系统,即通过网络,对在不同主机上的文件进行共享。</p> <h2><span style="font-family: 隶书;">NFS包括两部分,服务端(servlet)及客户端(client)</span></h2> <p>由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,(pc -ef | egrep nfs 我们可以看到nfs 不同的端口号)那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, (rpc 一定是在nfs启动前,就已经启动了,)那么客户端PRC就能与服务器RPC进行通信, 从而进行文件的传输。</p> <p>当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件(如果是远程共享文件就都挂载mount 到/etc/init.d/rc.local下面),如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。<br />为了更好的并发,RPC进程及NFS进程都有多个。</p> <div class="cnblogs_code"> <pre> ps -ef |egrep <span style="color: #800000;">"</span><span style="color: #800000;">rpc|nfs</span><span style="color: #800000;">" < #这样我们可以查看到的进程</span></pre> </div> <table style=" 620px;" border="2" align="center"> <tbody> <tr> <td style="text-align: center;" colspan="2"><strong>NFS服务进程启动说明表格</strong></td> </tr> <tr> <td>服务(进程名字)</td> <td>用途说明</td> </tr> <tr> <td>nfsd(rpc.nfsd)</td> <td>rpc.nfsd主要功能就是管理NFS客户端是否能够登陆NFS服务器主机(登陆着id判别)</td> </tr> <tr> <td>mountd(rpc.mountd)</td> <td>rpc.mountd管理nfs文件系统,当nfs客户端顺利通过rpc.nfsd服务端后,它可以使用NFS服务器提供数据,读取NFS的配置文件/etc/exports来进行文件系统权限比对</td> </tr> <tr> <td>rpc.statd</td> <td>检查文件的一致性</td> </tr> <tr> <td colspan="2">这些进程都可以执行man 进程名 来查看进程的详细功能</td> </tr> </tbody> </table> <h2><span style="font-family: 隶书;">NFS配置文件</span></h2> <h4>NFS配置文件定义</h4> <div>NFS的配置文件为 /etc/exports,内容格式,如:<共享目录>   客户端1(选项) [客户端2(选项) ...]</div> <div>共享目录:NFS共享给客户机的目录。</div> <div>客户端 :网络中可以访问此目录的主机。多个客户端以空格分隔。<br clear="none" />选项  :设置目录的访问权限、用户映射等,多个选项以逗号分隔。</div> <div>例如:<span style="background-color: #ffff00;">/data 192.168.1.0/24(rw,insecure,sync,all_squash,anonuid= 65534,anongid=65534)</span></div> <h4>NFS配置文件路径</h4> <table style=" 620px;" border="2" align="center"> <tbody> <tr> <td>NFS常用路径</td> <td>说明</td> </tr> <tr> <td>/etc/exports</td> <td><span style="background-color: #ffff00;">NFS服务主配置文件</span>,配置NFS具体共享服务的地点,默认内容是空的</td> </tr> <tr> <td>/usr/sbin/exports</td> <td>NFS服务的管理命令 <div>exportfs<br clear="none" />  不重启nfs服务应用更新,相关选项如下:</div> <div>  -a 全部挂载或卸载 /etc/exports中的内容<br clear="none" />  -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab<br clear="none" />  -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)<br clear="none" />  -v 在export的时候,将详细的信息输出到屏幕上。<br clear="none" /><br clear="none" />nfsstat<br clear="none" />  查看NFS的运行状态。</div> <div> </div> <div>rpcinfo</div> <div>  查看rpc服务注册情况。</div> <div>  相关选项:</div> <div>  -p 显示所有的端口与程序信息。</div> <div>  示例:</div> <div>  rpcinfo -p localhost  #列出本机的RPC注册状况。</div> <div><br clear="none" />showmount<br clear="none" /> <div>  查询nfs共享目录信息,相关选项如下:</div>   -a 显示已经于客户端连接上的目录信息<br clear="none" />  -e IP或者hostname 显示此IP地址分享出来的目录</div> <div> </div> <div>  示例:</div> <div>  showmount -e localhost  #查询本机nfs共享目录情况</div> <div>  showmount -a localhost  #查询本机共享目录连接情况</div> </td> </tr> <tr> <td>/usr/sbin/showmount</td> <td>用来查看客户度那,查看NFS配置及挂载结果的命令</td> </tr> <tr> <td>/var/lib/nfs/etab</td> <td>NFS配置文件的完成参数设定的文件</td> </tr> </tbody> </table> <h4> NFS配置参数权限</h4> <p><span style="background-color: #ff0000;">rw </span>   表示可读写权限。</p> <p><span style="background-color: #ff0000;">sync</span>   请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。</p> <p><span style="background-color: #ffffff;"><span style="background-color: #ff0000;">async</span>  </span>写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)。</p> <p><span style="background-color: #ff0000;">all_squash</span>  不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩为匿名用户,同时它的UID和GID都会变成nfsnobody账号身份,在生产环境中配置NFS的重要技巧:</p> <p>        1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限,all_squash把所有客户端都压缩成匿名用户(UID相同),就是anonuid,anongid指定的UID和GID相同,</p> <p>        2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,nfsnodoby(UID必须相同)</p> <p><span style="background-color: #ff0000;">anonuid</span>   参数以anon*开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。一般默认就好</p> <p><span style="background-color: #ff0000;">anongid</span>   同anonuid,区别是把uid(用户id)换成gid(组id)</p> <p><span style="background-color: #ff0000;">ro</span>       表示只有只读权限</p> <p>sync是synchronized的缩写,意为同步,async是asynchonous的缩写意为异步,怎么理解同步和异步的,比如:你女朋买了一张票等你下班一起看电影,她会亲自给你电影票然后一起看电影,在比如生产者跟消费者,(要实现这个问题,需要用到多线程,要实现多线程,就需要继承(extend)Thread类,实现Runnable,Future接口并写run方法,,,线程有6中状态,初始,运行,阻塞,等待,等待超时,结束,,,咳咳咳跑题了)我们常常加同步锁synchronized,这样就是生产一个,消费一个(Linux分为实时同步和定时同步)。异步,在比如生产者跟消费者,生产100个产品,消费者只能消费50个,那么就会把生产者的产品放在超市,消费者就会去超市买东西,</p> <div>总结NFS服务的配置过程:</div> <div>--服务端--</div> <div> <p>1)查看系统版本,并检测有没有安装nfs和rpcbind服务,如果没有安装就执行:</p> <div class="cnblogs_code"> <pre>yum install nfs-utils rpcbind -y</pre> </div> <p><img src="https://images2018.cnblogs.com/blog/1430251/201809/1430251-20180912155442215-661837597.png" alt="" /></p> </div> <div>2.启动服务(先启动rpcbind)</div> <div> <div class="cnblogs_code"> <pre>/etc/init.d/rpcbind start</pre> </div> </div> <div>3.设置开机自启动</div> <div> <div class="cnblogs_code"> <pre><span style="color: #000000;">chkconfig nfs on chkconfig rpcbind on</span></pre> </div> </div> <div>4.配置NFS服务</div> <div> <div class="cnblogs_code"> <pre>echo <span style="color: #800000;">"</span><span style="color: #800000;">/data 192.168.1.8/24(rw,sync)</span><span style="color: #800000;">"</span><span style="color: #000000;"> mkdir </span>-p /<span style="color: #000000;">data chown </span>-R nfsnobody.nfsnobody /data</pre> </div> <p>5.重新加载服务</p> </div> <div> <div class="cnblogs_code"> <pre>/etc/init.d/nfs reload <#相当于 exportfs -r</pre> </div> </div> <div>6.检查或测试挂载</div> <div> <div class="cnblogs_code"> <pre>showmount -<span style="color: #000000;">e localhost mount </span>-t nfs <span style="color: #800080;">192.168</span>.<span style="color: #800080;">1.8</span>:/data /<span style="color: #000000;">mnt<br /></span></pre> </div> </div> <div>--客户端-</div> <div>1.安装软件</div> <div> <div class="cnblogs_code"> <pre>yum install -y nfs-utils rpcbind</pre> </div> </div> <div>2.启动rpcbind</div> <div> <div class="cnblogs_code"> <pre>/etc/init.d/rpcbind start</pre> </div> </div> <div>3.配置开机自启动</div> <div> <div class="cnblogs_Highlighter"> <pre class="csharp;gutter:true;">chkconfig rpcbind on</pre> </div> </div> <div>4.测试服务端共享情况</div> <div> <div class="cnblogs_code"> <pre>show -e <span style="color: #800080;">192.168</span>.<span style="color: #800080;">1.8</span></pre> </div> </div> <div>5.挂载</div> <div> <div class="cnblogs_code"> <pre>mkdir -p /<span style="color: #000000;">data mount </span>-t nfs <span style="color: #800080;">192.168</span>.<span style="color: #800080;">1.8</span>:/data /tmp</pre> </div> </div> <div>如果客户端没有写权限,就检查共享文件的配置是否是rw权限,检查共享的文件的本身是否是rw 权限(也就是检查/data  ls -li /data 如果不是655 就chmod 655 /data)</div> <div>常见错误</div> <div>1.df -h 检查服务端的NFS服务是不是启动成功,</div> <div>2.确认NFS客户端showmount是否OK。</div> <div>3.确认rpcbind上是否有NFS注册,(rpcbind必须先启动)</div> <div>3.确认网络是否通畅</div> <div>4.确认是否因为防火墙挡住(一般内网不需要开启防火墙,在出口加防火墙就够了)(/etc/init.d/iptables stop/start)</div> </div> </span> </div> <div style="text-align: center;"> <a href="https://www.cnblogs.com/liang-io/p/9640274.html" target="_blank" style="font-size: 16px;background-color: rgb(24, 144, 255); color: white;padding: 8px;padding-left: 30px;padding-right: 30px;border-radius: 2rem;">查看全文</a> </div> </li> <div style="border: 1px solid #dfdfdf;border-top:none;"></div> <li class="ul-li" style="padding-left:15px;padding-right: 15px;"> <b>相关阅读:</b><br> <nobr> <a href="zhangjun516-p-2932311.html" target="_blank">ubuntu 12.04 安装phpUnit </a> <br/><a href="zhangjun516-p-2935113.html" target="_blank">composer 安装 ubuntu 12.04 </a> <br/><a href="zhangjun516-p-2931877.html" target="_blank">初学 Phreeze 4 </a> <br/><a href="zhangjun516-p-2938626.html" target="_blank">curl模拟文件post提交 </a> <br/><a href="zhangjun516-p-2944061.html" target="_blank">Phreeze Criteria的应用,在两个表里面查找多个符合条件的数据 </a> <br/><a href="zhangjun516-p-2933863.html" target="_blank">ubuntu 12.04 安装vim </a> <br/><a href="zhangjun516-p-2933289.html" target="_blank">初学Phreeze 5 excel 表格,自动生成文件 </a> <br/><a href="zhangjun516-p-2934975.html" target="_blank">初学Phreeze 6,reporter文件 </a> <br/><a href="zhangjun516-p-2946504.html" target="_blank">//让程序在后台运行,即使关闭终端 仍可运行 </a> <br/><a href="zhangjun516-p-2932518.html" target="_blank">phpopenid中创建多级目录的方法 </a> <br/> </nobr> </li> <div style="border: 1px solid #dfdfdf;border-top:none;"></div> <li class="list-group-item from-a mb-2" style="margin:15px;"> 原文地址:https://www.cnblogs.com/liang-io/p/9640274.html </li> </ul> </div> <!-- 右侧开始 --> <div class="right-kd" style="margin: auto;margin: 0px;float: left;"> <ul class="right-kd" style="word-break:break-all;border: 1px solid #dfdfdf;border-radius: 3px 3px 3px 3px;padding: 0px;margin: 0px;"> <li class="ul-li-bg ul-li-title" aria-current="true" style="padding-left:15px;padding-right: 15px;"> 最新文章 </li> <li class="ul-li" style="padding-left:15px;padding-right:15px;"> <nobr> <a href="weipeng-p-2720017.html" target="_blank">Freemarker中遍历List实例 </a> <br/><a href="weipeng-p-2706158.html" target="_blank">通用弹框js </a> <br/><a href="weipeng-p-2681549.html" target="_blank">锚点 </a> <br/><a href="weipeng-p-2725453.html" target="_blank">JustForFly struts2标签<s:generator> </a> <br/><a href="weipeng-p-2715177.html" target="_blank">查看后门文件 </a> <br/><a href="weipeng-p-2673691.html" target="_blank">Tomacat启动不了报错org.apache.catalina.deploy.WebXml addFilter </a> <br/><a href="weipeng-p-2697232.html" target="_blank">QQ接口弹窗 </a> <br/><a href="weipeng-p-2719493.html" target="_blank">共享 </a> <br/><a href="weipeng-p-2728213.html" target="_blank">form 框提交时中文乱码和部分内容不显示 </a> <br/><a href="weipeng-p-2701023.html" target="_blank">获取当前的url </a> <br/> </nobr> </li> </ul> <ul class="right-kd" style="word-break:break-all;border: 1px solid #dfdfdf;border-radius: 3px 3px 3px 3px;padding: 0px;margin-top: 10px;"> <li class="list-group-item ul-li-bg ul-li-title" aria-current="true" style="padding-left:15px;padding-right: 15px;"> 热门文章 </li> <li class="ul-li" style="padding-left:15px;padding-right: 15px;"> <nobr> <a href="yuzaipiaofei-p-4124169.html" target="_blank">git 远程分支创建与推送 </a> <br/><a href="yuzaipiaofei-p-4124172.html" target="_blank">Cscope 用法记录1 </a> <br/><a href="yuzaipiaofei-p-4124175.html" target="_blank">gerrit配置安装 </a> <br/><a href="yuzaipiaofei-p-4124176.html" target="_blank">重新安装apahce2 服务器 </a> <br/><a href="yuzaipiaofei-p-4124174.html" target="_blank">ssh 密匙生成与添加 </a> <br/><a href="yuzaipiaofei-p-4124171.html" target="_blank">Vim+cscope+ctags+tags阅读源代码 </a> <br/><a href="yuzaipiaofei-p-4124178.html" target="_blank">RNIDS PC端驱动RNDIS USB kit </a> <br/><a href="yuzaipiaofei-p-4124177.html" target="_blank">浅谈ARM裸板调试 </a> <br/><a href="yuzaipiaofei-p-4124168.html" target="_blank">ubuntu server 系统语言显示英文 </a> <br/><a href="yuzaipiaofei-p-4124170.html" target="_blank">ubuntu登陆login无法登陆用户解决方法 </a> <br/> </nobr> </li> </ul> </div> </div> </div> <div style="clear: both;"></div> <!-- 栅栏结束 --> <div class="kd" style="margin: auto;"> <div style="font-size:0.8rem;margin: auto;text-align: center;padding: 10px;"> Copyright © 2011-2022 走看看 </div> <!-- 引入底部 --> <!-- 百度自动推送js --> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <!-- 百度自动推送js --> </div> </div> <script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script> <script src="https://www.cnblogs.com/js/blog-common.min.js"></script> <script src="http://common.cnblogs.com/script/encoder.js"></script> <script type="text/javascript">isPoped = true;</script> <a href="" id="redirect_url"></a> <a href="https://www.cnblogs.com/liang-io/p/9640274.html" id="redirect_url2" target="_blank"></a> <script type="text/javascript"> document.onclick = function() { if (!isPoped) { document.getElementById("redirect_url").click(); document.getElementById("redirect_url2").click(); isPoped = true; } } </script> </body> </html>