【正确答案】网格即插即用(Grid Plug and Play, GPnP)是Oracle 11gR2 RAC提供的新组件,该组件的功能由gpnpd.bin守护进程实现。GPnP可以提供一个动态的GI环境,能随着负载的增加而动态改变GI环境。GPnP能非常容易地添加、替换或者移除集群中的节点,就像电源插头一样即插即用。
GPnP主要由GPNPD、mDNS、SCAN和GNS组成。mDNS(Multicast Domain Name Service)负责在节点内部进行IP的解析,在添加节点的时候不需要手动修改每个节点的/etc/hosts文件。GPNPD服务提供的是集群配置信息管理,新的节点添加进来会根据现有的GPnP profile配置信息来配置新的节点,同时更新所有节点的GPnP profile文件。一旦新添加的节点加入到集群,SCAN机制动态地将连接分配给该节点,所有的客户端都不需要进行任何配置的变更,就能实现节点的负载均衡。GNS(Grid Naming Service)能动态地为新添加的节点分配VIP地址,利用DHCP管理公共网络中的IP地址。这些服务共同构成了“网格即插即用”的特性。
GPnP profile存储了整个集群的配置信息,它是一个XML文件,该文件中包括了集群名称、网络类型(public/private)、ASM和CSS的存储信息、数字签名,以及ASM实例的SPFILE文件位置等。在集群中,CSS、GPnP等服务的启动都依赖于GPnP profle文件,该文件引导节点加入集群。如果GPnP profile文件被破坏或丢失,那么集群将无法正常启动。在集群启动期间,CSS守护进程将使用GPnP profile文件中的DiscoveryString参数发现表决磁盘文件,所以,若DiscoveryString参数配置不正确,则CSS守护进程无法启动,进而导致整个CRS无法启动。
GPnP profile文件默认的保存位置是:

不能手动修改profile.xml文件,否则可能导致集群不能正常运行,可以使用命令gpnptool来修改该文件,使用命令“gpnptool get”可以获取profile.xml文件的内容。当集群配置发生变化时(例如,oifcfg改变网络信息、ASM添加存储等),所有节点的该文件会被自动更新(通过gpnpd.bin进程复制GPnP profile到所有的其他节点。注意:gpnpd是一个多线程的进程)。
如果GPnP出现问题,那么可以使用cluvfy comp gpnp组件验证命令检查在集群中所有节点网格即插即用的完整性。
