linux nfs
学到这里差不多就结束了linux的基础学习了,其实linux的内容并不难,我们要经常的反复的去操作它,多多和它去联络感情才能很好的掌握这个linux。
加油!今天是星期二。没有什么比努力让人更加热血沸腾,成功会不远万里地来追寻我。
一、NFS概述
NFS(网络文件系统,Network File System)采用CS的工作模式。NFS是分布式计算系统的一个组成部分,可以实现在异种网络上共享和装配远程文件系统。NFS提供了一种在类Unix系统上的共享文件的方法。
它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。
一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。NFS一般用来存储共享视频,图片等静态数据。
NFS还可以结合远程网络启动实现
无盘工作站(PXE启动,所有数据都在服务器的磁盘阵列上)
瘦客户工作站(本地启动系统,本地磁盘存储常用系统工具,而所有/home目录的用户数据被放在NFS服务器上并且在网络上处处可见)
二、NFS协议以及各版本的组要差别
2.1、V3相对V2的主要区别
1)文件尺寸
V2最大只支持32BIT的文件大小,而NFS V3新增加了支持64BIT文件大小的技术。
2) 文件传输尺寸
V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。
3)完整的信息返回
V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。
4)增加了对TCP传输协议的支持
V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持
5)异步写入特性
NFS V3能否使用异步写入,这是可选择的一种特性。
NFS V3客户端发发送一个异步写入请求到服务器,在给客户端答复之前服务器并不是必须要将数据写入到存储器中(稳定的)。
当客户端希望释放这个copy的时候,它会向服务器通过这个操作过程,以确保每个操作步骤的完整。
异步写入能够使服务器确定最好的同步数据的策略使数据尽可能的同步的提交。
与V2比较来看,这样的机制能更好的实现数据缓冲和更多的平行(平衡)。而NFS V2的SERVER在将数据写入存储器之前不能再相应任何的写入请求。
改进了SERVER的mount性能
有更好的I/O WRITES性能。
更强网络运行效能,使得网络运作更为有效。
更强的灾难恢复功能。
2.2、V4相对V3的改进
改进了INTERNET上的存取和执行效能
在协议中增强了安全方面的特性
增强的跨平台特性
三、RPC(Remote Procedure Call Protocol,远程过程调用)
3.1、概述
1)RPC(Remote Procedure Call Protocol):远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。
在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
2)RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。
当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
3)NFS协议本身没有网络传输功能,而是基于RPC实现的。
4)RPC提供了一个面向过程的远程服务结构。
5)RPC可以通过网络从远程主机上请求服务,而不需要了解底层网络技术的协议。
6)RPC是工作在OSI模型的会话层,它可以为遵循RPC协议应用层协议提供端口注册功能。
7)很多服务都可以向RPC注册端口。
8)RPC使用网络端口111来监听客户端的请求。
3.2、NFS与RPC
四、NFS的详解
4.1、NFS的守护进程
NFS的不同功能由不同的守护进程提供。
NFS的每个功能都有RPC分配分配的端口监听。
rpc.nfsd:基本的NFS守护进程(2049端口),主要负责登录权限检测。
rpc.mountd:负责管理NFS的文件系统,对客户端存取服务器的文件进行一系列的管理。
rpc.rquotad:提供远程磁盘限额服务。
rpc.lockd:用于管理文件的锁定,防止多个客户端同时写入某个文件时产生的冲突。
rpc.statd:用来检查共享目录的一致性
4.2、NFS的相关工具
exportfs:NFS服务器端功能,维护共享资源
showmount:NFS客户端功能,查看服务器共享的目录。(后面跟ip地址)
nfsstat:显示NFS的状态统计信息。
rpcinfo:显示由RPC维护的端口映射,显示已注册的RPC服务列表
4.3、NFS的安装与启动
1)在服务器端:sudo apt-get install nfs-common nfs-kernel-server(同时也安装了客户端的nfs)
2)启动服务器端的nfs服务器:sudo service nfs-kernel-server restart
3)在客户端(之安装nfs客户端):sudo apt install nfs-ommon
4.4、NFS服务端
1)主要配置文件/etc/exports
共享目录 [主机1(参数项)] [主机2(参数项)] ...
主机:ip地址或主机名
参数项:
ro 设置共享目录为只读
rw 设置共享目录可读写
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户写入NFS目录,则立即写入,使用async时无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
2)exportfs命令
用于维护NFS共享的目录列表
当修改了/etc/exports之后,无需重启nfs服务
exportfs [-aruv]
-a:全部挂载或卸载配置文件中的设置
-r:重新挂载配置文件中的设置。
-u:卸载共享目录
-v:显示输出列表同时,显示设定参数。
4.5、NFS客户端
1)showmount命令
查看NFS服务器上所有共享目录 showmount –e ip_address
查看服务器上哪些共享目录被挂载 showmount –d ip_address
2)NFS的挂载与卸载
挂载 mount –t nfs [-o 参数] server_adr:/共享目录 /本机挂载点
卸载 umount /本机挂载点 (加选项-f进行强制卸载)
3)启动时挂载
修改/etc/fstab文件 192.168.0.200:/share /share nfs hard,intr 0 0
五、NFS实现共享文件实战
5.1、环境
首先我在ubuntu的desktop版充当nfs客户端,在ubuntu的server版充当nfs服务器端
5.2、步骤
1)首先在ubuntu的server版中安装nfs服务器,然后开启服务
sudo apt install nfs-kernel-server
sudo service nfs-kernel-server restart
2)创建一个共享目录在服务器端
3)修改nfs配置文件/etc/exports,然后要重启服务
4)在客户端中安装nfs客户端,并在客户端查看nfs服务器的共享目录
5)在客户端中创建一个目录nfsfolder来远程挂载nfs服务器中的nfsshare
6)零时挂载
7)测试,在nfs服务器端的共享目录放一个a.txt文件,然后在去客户端哪里查看
8)永久挂载,修改/etc/fstab文件