nfs不同版本的挂载与解析

  • NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS.  NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件 。
  • 运行模式: C/S 
    版本异同:RHEL6.5以NFSv3作为默认版本,NFSv3使用TCP、UDP协议(端口号是2049),默认是UDP; RHEL7以NFSv4作为默认版本,NFSv4使用TCP协议(端口号是2049)和NFS服务器建立连接。
  • 原理示意图:

  • RHEL6.5环境:
  • 服务端配置安装
  • 1、包安装
  • # rpm -qa | grep nfs-utils
  • # yum install nfs-utils rpcbind
  • 要部署NFS服务,需要安装上面两个软件包  1.nfs-utils:NSF主程序    包括rpc.nfsd,rpc.mountd等等  2.rpcbind:rpc主程序     NFS可以被视为一个RPC程序,在启动任何一个RPC程序之前,需要做好端口映射工作,这个映射工作     就是由rpcbind服务来完成的,因此必须先启动rpcbind服务,再启动nfs服务

2、NFS文件配置:

[[email protected] /]# vi /etc/exports #增加一行:/tmp/test0920  11.11.165.0/24(rw,no_root_squash,no_all_squash,sync)

:x保存退出;

3、使配置生效:

[[email protected] /]# exportfs -r

注:配置文件说明:

/tmp/test0920  为共享的目录,使用绝对路径。
192.168.1.0/24(rw,no_root_squash,no_all_squash,sync) 为客户端的地址及权限,地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:*.cnpc.com

4、测试:

[[email protected] ~]# showmount -e Export list for test1:/tmp/test0920  11.11.165.0/24

5、设置服务开机自启Chkconfig rpcbind on   Chkconfig --level 345 rpcbind onChkconfig nfs on   Chkconfig --level 345 nfs on

客户端的配置:1、yum -y install nfs-utils2、mount -t nfs  11.11.165.115:/tmp/test0920   /data 3、编辑/etc/fstab 增加11.11.165.115:/tmp/test0920   /data      nfs  defaults     0 0

注意默认是nfs挂载如果选择nfs4挂载,则可以用以下语句mount -t nfs4 11.11.165.115:/tmp/test0920   /data 编辑/etc/fstab则可以11.11.165.115:/tmp/test0920   /data       nfs4  defaults        0 0或者11.11.165.115:/tmp/test0920   /data       nfs  defaults,v4       0 0

容易出现的问题:在/etc/sysconfig/nfs文件里,将 # Turn off v2 and v3 protocol support #RPCNFSDARGS="-N 2 -N 3" # v4 protocol support #RPCNFSDARGS="-N 4"  将这句的#去掉后则出现[[email protected] ~]# mount -t nfs 11.11.165.115:/tmp/test0920 /datamount.nfs: Protocol not supported[[email protected] ~]# mount -t nfs4 11.11.165.115:/tmp/test0920 /datamount.nfs4: Protocol not supported因为关闭了nfs4, 则4和4以下的协议都不支持了当你加上#号后,nfs4和nfs3都可以挂载了

RHEL7.3环境:在/etc/sysconfig/nfs文件里RPCNFSDARGS="-V 4.2"编辑/etc/fstab则可以11.11.165.115:/tmp/test0920   /data             nfs4.2   defaults        0 0或者11.11.165.115:/tmp/test0920   /data             nfs      defaults,       0 0服务和防火墙稍有差别[[email protected] ~]# systemctl start rpcbind[[email protected] ~]# systemctl enable rpcbind[[email protected] ~]# systemctl start nfs-server[[email protected] ~]# systemctl enable nfs-server

进站允许策略

# firewall-cmd --add-service=nfs --zone=internal --permanent# firewall-cmd --add-service=mountd --zone=internal --permanent# firewall-cmd --add-service=rpc-bind --zone=internal --permanent

加安全认证的配置在desktop30上挂载来自于server30的NFS共享,要求 1 /public挂载在目录/mnt/nfsmount上 2 /protected挂载在目录/mnt/nfssecure,并使用安全的方式,秘钥在http://ldap.example.com/pub/desktop30.keytab  3 这些文件系统在系统启动时自动挂载[[email protected] mnt]# systemctl enable nfs-server.service[[email protected] mnt]# systemctl enable nfs-secure.service ln -s ‘/usr/lib/systemd/system/nfs-secure.service‘ ‘/etc/systemd/system/nfs.target.wants/nfs-secure.service‘[[email protected] mnt]# systemctl start nfs-secure.service[[email protected] mnt]# mkdir nfsmount[[email protected] mnt]# mkdir nfssecure[[email protected] mnt]# wget -O /etc/krb5.keytab http://ldap.example.com/pub/desktop30.keytab[[email protected] mnt]# vim /etc/fstab172.16.30.130:/public   /mnt/nfsmount           nfs  ro      0  0server30.example.com:/protected /mnt/nfssecure  nfs  rw,sec=krb5p   0 0

协议版本解析:NFS协议到现在经历了V1,V2,V3,V4版本,但是它有一个缺点就是协议没有用户认证机制,而且数据在网络上传送的时候是明文传送,所以安全性极差,一般只能在局域网中使用。NFSv3是1995年发布的,相比NFSv3,NFSv4发生了比较大的变化,最大的变化是NFSv4有状态了。NFSv2和NFSv3都是无状态协议,服务区端不需要维护客户端的状态信息。无状态协议的一个优点在于灾难恢复,当服务器出现问题后,客户端只需要重复发送失败请求就可以了,直到收到服务器的响应信息。但是某些操作必须需要状态,如文件锁。如果客户端申请了文件锁,但是服务器重启了,由于NFSv3无状态,客户端再执行锁操作可能就会出错了。NFSv3需要NLM协助才能实现文件锁功能,但是有的时候两者配合不够协调。NFSv4设计成了一种有状态的协议,自身实现了文件锁功能,就不需要NLM协议了。NFSv4和NFSv3的差别如下:(1) NFSv4设计成了一种有状态的协议,自身实现了文件锁功能和获取文件系统根节点功能,不需要NLM和MOUNT协议协助了。(2) NFSv4增加了安全性,支持RPCSEC-GSS身份认证。(3) NFSv4只提供了两个请求NULL和COMPOUND,所有的操作都整合进了COMPOUND中,客户端可以根据实际请求将多个操作封装到一个COMPOUND请求中,增加了灵活性。(4) NFSv4文件系统的命令空间发生了变化,服务器端必须设置一个根文件系统(fsid=0),其他文件系统挂载在根文件系统上导出。(5) NFSv4支持delegation。由于多个客户端可以挂载同一个文件系统,为了保持文件同步,NFSv3中客户端需要经常向服务器发起请求,请求文件属性信息,判断其他客户端是否修改了文件。如果文件系统是只读的,或者客户端对文件的修改不频繁,频繁向服务器请求文件属性信息会降低系统性能。NFSv4可以依靠delegation实现文件同步。当客户端A打开一个文件时,服务器会分配给客户端A一个delegation。只要客户端A具有delegation,就可以认为与服务器保持了一致。如果另外一个客户端B访问同一个文件,则服务器会暂缓客户端B的访问请求,向客户端A发送RECALL请求。当客户端A接收到RECALL请求时将本地缓存刷新到服务器中,然后将delegation返回服务器,这时服务器开始处理客户端B的请求。(6) NFSv4修改了文件属性的表示方法。由于NFS是Sun开发的一套文件系统,设计之出NFS文件属性参考了UNIX中的文件属性,可能Windows中不具备某些属性,因此NFS对操作系统的兼容性不太好。NFSv4将文件属性划分成了三类:        Mandatory Attributes: 这是文件的基本属性,所有的操作系统必须支持这些属性。        Recommended Attributes: 这是NFS建议的属性,如果可能操作系统尽量实现这些属性。        Named Attributes: 这是操作系统可以自己实现的一些文件属性。(7)服务器端拷贝:如果客户需要从一个NFS服务器拷贝数据到另外一个NFS服务器,nfsv4可以让两台NFS服务器之间直接拷贝数据,不需要经过客户端。(8)资源预留和回收:NFSv4为虚拟分配提供的新特性。随着存储虚拟分配功能的普及使用,nfsv4可以为预留固定大小的存储空间;同样在文件系统上删除文件后,也能够在存储上面释放相应空间。(9)国际化支持:NFSv4文件名、目录、链接、用户与组可以使用 UTF-8字符集,UTF-8兼容ASCII码,使得NFSv4支持更多语言。(10)RPC合并调用:NFSv4允许将多个请求合并为一个rpc引用,在NFSv3每个请求对应一个rpc调用。WAN环境中,NFSv4合并rpc调用可以显著降低延迟。(11)安全性:NFSv4用户验证采用“用户名+域名”的模式,与Windows  AD验证方式类似,NFSv4强制使用Kerberos验证方式。(Kerberos与Windows  AD都遵循相同RFC1510标准),这样方便windows和*nix环境混合部署。(12)pNFS并行NFS文件系统,元数据服务器负责用户请求调度、数据服务器负责客户请求处理。pNFS需要NFS服务器和客户端协同支持

后来的 NFSv4.1        与NFSv4.0相比,NFSv4.1最大的变化是支持并行存储了。在以前的协议中,客户端直接与服务器连接,客户端直接将数据传输到服务器中。当客户端数量较少时这种方式没有问题,但是如果大量的客户端要访问数据时,NFS服务器很快就会成为一个瓶颈,抑制了系统的性能。NFSv4.1支持并行存储,服务器由一台元数据服务器(MDS)和多台数据服务器(DS)构成,元数据服务器只管理文件在磁盘中的布局,数据传输在客户端和数据服务器之间直接进行。由于系统中包含多台数据服务器,因此数据可以以并行方式访问,系统吞吐量迅速提升。现在新的是nfsv4.2        所以尽可能用nfs4

补充:nfs4挂载的fsid问题问题现象:挂载nfs4时,报错:reason given by server :No such file or directory

背景知识:NFSv4将所有共享使用一个虚拟文件系统展示给客户端。伪文件系统根目录(/)使用fsid=0标示,只有一个共享可以是fsid=0。客户端需要使用“nfs server ip:/”挂载伪文件系统,伪文件系统一般使用RO方式共享,其他共享可以通过mount –bind选项在伪文件系统目录下挂载。客户端挂载过程需要通过mount –t nfs4指定NFS版本为4,默认采用nfsv3。

解决:以下是我的配置文件,我想挂在/datapool/nfs目录/  *(rw,fsid=0,insecure,no_root_squash)/datapool/nfs   *(rw,fsid=1000,insecure,no_root_squash

然后mount -t nfs4 ip:/datapool/nfs   /mnt/nfs/

nfs配置参数选项说明:ro:共享目录只读;rw:共享目录可读可写;all_squash:所有访问用户都映射为匿名用户或用户组;no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;root_squash(默认):将来访的root用户映射为匿名用户或用户组;no_root_squash:来访的root用户保持root帐号权限;anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;insecure:允许客户端从大于1024的tcp/ip端口连接服务器;sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;async:将数据先保存在内存缓冲区中,必要时才写入磁盘;wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;no_wdelay:若有写操作则立即执行,应与sync配合使用;subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

Troubleshooting

1、在上面的操作过程中,如果你不幸遇到下面这个问题的话,可以尝试更新 Linux kernel 或通过打开 IPv6 来解决这个问题,这是1个 bug

# mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/mount.nfs4: Cannot allocate memory

2、如果遇到如下问题,可能是因为你的 mount -t nfs 使用的是 nfsv3 协议,需要明确指出使用 nfsv4 协议挂载 mount -t nfs4:

# mount -t nfs 172.16.20.1:/ /home/vpsee/bak/mount: mount to NFS server ‘172.16.20.1‘ failed: RPC Error: Program not registered.

# mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/

如果网络不稳定

NFS默认是用UDP协议,换成TCP协议挂载即可:

mount -t nfs 11.11.165.115:/tmp/test0920   /data  -o proto=tcp -o nolock

VMware ESXi5.5主机无法挂载RHEL6.5 NFS存储

http://xjsunjie.blog.51cto.com/999372/1577582

时间: 2024-11-03 18:25:58

nfs不同版本的挂载与解析的相关文章

基于NFS v4版本搭建NFS服务器

基于NFS  v4版本搭建NFS服务器 1资源规划 作用 IP 版本 NFS服务端 192.168.78.1 Centos6.5 64位 NFS客户端 192.168.78.1 Centos6.5 64位 2 NFS服务端安装配置 2.1 安装rpm包 yum install  nfs-utils  nfs-utils-lib  nfs4-acl-tools rpcbind 2.2 新建要导出的目录 mkdir  -pv  /home/data/ mkdir  -pv  /home/nfs/ 2

ubuntu安装配置NFS服务方便mini2440挂载

环境:物理机,ubuntu12.04设备:mini2440开发板,USB转串口线一根,网线一根目标:物理主机开启nfs服务,在mini2440中能够成功挂载主机的共享目录 一. 安装并配置nfs服务 1. 使用命令安装: sudo apt-get install nfs-kernel-server 2.  使用命令mkdir -m 777 share在/home/wh21/目录下新建一个share目录 3.  修改nfs共享配置文件/etc/exports      在最后一行添加: /home

虚拟机ubuntu14配置NFS服务器 主机win7挂载 局域网内主机挂载

主机win7系统,系统内装虚拟机ubuntu14,局域网内其他主机也为win7系统,都要开启NFS客户端程序,win7家庭版没有这个功能,开启方式如下: 因为公司网络接的大型交换机用的静态IP,所以这里介绍虚拟机桥接方式连接,虚拟机桥接配置如下: 然后设置ubuntu 14 的网络适配器: 到这里有关软件的设置就完成了,现在开始配置ubuntu 14 的静态IP: 主机的IP信息如下: IP:10.19.155.100 netmask:255.255.255.0 gateway:10.19.15

centos7配置nfs客户端 全新自动挂载方式

[[email protected] ~]# yum -y install nfs-utils[[email protected] ~]# vi /etc/idmapd.confDomain = srv.world [[email protected] ~]# systemctl start rpcbind [[email protected] ~]# systemctl enable rpcbind [[email protected] ~]# mount -t nfs server:/hom

tiny4412 linux+qtopia nfs网络文件系统的挂载

1,首先确定uboot启动内核的bootargs参数 Linux-CommandLine = root=/dev/nfs nfsroot=192.168.1.131:/home/tiny4412/rootfs_qtopia_qt4 ip=192.168.1.230:192.168.1.131:192.168.1.1:255.255.255.0::eth0:off rootfstype=nfs console=ttySAC0,115200 init=/linuxrc ctp=2 skipcali=

linux mount/umount挂载命令解析。

如果想在运行的Linux下访问其它文件系统中的资源的话,就要用mount命令来实现. 2.      mount的基本用法是?格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有:-a 安装在/etc/fstab文件中类出的所有文件系统.-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统.-n 不把安装记录在/etc/mtab 文件中.-r 讲文件系统安装为只读.-v 详细显示安装信息.-w 将文件系统安装为可写,为命令默认情况.-t  指定设备的文件系统

nfs共享目录及挂载

实验内容: (1) nfs server导出/data/application/web,在目录中提供wordpress; (2) nfs client挂载nfs server导出的文件系统至/var/www/html: (3) 客户端(lamp)部署wordpress,并让其正常访问:要确保能正常发文章,上传图片: (4) 客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html:验正其wordpress是否可被访问: 要确保能正常发文章,上传图片: 这里用于实验

Linux系统中如何挂载windows共享(cifs),NFS共享,以及挂载ISO文件

# 在Linux系统中挂载Windows中共享的文件夹: mount -t cifs //192.168.1.102/studyshare /mnt -o username=chocolee,password=YOURPASSWD # 在Linux系统中挂载NFS共享的文件夹: mount -t nfs SERVICE_IP:/home/song/nfs /mnt/nfs # 在Linux系统中挂载光盘镜像(ISO文件): mount -t iso9660 -o loop XXX.iso /mn

NFS共享目录,挂载及应用

 (1) nfs server导出/data/application/web,在目录中提供wordpress;  (2) nfs client挂载nfs server导出的文件系统至/var/www/html:  (3) 客户端(lamp),部署wordpress,并让其正常访问:要确保能正常发文章,上传图片:  (4) 客户端2(lamp),挂载nfs server导出的文件系统至/var/www/html:验正其wordpress是否可被访问:要确保能正常发文章,上传图片:   用于实验的3