下面是小弟写的一些介绍NFS的文章,由於想参与网路管理的工作学长指派这一个主题给我报告,由於本身对这方面并不太懂,只是找一些书籍随便拼拼凑凑,不知道有没有写到重点,或是一些要点没有提到,因此post出来希望熟悉NFS的高手们能花一点时间看看我的文章然後mail给我,指出错误的地方,或者直接reply也可以,谢谢!
E-mail:u3430854@sparc20.ncu.edu.tw
===========================================================================
◎WhatisNFS?
NetworkFileSystem
NFS是由SUN公司发展,并於1984年推出,NFS是一个RPCservice,
它使我们能够达到档案的共享,它的设计是为了在不同的系统间使用,所
以它的通讯协定设计与主机及作业系统无关.当使用者想用远端档案时只
要用"mount"就可把remote档案系统挂接在自己的档案系统之下,使得远端
的档案使用上和local机器的档案没两样.
machineAmachineB
//
binetcusrbinetcusr
manmansharelocal
假如我们在机器A上,要把机器B上的/usr/man挂接到machineA的
/usr/man只要下
mountmachine_name:/usr/man/usr/home
就可mount过来.而我们不只是可以mount目录,就是一个档也是可以的.在
挂接之後我们只能对档案做reading(orwriting)的动作,而不能在
remotemachie上把此档或目录move,delete掉,但须注意的是如我们
mount/usr後,不能再mount/usr底下的目录,否则会发生错误
□Servers&Clients
NFS就是促使Servers上的档案能被其他的机器mount,而达到资源共享,
享用这些档案的机器就可称为Client,一个client可以从server上mount一
个档或是一个层次的目录(filehierarchies).然而事实上任何一台机器
都可以做NFSserverorNFSclient,甚至同时为NFSserverandNFS
client也可以.
□Server'sExporting&Client'sMounting
NFSserver所export出来的档案或目录都记录在/etc/exports这
一个档中,当我们启动NFSserver时在/etc/rc.local的这一个script
会自动的启动exportfs这一个程式,搜寻/etc/exports这一个档是否
存在,并且赋予正确的权限给所有export出去的filehierarchies.
但须注意的是,只有server所export出去的路径,NFSclient才能够mount
,同样的当启动client时,系统会自动去mount所有serverexport的路径,
而mount到的所有路径都会记录在/etc/fstab下,类似如下的fstab档
/dev/sd0a/4.2rw11
/dev/sd0h/tmp4.2rw13
/dev/sd0g/usr4.2rw12
/dev/fd0/pcfspcfsrw,noauto00
sparc20:/swap/swapnfsrw,intr,bg,soft00
sparc17:/home/homenfsrw,intr,bg,soft00
sparc17:/home3/home3nfsrw,intr,bg,soft00
sparc14:/home4/home4nfsrw,intr,bg,soft00
sparc20:/home2/home2nfsrw,intr,bg,soft00
sparc20:/var/spool/mail/var/spool/mailnfsrw,intr,bg,soft00
rs970:/home1/home1nfsrw,intr,bg,soft00
★Noted:
当clientmount到一个路径,绝对不是说copyserver上的这一个路径
到local的机器上,我们可以用cd进入这一个mount到的路径,就如同是使用
localdirectory一样
□SettingUpaNFSServer
1.定义机器为NFSfileserver
2.划分server'sdisk,定义哪一些partitions是要提供出来作为
client所共享的filesystem
3.在ClientForm上定义每一台client的参数
4.写出/etc/exports(一般系统都有一个defaultexports)
5.重新bootNFSserveror用指令exportfs-a输出所有的
directories并且用nfsd8&启动nfsd守护程式,常驻在背景
※ps.一些细节
1.检查/etc/exports输出路径的权限,确定只有root能修改,
alluser只能read
2.用exportfs去增加或删除directories
exportfs-oaccess=engineering,ro=dancer/usr
exportfs-u/usr
3.假如你的机器没有NIS(YPserver)的服务,当更改资料时记得修改
/etc/passwd
/etc/group
/etc/hosts
/etc/ethers
4.为你自己的network设置security
exportfs的语法
/usr/etc/exportfs[-avu][-ooption][directory]
-a:把/etc/exports中所有路径export出去
-u:把export出去的路径卸下,如exportfs-u/usr
-ooption:如exportfs-oro/usr,所有人对/usr都为readonly
option还有root=hostname,access=client
access=netgroup
Forexample:
exportfs-a把exports中的路径全部export出去
exportfs-oaccess=engineering:other/usr
/usr这路径export後只有engineeringandother这两个
group能够read&write
exportfs-oaccess=oak,ro=dancer/usr
设定dancer这台client对/usr为readonly,且只有
oak这一个group能做read
/etc/exports档的□例
●syntax:directory-option[,option]
(设定两个group能rw)
/usr-access=engineering:accounting
/home-access=engineering:accounting
/var/spool/mail-access=engineering:accounting
/export/exec/sun3-access=engineering:accounting
/export/exec/sun3.sunos.4.1-access=engineering:accounting
/export/exec/kvm/sun3.sunos.4.1-access=engineering:accounting
/export/root/birch-access=birch,root=birch
/export/swap/birch-access=birch,root=birch
/export/root/oak-access=oak,root=oak
/export/swap/oak-access=oak,root=oak
/export/root/willow-access=willow,root=willow
/export/swap/willow-access=willow,root=willow
/export/root/pine-accsee=pine,root=pine
/export/swap/pine-accsee=pine,root=pine
(access=client,root=hostname如此只有这一台client的superuser有权力rw)
□SettingUpaNFSClient
1.宣告机器为没有磁碟机或没有资料的Client,在使用SunInstall之前
2.编辑好/etc/fstab这一个档,确定要mount的路径都在fstab中
3.依照fstab所设的内容,在Client上设定好Mountpoints
(mount_points就是用mkdir设exports所输出的路径)
4.确定我们所要mount的路径,都有出现在/etc/exports中
5.可以启动mount去连结server上的directories(mount-a)
/etc/fstab档的□例
●syntaxfilesystemdirectorytypeoptionsfreqpass
oak:/export/root/boomer/nfsrw00
^^^
因为档案在server上,notonclient
所以client的设定为0
oak:/export/exec/sun3/usrnfsro00
oak:/export/exec/kvm/sun3/usr/kvmnfsro00
oak:/usr/share/usr/sharenfsro00
oak:/home/oak/home/oaknfsrw,bg00
§mount的语法
●syntax:mount-ttype[-rv]-o[option]server:pathname/mount_point
MOUNT:
mount-a把/etc/fstab中所列的路径全部挂上
mount-oro,soft,bgdancer:/usr/local/usr/local/dancer
把dancerserver的/usr/localmount到client的
/usr/local/dancer并且是readonly
-ttype:你所要mount的型别,如nfsor4.2
-r:所mount的路径定为readonly
-v:mount过程的每一个动作,都有messages传回到萤幕上
hard:重复要求,直到server回应为止,但如server一直不回应
theservermaybedown!
soft:当client的请求得不到回应,retryonetime後传回
errormessage
bg:当第一次请求不成功,第二次的mount将放到背景执行
fg:retriesmount都一直在提示符号下进行
intr:当正在进行NFS请求时,允许用键盘中断
mount成功时的message
NFSserverhostnameok
mountfail
NFSserverhostnamenotresponding,stilltrying
...hostnameservernotreponding:RPC:Timedout
§UNMOUNT:
umountmount_point
umount-a卸下所有已经mount上的路径
==========================================================================
◎HowNFSWork?
当我们启动NFSfileserver时,/etc/rc.local会自动启动exportfs这
一个程式,指定可以export的档案或目录,而我们所能mount的也只能是其所指定
的目录.
□NFS架设在XDR/RPC的协定之上
XDR:(eXternalDataRepresentation)外部资料表示法
XDR(eXternalDataRepresentation)提供一种方法把资料从一种格式转换
成另一种标准资料格式表示法,确保在不同的电脑,作业系统及电脑语言中,所
有资料代表的意义都是相同的
RPC:(RemoteProcedureCalls)远端程序呼叫
RPC(RemoteProcedureCalls)远端程序呼叫,请求远端电脑给予服务.委
托器(client)就会透过网路传送RPC到远端电脑,请求服务.
(一般localmachine:clientremotemachine:server)
□NFS如何运用RPC传送资料
客户端process主服务端process
┌————┐┌—————┐
│客户端││主服务站│
│routines││routines│
└—┬——┘└┬————┘
本地程序呼叫│《│《
(1)││(10)(6)││(5)
》│》│
┌———┴┐┌————┴┐
│客户端││主服务端│
│stub││stub│
└—┬——┘└┬————┘
系统呼叫│《│《
(2)││(9)(7)││(4)
》│》│
┌———┴┐(8)┌————┴┐
│routines├——————>│routines│