共计 3147 个字符,预计需要花费 8 分钟才能阅读完成。
VMware ESXi5.5 主机无法挂载 RHEL6.5 存储该怎么处理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
系统环境
系统平台:RHEL LINUX 6.5
NFS Server IP:192.168.2.19
共享目录:/mnt/parastor
VMWARE EXSI:5.5
问题描述:在 VMWARE EXSI5.5 上的 DATASTORE 里挂载一台 RHEL Linux5.5 虚拟机 NFS 服务器里的共享目录,提示如下:
错误堆栈
在 vCenter Server“VM-1”上调用对象“datastoreSystem-29”的“HostDatastoreSystem.CreateNasDatastore”失败。
NFS 挂载 192.168.2.19:/mnt/parastor 失败: NFS 服务器通过 TCP 不支持 MOUNT 版本 3。
(对应英文版提示为 NFS server does not support MOUNT version 3 over TCP)
这是由于 NFS 服务器上的服务用的是默认的 UDP 协议方式传输,而 VMware 要求必须用 TCP,因此修改配置文件 /etc/nfsmount.conf,取消 Defaultproto=tcp 行注释即可。当然有的时候,如果你修改了这项还不能成功挂载的话,请检查如下:
一、防火墙是否关闭
service iptables stop
chkconfig iptables off
二、nfs 服务是否启动
chkconfig nfs on
service nfs start
三、检查 exports 文件
cat /etc/exports
/mnt/parastor 192.168.110.*(rw,sync,no_root_squash)
四、修改 /etc/nfsmount.conf
将如下几行的注释去掉(默认是 udp,esxi 需要使用 tcp,esxi 需要使用 mount v3)
Defaultproto=tcp
Proto=tcp
mountproto=tcp
mounvers=3
五、然后重启如下服务:
service rpcbind start
service nfs restart
最后发现挂载 nfs 存储成功。
注意:RPC 必须先启动。RPC 即 Remote Procedure Call Protocol(远程过程调用协议),RPCBIND 用于取代旧版本中的 portmap 组件。简单说,RPCBIND 就是为了将不同服务与对应的端口进行绑定,以便支持机器间的互操作。原理补充:RPC 最主要的功能就是指定每个 NFS 功能所对应的 port number,並且回报給用戶端,让用戶端可以連結到正確的端口上去。当服务器在启动 NFS 時会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 通过固定使用 port 111 來监听用户端的请求并回报用户端正确的端口,来确保 NFS 连接的成功!
另外关于 FSID 参数的解释:
要通过 NFS 共享一个目录,首先需要在 /etc/exports 文件中定义这个目录,并且使用 fsid= 0 的参数。(使用 fsid= 0 选项的时候只能共享一个目录,这个目录将成为 NFS 服务器的根目录。)
参看如下英文原版解释:
fsid=num
This option forces the filesystem identification portion of the file handle and file attributes used on the
wire to be num instead of a number derived from the major and minor number of the block device on which the
filesystem is mounted. Any 32 bit number can be used, but it must be unique amongst all the exported
filesystems.
This can be useful for NFS failover, to ensure that both servers of the failover pair use the same NFS file
handles for the shared filesystem thus avoiding stale file handles after failover.
Some Linux filesystems are not mounted on a block device; exporting these via NFS requires the use of the
fsid option (although that may still not be enough).
The value 0 has a special meaning when use with NFSv4. NFSv4 has a concept of a root of the overall
exported filesystem. The export point exported with fsid=0 will be used as this root.
NFS 需要标志每一个导出的文件系统。通常使用文件系统的 UUID(如果该文件系统有的话),或者使用存储该文件系统的设备的设备号(如果该文件系统存储在设备上)。并不是所有的文件系统都存储在设备上,也并不是所有的文件系统都有 UUID,NFS 需要精确标识文件系统,就需要使用 fsid 选项。
对于 NFSv4,有一个杰出的文件系统,它是所有导出的文件系统的根目录。通过 fsid=root 或 fsid= 0 来标识。标识其他文件系统,可以使用一个小的整数(任何 32 位数字都可以使用,但它在所有导出的文件系统中必须是唯一的),或者任意一个包含 32 个十六进制数字和标点符号的 UUID。
Linux 内核 2.6.20 版本及更早版本不支持 UUID 的设置。
背景知识:
NFS 是 Network File System 的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由 Sun 公司开发,于 1984 年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类 Unix 系统间实现磁盘文件共享的一种方法。
NFS 的基本原则是“容许不同的客户端及服务端通过一组 RPC 分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS 在文件传送或信息传送过程中依赖于 RPC 协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS 本身是没有提供信息传输的协议和功能的,但 NFS 却能让我们通过网络进行资料的分享,这是因为 NFS 使用了一些其它的传输协议。而这些传输协议用到这个 RPC 功能的。可以说 NFS 本身就是使用 RPC 的一个程序。或者说 NFS 也是一个 RPC SERVER。所以只要用到 NFS 的地方都要启动 RPC 服务,不论是 NFS SERVER 或者 NFS CLIENT。这样 SERVER 和 CLIENT 才能通过 RPC 来实现 PROGRAM PORT 的对应。可以这么理解 RPC 和 NFS 的关系:NFS 是一个文件系统,而 RPC 是负责负责信息的传输。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。