NFS是一种网络文件系统,是系统间进行文件共享的一种网络协议
在NFS的应用结构中有服务器和客户机两种角色
NFS客户端通过挂载NFS文件系统的方式访问
NFS服务器中输出的共享目录
在同一台主机中即可以是NFS服务器也可以作为NFS客户机
NFS有自己的协议与使用的端口,但是在传输文件或其他相关信息传送的时候,NFS使用的则是一个称为远端程序呼叫的协议来协助NFS本身的运作,简称RPC。
什么是RPC?
字面上理解就是一些程序在执行远程连接时,需要用到的程序。简单说,当我们在使用某些服务来进行远程连线时,有些数据,例如主机的IP,服务的端口与对应到的服务的PID,都需要管理与对应,这些管理端口的对应与服务相关的工作,就是RPC的任务。
现在我们将NFS和RPC两者的相关性连接起来理解,那么你该知道,NFS本身的服务并没有提供文件传输的协议,但是NFS却能让我们进行文件的分享,这其中的原因就是NFS使用到一些其他相关的传输协议。而这些传输的协议,就是使用到RPC的功能了。也就是说,NFS本身就是使用RPC的一个程序。更白话点说,NFS也可以看做是一个RPC服务器。要注意的是,不但运行NFS的服务器需要启动RPC服务,同时要挂载NFS分区的客户端机器,也需要启动RPC服务才行。也就是说,NFS主要在管理共享出来的目录,而文件的传输方面,是RPC的事。
搭建NFS服务所需软件包:
portmap软件包
提供了运行portmap服务所需的文件。portmap服务为NFS等服务器程序提供RPC服务的支持
nfs-utils软件包
提供了NFS服务器的启动脚本和管理维护工具
这两个软件包在系统中默认是已经安装的
相关文件
/etc/exports
是NFS的主要设定文件。
/usr/sbin/exportfs
这个是维护NFS共享资源的指令,我们可以利用这个指令重新分享/etc/exports变更的目录资源,将NFS服务器共享出来的目录写在或重新共享等等。
usr/sbin/showmount
exportfs是用在NFS服务器端,而showmount则主要是用在client端,可以用他来查看NFS共享出来的目录资源。
/var/lib/nfs/xtab
这个文件是NFS的纪录文件,当我们的NFS共享出目录资源后,到底有哪些客户端连接到我们的NFS主机呢,就是看这个文件的内容。
/etc/exports文件用于配置NFS服务器中输出的共享目录,该文件的布局如下:
exports文件中“客户端主机地址”字段可以使用多种形式表示主机地址,如下:
了解一些设置选项的属性:
rw:可读写的权限;ro:只读;
no_root_squash:登入NFS主机使用分享目录的使用者,如果是root,那么对于这个共享的目录来说,他就具有root的权限,这个项目不安全,不建议使用。
root_squash:在登入NFS主机使用共享目录的使用者如果是root,那么这个使用者的权限将被改变成匿名使用者,通常他的UID和GID都会变成nfsnobody身份。
all_squash:无论登入NFS的使用者身份为何,他的身份都会被改变成为nfsnobody。
anonuid:前面关于*_squash 提到的匿名使用者的UID 设定值,通常为nobody,但是您可以自行设定这个UID 的值!当然,这个UID 必需要存在与您的/etc/passwd 当中!
anongid:同anonuid ,但是变成group ID 就是了!
sync:资料同步写入到内存与硬盘中;
async:资料会先暂存内存当中,而非直接写入硬盘!
看一个/etc/exports文件的配置实例:
看看我机器上的实例:
重新启动nfs/portmap服务,如下图:
显示指定NFS服务器中的共享目录列表
# showmount -e 192.168.1.10
那么如何将NFS服务器上的共享资源挂载到本地呢?看如下操作:
查看是否被挂载同样也可以使用mount命令来查看
showmount命令同样也可以用来查看与NFS服务器连接的信息
查看当前nfs服务器上已经被客户机挂载使用的共享资源:
查看指定nfs服务器的客户机的信息
下面我们来学习服务器端命令的使用:
重新输出共享目录:
使nfs服务器重新读取exports文件中的设置
停止输出所有目录:
停止当前主机中NFS服务器的所有目录输出(但是nfs服务并没有关闭)
将nfs共享资源写入/etc/fstab中实现自动挂载
这样只要机器一启动就自动挂载nfs上的共享资源到本地/mnt目录下面。
接下来学习nfs客户端使用nfs+auto实现按需挂载
首先编辑/etc/auto.master,如下:
在/etc/auto.master添加上图中被标识的那行(/etc/test1中配置挂载项挂载在/mnt下)
接下来我们得到/etc下面新建一个名为test1的文件,并在里面配置挂载项
重启autofs服务
下面来测试一下
呵呵!测试成功!
各种文件系统的挂载实例如下:
nfs -ro,soft,intr 172.16.0.3:/var/ftp/pub
cd -fstype=iso9660,iocharset=cp936,ro :/dev/cdrom
fd -fstype=vfat :/dev/fd0
win -fstype=smbfs ://10.8.22.18/dir
local -fstype=ext3 :/dev/hda1
说明:
以上的挂载分别挂载的是nfs,cdrom,floppy,windows共享,本地文分区。挂载成功后,访问的位置分别是:/mnt/nfs,/mnt/cd,/mnt/fd,/mnt/win,/mnt/local。
卸载和正常卸载一样操作
例子以及说明:
public -rw,bg,soft,rsize=32768,wsize=32768 192.168.1.254:/home/public
test -rw,bg,soft,rsize=32768,wsize=32768 192.168.1.254:/home/test
temp -rw,bg,soft,rsize=32768,wsize=32768 192.168.1.254:/tmp
当我们在用戶端要使用 /mnt/public 的資料时,此時 autofs 才會去192.168.1.254 挂载 /home/public !当隔了 5 分钟沒有使用该目录下的資料后, 则/mnt/public将会主动的卸载。
参数说明:
fg 前台执行,mount 会持续尝试挂载,直到成功或 time out为止
bg后台执行mount命令,如果服务器经常重启,建议使用 bg 比较好。hard服务器和客户机任何一个离线,則 RPC 会持续的呼叫,直到对方恢复连线为止
soft 当 RPC time out 后重复呼叫,而非持续呼叫,如果你的服务器总重启,则建议
intr 当你使用上hard 方式挂载时,若加上 intr 这个参数, 则当RPC 持续呼叫中,该次的呼叫是可以被中断的 (interrupted)。
不过挂载镜像文件时有点特殊:
cdrom -fstype=iso9600,loop :/rhel5u3.iso
阅读(1310) | 评论(1) | 转发(0) |