📄 0330nfs.htm
字号:
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head> <meta http-equiv="Content-Type" content="text/html; "> <meta name="Author" content="VBird"> <meta name="GENERATOR" content="Mozilla/4.5 [zh-TW] (WinNT; I) [Netscape]"> <meta name="Description" content="NFS 伺服器的安裝與設定!"> <title>鸟哥的 Linux 私房菜 -- Network File System ( NFS ) Server</title><!-- saved from url=(0022)http://internet.e-mail --><style> <!-- body{background-image=url(http://linux.vbird.org/VBirdLinux.jpg);background-ATTACHMENT=FIXED} --></style></head><body nosave="" background="0330nfs_files/VBirdLinux.jpg"><center><center><b><font size="+2" color="#3333ff"><font face="SimSun">鸟哥的</font><font face="Times New Roman,Times"> Linux </font><font face="SimSun">与</font><font face="Times New Roman,Times"> ADSL </font><font face="SimSun">私房菜</font></font></b><br><a href="http://linux.vbird.org/" target="_top"><img src="0330nfs_files/VBirdTitle2.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_basic"><img src="0330nfs_files/icon_system.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_server"><img src="0330nfs_files/icon_server.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_security"><img src="0330nfs_files/icon_security.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://phorum.vbird.org/" target="_blank"><img src="0330nfs_files/icon_forums.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/adsl"><img src="0330nfs_files/icon_adsl.gif" nosave="" border="0" height="25" width="90"></a><br><hr width="100%"></center><font size="+2" color="#3333ff"><a href="http://linux.vbird.org/linux_server/0330nfs.php" target="_self"><font face="SimSun">简易</font><font face="Times New Roman,Times">NFS </font><font face="SimSun">服务器设定</font></a></font></center><div align="right"><font size="-1" color="#3333ff" face="SimSun">最近更新日期:2003/09/10</font></div><font size="-2" color="#000099"> </font><table bgcolor="#ffcccc" border="1" cols="1" width="100%"><tbody><tr><td><font size="-1" color="#000099">NFS为 Network FileSystem 的简称,最早之前是由Sun 这家公司所发展出来的,他的目的就是想让不同的机器、不同的操作系统可以彼此分享个别的档案啦!目前在Unix Like 当中用来做为 file server 是相当不错的一个方案喔!基本上, UnixLike 主机连接到另一部 Unix Like 主机来分享彼此的档案时,使用 NFS 要比 SAMBA快速且方便的多了!此外, NFS 的设定真的很简单,几乎只要记得启动 RemotePocedure Call 这个咚咚 ( 就是 portmap 这个套件啦! ) 就一定可以架设的起来!真是不错啊!不过,如果要达成Windows 与 Linux 之间的沟通,那么还是以 SAMBA 比较容易啊!无论如何, NFS还是可以做为小公司或学校单位内部 Unix Like 机器共享 file 的一个 Server喔!</font></td></tr></tbody></table><font size="-2" color="#000099"> </font><br><font color="#000099"><font size="+1"><a href="#What_NFS_0">NFS 的由来与其功能</a></font>:</font><br><font color="#000099"> :<a href="#What_NFS_NFS">什么是 NFS ( NetworkFileSystem )</a></font><br><font color="#000099"> :<a href="#What_NFS_RPC">什么是 RPC ( RemoteProcedure Call )</a></font><br><font color="#000099"> :<a href="#What_NFS_daemons">NFS 启动的RPC daemons</a></font><br><font color="#000099"><font size="+1"><a href="#needed">需要的套件</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#NFS_Server_0">Server端的设定</a></font>:</font><br><font color="#000099"> :<a href="#NFS_Server_package">NFS 的套件结构</a></font><br><font color="#000099"> :<a href="#NFS_Server_partition">主机的规划技巧建议</a></font><br><font color="#000099"> :<a href="#NFS_Server_fllow">设定流程(/etc/exports)</a></font><br><font color="#000099"> :<a href="#NFS_server_RPC_comm">RPC server的相关指令</a></font><br><font color="#000099"><font size="+1"><a href="#NFS_client">Client 端的设定</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#close_your_linux">关机或结束时的注意事项</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#firewall">安全设定(被防火墙挡掉了)</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#excer">实际演练</a></font>:</font><br><font size="+1" color="#000099"><a href="#important">重点回顾</a></font><br><font size="+1" color="#000099"><a href="#lpi">本章与 LPI 的关系</a></font><br><font size="+1" color="#000099"><a href="#reference">参考资源</a>:</font><br><font size="+1" color="#000099"><a href="#FAQ">本章习题练习</a></font><br><hr width="100%"><a name="What_NFS_0"></a><font size="+1" color="#000099">NFS的由来与其功能</font><ul><hr width="100%"><a name="What_NFS_NFS"></a><font color="#000099">什么是NFS ( Network FileSystem )</font><br> <br>在开始进行 NFS 的设定之前,我们得先来了解一下,什么是 NFS 呢?不然讲了一堆也没有用,对吧!^_^!所谓的 NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun 这家公司所发展出来的。<font color="#000066">他最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案( share file )</font>,所以,您也可以简单的将他看做是一个 file server 呢!这个NFS Server 可以让您的 PC 来将网络远程的 NFS 主机分享的目录,挂载到本地端的机器当中,所以,在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分割槽一样( partition )!使用上面相当的便利!<br> <center><img src="0330nfs_files/0330nfs-1.jpg" nosave="" height="298" width="467"><br><a name="fig_01"></a><font color="#000066">图一、NFS 主机分享目录与Client 挂载示意图</font><br> </center>就如同上面的图示一般,当我们的 NFS Server 设定好了分享出来的 <font color="#000066">/home/sharefile</font>这个目录后,其它的 Client 端就可以将这个目录挂载到自己系统上面的某个挂载点(挂载点可以自订!),例如前面图示中的Personal Computer 1 与 Personal Computer 2 挂载的目录就不相同。我只要在Personal Computer 1 系统中进入 /home/data/sharefile 内,就可以看到 NFSServer 系统内的 /home/sharefile 目录下的所有数据了 (当然,权限要足够啊!^_^)!这个/home/data/sharefile 就好像我自己 Personal Computer 1 里面的一个 partition喔!只要权限对了,那么您可以使用 cp, cd, mv, rm... 等等磁盘或档案相关的指令!真是他X的方便吶!<br> <br>那么您或许会问啦:『咦!那么这个 NFS 是藉由什么样的协议来进行传输的呢?』虽然NFS 有属于自己的协议与使用的 port number ,但是在数据传送或者其它相关讯息传递的时候,NFS 使用的则是一个称为<font color="#000066">远程过程调用( Remote ProcedureCall, RPC )</font>的协定来协助 NFS 本身的运作!<br> <br><hr width="100%"><a name="What_NFS_RPC"></a><font color="#000099">什么是RPC ( Remote Procedure Call )</font><br> <br>那么什么是 RPC 呢?由字面上的意思来看『远程过程调用』不就是一些程序(Program )在执行远程联机时,需要用到的程序吗?呵呵!是这样没错啦!简单的来说,当我们在使用某些服务来进行远程联机的时候,有些信息,例如主机的IP、服务的 port number、与对应到的服务之 PID 等等,都需要管理与对应!这些管理port 的对应与服务相关性的工作,就是这个 Remote Procedure Call, RPC 的任务了!<br> <br>好了,如果我们将 NFS 与 RPC 两者的相关性连接起来的话,那么您应该就可以知道:NFS 本身的服务并没有提供数据传递的协议,但是 NFS 却能让我们进行档案的分享,这其中的原因,就是NFS 使用到一些其它相关的传输协议!而这些传输的协议,就是使用到这个所谓的RPC 的功能啰!这也就是说, <font color="#000000">NFS 本身就是使用 RPC 的一个program 就是了!说的更白话一点, NFS 也可以视作是一个 RPC server 啦!</font>同时要注意到的是,在某些状况中,不但跑NFS 的 Server 需要启动 RPC 的服务,连带的,要挂载 NFS partition 的 Client机器,也需要同步启动 RPC 才行!这样 Server 端与 Client 端才能藉由 RPC 的协议来进行program port 的对应喔!<br> <br>OK!简单的说, NFS 也可以看做是 RPC server 的一种,因为他是使用这种协议的program 呀! ^_^ !那么为什么 NFS 要使用 RPC 执行呢?这是因为 NFS本身可以被看做是一个档案系统,那么一来的话,您的使用者联机常常变化,而且您的档案内容啦、分享的目录啦,还有其它档案相关的信息等等,也都会常常在变化,这个时候,使用类似这种可以对应program number 与 port number 的 RPC 就相当的方便了!也就是说,NFS主要在管理分享出来的目录,而至于数据的传递,就直接将他丢给RPC 的协定来运作就是了!<br> <br>更多关于 NFS 协议的信息您可以参考底下的网页:<br> <ul><li><a href="http://www.faqs.org/rfcs/rfc1094.html" target="_blank">http://www.faqs.org/rfcs/rfc1094.html</a></li><li><a href="http://www.tldp.org/HOWTO/NFS-HOWTO/index.html" target="_blank">http://www.tldp.org/HOWTO/NFS-HOWTO/index.html</a></li></ul> <br><hr width="100%"><a name="What_NFS_daemons"></a><font color="#000099">NFS启动的 RPC daemons</font><br> <br>NFS server 总共需要启用到至少两个 daemons ,一个管理 Client 是否可以登入的问题,另一个管理登入主机后的Client 能够使用的档案权限!如果您还要管理 quota 的话,那么 NFS 还会自动的再加载其它相关的RPC program 呢!我们这里以最简单的方式来设定 NFS,说明如下:</ul><ul><ul><li><font color="#000066">rpc.nfsd</font>:这个 daemon 主要的功能就是在管理Client 是否能够登入主机的权限啦,其中还包含这个登入者的 ID 的判别喔!</li></ul></ul><ul><ul><li><font color="#000066">rpc.mountd</font>:这个 daemon 主要的功能,则是在管理NFS 的档案系统哩!当 Client 端顺利的通过 rpc.nfsd 而登入主机之后,在他可以使用NFS server 提供的档案之前,还会经过档案使用权限 ( 就是那个 -rwxrwxrwx 与owner, group 那几个权限啦 ) 的认证程序!他会去读 NFS 的设定档<font color="#000066" face="SimSun">/etc/exports</font>来比对 Client 的权限,当通过这一关之后, Client就可以取得使用 NFS 档案的权限啦!(注:这个也是我们用来管理 NFS 分享之目录的使用权限与安全设定的地方哩!)</li></ul></ul><hr width="100%"><a name="needed"></a><font size="+1" color="#000099">需要的套件</font><ul>要启动 NFS 我们必须要有两个套件才行,分别是:</ul><ul><ul><li><font color="#000099" face="SimSun">nfs-utils 与 nfs-utils-clients(有时后仅有一个)</font></li><li><font color="#000099" face="SimSun">portmap</font></li></ul></ul><ul><li><b><font color="#000066">portmap</font></b>:</li><br>就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC server program,而要启动任何一个RPC server program 之前,我们都需要做好 port 的对应 ( mapping ) 的工作才行,这个工作其实就是『portmap 』这个服务所负责的!也就是说,<font color="#000066">在启动任何一个RPC server 之前,我们都需要启动 portmap 才行呢</font>!那么这个 portmap到底在干嘛呢?就如同这个服务的名称,哈哈!就是作 port 的 mapping 啊!举个例子来说:当Client 端尝试来使用 RPC server 所提供的服务时,由于 Client 需要取得一个可以连接的port 才能够使用 RPC server 所提供的服务,因此, Client 首先就会去跟 portmap讲『喂!可不可以通知一下,给我个 port number ,好让我可以跟 RPC 联络吧!』这个时候portmap 就自动的将自己管理的 port mapping 告知 Client ,好让他可以连接上来server 呢!所以啰:『<font color="#000066">启动 NFS 之前,请先启动 portmap!</font>』</ul><ul><li><b><font color="#000066">nfs-utils:</font></b></li><br>就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其它相关 documents与说明文件、执行档等的套件!这个就是 NFS 的主要套件啦!一定要有喔!</ul><ul>好了,知道我们需要这两个套件之后,现在干嘛?!赶快去您的系统先用 RPM看一下有没有这两个套件啦!没有的话赶快用 RPM 去安装喔!不然就玩不下去了!<br> <table bgcolor="#ffffff" border="1" cols="1" width="90%"><tbody><tr><td>例题:<br>请问我的主机是以 RPM 为套件管理的 Linux distribution ,例如 Red Hat,Mandrake 与 OpenLinux 等版本,那么我要如何知道我的主机里面是否已经安装了portmap 与 nfs 相关的套件呢?<br>答:<blockquote>简单的使用 rpm -qa | grep nfs 与 rpm -qa | grep portmap 即可知道啦!</blockquote></td></tr></tbody></table></ul><hr width="100%"><a name="NFS_Server_0"></a><font size="+1" color="#000099">Server端的设定:</font><ul><hr width="100%"><a name="NFS_Server_package"></a><font color="#000099">NFS的套件结构</font><br> <br>NFS 这个咚咚真的是很简单,上面我们提到的 NFS 套件中,设定档只有一个,执行文件也不多,记录文件也三三两两而已吶!赶紧先来看一看吧!^_^<br> <ul><li><b><font color="#000066" face="SimSun">/etc/exports</font></b>:这个档案就是NFS 的主要设定档了!不过,系统并没有默认值,所以这个档案『不一定会存在』,所以您必须要使用vi 主动的建立起这个档案喔!我们等一下要谈的设定也仅只是这个档案而已吶!</li>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -