NFS的简介NFS的安装和配置
NFS,是Network File System的简写,即网络文件系统。
网络文件系统是类UNIX系统支持的文件系统中的一种,也被称为NFS.
NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件
NFS的安装(Ubuntu)
NFS的配置(ubuntu)Ubuntu上默认是没有安装nfs服务器的,因此我们在使用之前必须安装:
ubuntu nfs 服务器的安装:
一般情况下,在执行这个命令时,会自动安装nfs客户端(nfs-common)和端口映射(rpcbind[new], portmap[old]).若是你的系统并没有安装,那么就手动安装吧:sudo apt-get install nfs-kernel-server
ubuntu nfs 客户端的安装:
端口映射的安装:sudo apt-get install nfs-common
什么是端口映射?sudo apt-get install rpcbind 或者 sudo apt-get install portmap
端口映射是一个服务器,将RPC程序号转换成Internet的端口号,在使用RPC调用时它必须运行。它只在第一次建立连接的时候有效,帮助应用程序找到正确的通讯端口,但是一旦双方正确连接,端口和应用绑定,portmap就不在起作用了。但对其他任何第一次需要找到端口建立通讯的应用仍然有效。
简单来说,portmap就是应用的端口的混一介绍人,双方成事之后,媒婆也就没用了,当然离婚之后再复婚,还是需要的。
啊,那安装它干嘛?
RPC(Remote Procedure Call Protocol),不要问我这是什么,额,我也不是很清楚。但是nfs正是基于这个协议的。所以呢,就需要它。
如果portmap进程停止运行或异常终止,那么该系统上的所有RPC服务器必须重启。首先停止NFS服务器上的所有NFS服务进程,然后启动端口映射(rpcbind或portmap),再启动服务器上的NFS进程.
ubuntu 下nfs的挂载目录及权限在文件/etc/exports中进行定义。
在/etc/exports文件末尾添加如下一行:
/home/liluo/LinuxShare 192.168.1.103(rw,sync,no_root_squash) 192.168.1.104(ro,sync,no_root_squash) /home/liluo/document *(ro,sync,no_root_squash) 其中: /home/liluo/Linuxshare和/home/liluo/document是要共享的目录 *代表运行所有的网络端访问 rw是可读可写 sync是资料同步写入内存和硬盘 no_root_squash是nfs客户端分享目录使用者的权限
那么,/home/liluo/LinuxShare就被192.168.1.103和192.168.1.104共享了,但是只是访问权限不同,一个可读写,一个只读。
而/home/liluo/LinuxShare被所有网络端进行读写访问。
此时,只要另一台主机进行连接,就可以访问Linuxshare下的东西了。
(1)访问权限选项--->用于控制输出目录访问权限
(2)用户映射选项ro--->只读访问 rw--->读写访问
(3)常用其他选项all_squash---------->将不管登陆 NFS 主机的用户是什么都会被重新设定为 匿名用户(nobody)
no_all_squash----->与all_squash相反(默认设置)
root_squash-------->将root及所属用户组都映射为匿名用户或用户组(默认设置)
no_root_squash--->与root_squash相反,登入到 NFS 主机的用户如果是 ROOT 用户,他就拥有 ROOT 的权限 ,
anongid=xxx-------->当远程访问被映射为匿名用户时,指定该匿名用户账户为xxx, 此 ID 必须存在于 /etc/passwd 中
anongid=xxx-------->同 anonuid ,但是变成 group ID
sync---------------------->资料同步写入内存缓冲区和硬盘,虽然这样做效率较低,但可以保证数据的一致性
async-------------------->资料会先暂时存放在内存中,必要时写入硬盘
secure------------------->限制客户端只能从<1024的TCP/IP端口连接NFS系统服务器(默认设置)
insecure----------------->允许客户端从>1024的TCP/IP端口连接NFS系统服务器
wdelay------------------->检查是否能存在相关的写操作,如果有,那么一起执行,可提高效率(默认设置)
no_wdelay-------------->若有写操作,立即执行,应与sync配合使用
subtree_check--------->若输出的目录是一个子目录。则NFS系统服务器将检查父目录的权限(默认设置)
no_subtree_check---->忽略父目录权限的检查,这样做可提高效率
NFS共享(ubuntu)
服务端A(共享主机端)
sudo /etc/init.d/nfs-kernel-server status----->//查看nfs服务器运行状态 //j假如nfs服务器停止运行 sudo /etc/init.d/nfs-kernel-server start------>//启动nfs服务 //当nfs服务器正在运行 sudo /etc/init.d/nfs-kernel-server restart 或者 sudo service nfs-kernel-server restart------>//重启nfs服务
假设服务器A的ip为192.168.1.104,且共享目录为/home/liluo/share,那么
客户端(想要获取共享的主机端):
服务端使用showmount命令查询NFS的共享状态://挂载共享目录share到本地目录~/free下, sudo mount -t nfs 192.168.1.104:/home/liluo/share ~/free //当不需要共享目录时,就可以卸载了 sudo umount ~/free
showmount -e --->//查看自己的共享信息 showmount -e NFS服务器ip ----->//查看指定NFS服务器的共享信息 showmount -a ---->//显示已经与客户端连接上的目录信息
相关命令(ubuntu)
1、如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下:# exportfs [-aruv] -a 全部挂载或卸载 /etc/exports中的内容 -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录) -v 在export的时候,将详细的信息输出到屏幕上。 具体例子: # exportfs -au 卸载所有共享目录 # exportfs -rv 重新共享所有目录并输出详细信息
2、rpcinfo
查看rpc执行信息,可以用于检测rpc运行情况的工具,利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些
3、df
查看本地硬盘的挂载信息
题外话
nfs服务不仅可以用在linux下,windows同样支持nfs服务。
以上那些放在代码框的语句并不是什么代码,只是linux终端下的一些命令和nfs配置文件的用法,切勿因此困扰!