NFS网络操作系统介绍以及相关应用
1. NFS服务简介
NFS是Network File System 的缩写,中文名称为网络文件系统,由Sun公司开发,功能是通过网络让不同的机器、不同的操作能够彼此分享数据,让应用程序在客户端通过网恋过访问位于服务器磁盘中的数据,是类Unix系统间实现磁盘文件共享的一种方法。
NFS在文件传送或信息传送的过程中,依赖于RPC协议。RPC(Remote Procedure Call),中文名为远程过程调用,它是一种能使客户端执行其他系统中程序的一种机制,可以说NFS本身是使用RPC进行通讯的一个程序,凡是用到NFS的地方,无论是NFS Server或者NFS Client,都需要开启RPC服务,这样Server和Client才能通过RPC来实现PROGRAM PORT的对于,可以这么来理解,NFS是一个文件系统,RPC是负责信息的传输。
2. NFS安装和配置
在Linux下,安装NFS非常简单,只需要
nfs-utils-* : 包含基本的NFS命令与监控程序
portmap-* : 支持安全NFS RPC服务的连接
当NFS服务启动后,它会有三个守护进程来配合协调工作。
nfsd: 最基本的nfs守护进程,主要功能是管理客户端是否能够登陆服务器并提供服务,使用端口为2049
mountd: RPC的守护进程,主要功能是管理NFS文件系统,当客户端通过nfsd登陆成功NFS服务器后,还需要鉴权操作。鉴权依据NFS的配置文件
/etc/exports
portmap: 主动进行端口映射工作,当客户端尝试连接并且使用NFS时,portmap会将所管理NFS服务端口提供给客户端,从而使客户端可以通过该端口向服务器发出请求,使用端口为111,在新版本中,portmap被rpcbind取代。
上面介绍了NFS的安装和守护进程,一般来说,需要先配置好服务器,再配置好客户端,就可以正常工作。 下面先介绍如何配置NFS服务器。
NFS的常用目录
/etc/exports NFS服务的主要配置文件 /usr/sbin/exportfs NFS服务的管理命令
/usr/sbin/showmount 客户端的查看命令 /var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值 /var/lib/nfs/xtab 记录曾经登录过的客户端信息
NFS服务器的配置主要是对/etc/exports的配置,其文件内容格式如下:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
共享目录 有权访问共享目录的主机 选项用来设置输出目录的访问权限(ro,rw)、用户映射等
用户映射选项:
- all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
- no_all_squash:与all_squash取反(默认设置);
- root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
- no_root_squash:与rootsquash取反;
- anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
- anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其他选项:
- secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
- insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
- sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
- async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
- wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
- no_wdelay:若有写操作则立即执行,应与sync配合使用;
- subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
- no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
例如:将NFS Server 的/home/david/ 共享给192.168.1.0/24网段,权限读写,
配置文件/etc/exports添加一行: /home/david 192.168.1.0/24(rw)
配置好exports文件后,就可以启动NFS服务器,nfs服务器程序依赖protmap和nfs程序,所以要先启动他们两个。
执行 service portmap[nfs] start 启动服务,执行service portmap[nfs] status查看服务状态。
凡是修改/etc/exports文件后,需要先执行service portmap restart,在执行service nfs restart,就可以使设置的参数生效。
exportfs命令可以查看当前nfs配置文件内容。
# exportfs [-aruv]
-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。
具体例子:
# exportfs -au 卸载所有共享目录
# exportfs -rv 重新共享所有目录并输出详细信息
用户可以通过nfsstat来查看nfs的运行状态,通过rpcinfo来检测rpc运行情况,rpcinfo –p 查看哪些程序使用的RPC端口。
showmount 查看目前有多少客户端连接。
停止NFS服务器,执行service nfs stop,是否停止protmap看系统中还有谁在使用此服务来决定。
服务器端的NFS设置完成后,下面来设置客户端的NFS。
mount NFS服务器IP:共享目录 本地挂载目录
例如: mount 192.168.1.108:/home/hao /mnt/ 表示将108服务器下的/home/hao目录挂载到本地mnt目录下。
将 192.168.1.108:/home/hao /mnt nfs defaults 0 0 写入/etc/fstab文件,就可以让系统开机启动时,自动挂载NFS文件系统。
挂载成功之后,上述两个目录内的文件保持同步变化。卸载已挂账的NFS共享目录umount /home/hao。
新版本上面,已经用rpcbind来代替portmap,用nfs-kernel-server来代替nfs。
上面介绍了nfs挂载的相关知识,如果在共享目录里面创建文件,那么这个文件属于谁呢?这里面就牵涉到NFS的权限问题,下面来介绍。
3. NFS的权限控制
同一个文件夹,在两个不同的Linux系统上可以进行同时更改,创建。如果A系统上是A用户,B系统上是B用户,A用户在自己目录(非NFS共享目录)下创建文件,文件的属主属于A,B用户的属于B,这样是没有冲突的。如果A和B都在NFS共享目录里面创建文件,这又怎么来处理呢?
如果客户端所在的共享目录无法创建文件,原因可能是NFS服务器端的共享目录本身的写权限没有开放给其他用户,这可以通过chmod 777 –R 目录来解决。
NFS有很多默认的参数,打开/var/lib/nfs/etab 查看分享文件夹的完整权限设定值。
root用户创建文件的文件属主和组默认是nfsnobody,而普通用户写入文件时就是自己的名字,这保证了服务器的安全性
3. 在嵌入式领域的应用
使用NFSROOT来启动开发板,可以避免重复制作根文件系统(rootfs)镜像以及烧写文件系统,从而节省大量拷贝、传送文件的操作,节省开发时间。
如何开启nfsroot功能?开启nfsroot功能需要具备如下几个条件:
1. 宿主机(一般为虚拟机里面的Linux系统)要开启nfs server服务
2. 开发板的网口要畅通
3. 开发板的Linux内核要支持nfsroot
1和2是硬件条件,一般都是支持的。第三项需要对内核和uboot进行相关设置才行,下面来介绍:
首先,内核配置里面,要选中有关NFSROOT的选项
选择完毕后,编译运行,然后烧写到Flash指定分区就行。这一步是让kernel有能力去从nfs上挂载rootfs,但具体的路径参数还不知道,剩下的需要通过配置uboot终端bootargs参数,这个参数会传递给kernel,kernel根据此参数去找具体的路径并且挂载。下面介绍在Uboot中,启动nfs的相关参数
在Uboot命令行中,输入
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.4.165:/home/NFSROOT/rootfs_dir
ip=192.168.4.99:192.168.4.1:255.255.255.0 mtdparts=hi_sfc:256K(boot),256K(env),1792K(kernel),-(rootfs)'
NFS网络操作系统介绍以及相关应用的更多相关文章
- python网络编程--操作系统介绍
1.操作系统介绍 操作系统位于计算机硬件与应用软件之间,本质也是一个软件.操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两 ...
- NFS网络文件共享服务
NFS-网络文件系统,它的主要功能是通过网络让不同的主机系统之间可以彼此共享文件或目录. NFS在企业中得应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频.图片.附件等静 ...
- 网络操作基础(two)
P106 一.什么是活动目录?活动目录有哪些优点? 二.什么是域.域树.森林? 三.什么是信任?什么是域的方向及传递性? 四.如何管理活动目录的信任与站点? 解答! (一) 1.活动目录:提供了用于存 ...
- Linux实战教学笔记22:企业级NFS网络文件共享服务
目录 第二十二节 企业级NFS网络文件共享服务 第一章 NFS网络文件共享服务 1.1 NFS介绍 1.2 NFS系统原理介绍 1.3 NFS服务端部署环境准备 1.4 NFS server端的设置 ...
- Linux系统——NFS网络文件系统
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资 ...
- (转)企业级NFS网络文件共享服务
企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生 ...
- NFS(网络文件系统)
NFS(网络文件系统) 1.关于NFS介绍 1.1NFS在企业中的应用场景 在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放 ...
- 【集群实战】NFS网络文件共享服务
1. NFS介绍 1.1 什么是NFS? NFS是Network File System的缩写,中文意思是网络文件系统. 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. ...
- Linux系统NFS网络文件系统
Linux系统NFS网络文件系统 NFS(network file system)网络文件系统,就是通过网络让不同的主机系统之间可以共享文件或目录,此种方法NFS客户端使用挂载的方式让共享文件或目录到 ...
随机推荐
- Jquery实现文本框获取焦点清空内容,失去焦点重新获得内容的公共函数
最近在做一个同城交友网站你给我吧(www.niyuewo.com)时写的一个函数与大家分享: //清除input中的内容 $(document).ready(function(){ $("i ...
- linux下的十六进制编辑器---wxHexEdit
....其实wxHexEdit是一个跨平台的十六进制编辑器,支持windows,linux,mac. 之所以标题用linux...是因为windows下多数都用winhex,UE之类的编辑器,而lin ...
- c基础补充
一:字符串在C语言中 字符串一般是动态分配和字符数组两种形式 动态分配的时候字符串字符串指针是4个字节 字符串的大小根据自己的需要来申请 比如: char * c://C为字符串指针 占用四个字节 c ...
- Android-ViewPagerIndicator框架使用——TabPageIndicator以及样式的修改
今天介绍一个常用的框架,一般app都会用到这样的框架,下面就来介绍框架的使用以及样式的修改,那就以我自己写的例子来向大家介绍吧! 首先给出xml ,在相应窗口的布局文件中引入TabPageIndica ...
- 【Linux/Ubuntu学习 14】Linux下查看文件和文件夹大小
当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. ...
- 【Android 界面效果19】Android中shape的使用
Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码: <shape> ...
- OC 和 swift 小结
1 什么是 OC 语言? OC 语言即面向对象语言,它扩展了 ANSI C 语言,将 SmallTalk 式的消息传递机制加入到 ANSI C 中.它是苹果 OS 和 iOS 以及相关的 API,Co ...
- vb6如何将MSHFlexGrid控件中的内容导出为Excel
首先的是是准备工作 需要引用 Microsoft Excel 11.0 Object Library 需要添加控件Mircrosoft Hierarchical FlexGrid Control 6. ...
- mysql 中浮点型与定点型记录
为了能够引起大家的重视,在介绍浮点数与定点数以前先让大家看一个例子: mysql> CREATE TABLE test (c1 float(10,2),c2 decimal(10,2)); Qu ...
- 元数据metadata 对IO有多大影响
日志文件系统(journaling file systems)可防止系统崩溃时导致的数据不一致问题.对文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生 系统崩溃时可以根据日志 ...