NFS+Autofs服务

1.什么是NFS(Network FileSystem)

     NFS 就是 Network FileSystem 的缩写,最早之前是由 Sun 所发展出来的。他最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 ( share file ),所以,也可以简单的将他看做是一个 file server 呢!这个 NFS Server 可以让你的 PC 来将网络远程的 NFS 主机分享的目录,挂载到本地端的机器当中,所以,在本地端的机器看起来,那个远程主机的目录就好象是自己的 partition 一般!

     虽然 NFS 有属于自己的协议与使用的 port number ,但是在资料传送或者其它相关讯息传递的时候, NFS 使用的则是一个称为远程过程调用( Remote Procedure Call, RPC )的协议来协助 NFS 本身的运作!



2.RPC(Remote Procedure Call)

    当我们在使用某些服务来进行远程联机的时候,有些信息,例如主机的IP、服务的 port number、与对应到的服务之 PID 等等,都需要管理与对应!这些管理 port 的对应与服务相关性的工作,就是这个 Remote Procedure Call, RPC 的任务了

NFS 本身的服务并没有提供资料传递的协议,但是 NFS 却能让我们进行档案的分享,这其中的原因,就是 NFS 使用到一些其它相关的传输协议!而这些传输的协议,就是使用到这个所谓的 RPC 的功能啰!这也就是说, NFS 本身就是使用 RPC 的一个 program 就是了!说的更白话一点, NFS 也可以视作是一个 RPC server 啦!同时要注意到的是,在某些状况中,不但跑 NFS 的 Server 需要激活 RPC 的服务,连带的,要挂载 NFS partition 的 Client 机器,也需要同步激活 RPC 才行!这样 Server 端与 Client 端才能借由 RPC 的协议来进行 program port 的对应喔!NFS 主要在管理分享出来的目录,而至于资料的传递,就直接将他丢给 RPC 的协议来运作就是了!



3.NFS需要有两个套件才行,分别是:

nfs-utils

就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其它相关 documents 与说明文件、执行档等的套件!这个就是 NFS 的主要套件

portmap


NFS的安装配置:

centos 5 :

yum -y install nfs-utils portmap

centos 6(在CentOS 6.3当中,portmap服务由rpcbind负责) :

yum -y install nfs-utils rpcbind


就如同刚刚提的到,我们的 NFS 其实可以被视为一个 RPC server program,而要激活任何一个 RPC server program 之前,我们都需要做好 port 的对应 ( mapping ) 的工作才行,这个工作其实就是『 portmap 』这个服务所负责的



4.NFS server端的设定:

a)./etc/exports

分享的目录 主机名称1或IP1(参数1,参数2) 主机名称2或IP2(参数3,参数4)

b).参数

rw: 可擦写的权限

ro: 只读的权限

no_root_squash: 登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!

root_squash: 在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份;

all_squash: 不论登入 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是 nobody 啦!

anonuid: 前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody,但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中!

anongid: 同 anonuid ,但是变成 group ID 就是了

sync: 资料同步写入到内存与硬盘当中

async: 资料会先暂存于内存当中,而非直接写入硬盘\


5.exportfs的用法

如果我们修改了/etc/exports后,并不需要重启nfs服务,只要用exportfs重新扫描一次/etc/exports,并且重新加载即可

语法: exportfs [-aruv]

-a: 全部挂载(或卸载) /etc/exports档案内的设定

-r: 重新挂载/etc/exports里面的设定,也同步的更新/etc/exports和/var/lib/nfs/xtab里面的内容

-u:卸载某一目录

-v:在export的时候,将分享的目录显示到荧屏上.


例子:

编写/etc/exports 文件,将特定的目录共享出去,在server段写入,定义某台机器可以访问,某台机器不可以访问,不准写入文件,


[root@aaa nfs]# cat /etc/exports

/ext4/aa *(rw)

/ext4/bb *(rw,,no_root_squash)

/nfs/tmp 10.0.0.123(rw,sync)

/nfs/opt *(ro)



exportfs -r 来实现重读文件,不需要重启服务

然后,可以通过另一台服务器来挂载目录,通过mount命令来挂载共享目录。

mount x.x.x.x:/ext4/aa /mnt

挂载之后,进入/mnt操作,会发现无法进行新增,删除等操作,即使使用root用户也无法操作该目录,以为redhat 6中,默认会添加上root-squash选项,会把root用户映射成nfsnobody账号,所以挂载后的目录权限需要根据nfsnobody的权限来做操作,可以设置成/ext4/aa为777的权限,进入该目录可以做操作,通过ls -lh去查看创建的目录为nfsnobody的所有者


mount x.x.x.x:/ext4/bb /mnt

挂载之后,用root用户进入操作之后,创建目录都为root所属

/nfs/tmp 10.0.0.123(rw,sync)

指定只有10.0.0.123这台机器可以挂载,并且挂载后数据写入会同步写入到硬盘上面,也就是内存与硬盘同步。



Autofs搭建:

修改/etc/auto.master 这个文件,

客户端本地目录    /etc/auto.nfs 随便指定的一个文件(可以去拷贝/etc/auto.misc)

/test   /etc/auto.nfs    指定服务器端挂载过来的目录,是要挂到客户端/test目录下,


修改/etc/auto.nfs文件

opt -rw 10.0.0.23:/nfs


将 0.23服务器上面的nfs目录自动挂载过来,挂载的目录是/test/opt,/test是挂载点,具体挂载到哪一个目录下面,是在auto.nfs设定。


其中,在auto.nfs挂载中,可加参数为:

(1)-a:把/etc/fstab中列出的路径全部挂载。

(2)-t:需要mount的类型,如nfs等。

(3)-r:将mount的路径定为read only。

(4)-v mount:过程的每一个操作都有message传回到屏幕上。

(5)rsize=n:在NFS服务器读取文件时NFS使用的字节数,默认值是1 024个字节。

(6)wsize=n:向NFS服务器写文件时NFS使用的字节数,默认值是1 024个字节。

(7)timeo=n:从超时后到第1次重新传送占用的1/7秒的数目,默认值是7/7秒。

(8)retry=n:在放弃后台mount操作之前可以尝试的次数,默认值是7 000次。

(9)soft:使用软挂载的方式挂载系统,若Client的请求得不到回应,则重新请求并传回错误信息。

(10)hard:使用硬挂载的方式挂载系统,该值是默认值,重复请求直到NFS服务器回应。

(11)intr:允许NFS中断文件操作和向调用它的程序返回值,默认不允许文件操作被中断。

(12)fg:一直在提示符下执行重复挂载。

(13)bg:如果第1次挂载文件系统失败,继续在后台尝试执行挂载,默认值是失败后不在后台处理。

(14)tcp:对文件系统的挂载使用TCP,而不是默认的UDP。

说明:mount NFS服务器的另一个重要参数是hard(硬)mount或soft(软)mount。


对于NFS挂载的时间默认是在/etc/sysconfig/autofs里面可以查看。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章