C.3. 继承、<资源>块以及重复使用资源
有些资源利用从上级资源中继承的值,通常是在 NFS 服务中。例 C.5 “资源再利用和继承的 NFS 服务设置” 演示了典型的 NFS 服务配置,资源再利用和继承设置。
例 C.5. 资源再利用和继承的 NFS 服务设置
<resources> <nfsclient name="bob" target="bob.example.com" options="rw,no_root_squash"/> <nfsclient name="jim" target="jim.example.com" options="rw,no_root_squash"/> <nfsexport name="exports"/> </resources> <service name="foo"> <fs name="1" mountpoint="/mnt/foo" device="/dev/sdb1" fsid="12344"> <nfsexport ref="exports"> <!-- nfsexport's path and fsid attributes are inherited from the mountpoint & fsid attribute of the parent fs resource --> <nfsclient ref="bob"/> <!-- nfsclient's path is inherited from the mountpoint and the fsid is added to the options string during export --> <nfsclient ref="jim"/> </nfsexport> </fs> <fs name="2" mountpoint="/mnt/bar" device="/dev/sdb2" fsid="12345"> <nfsexport ref="exports"> <nfsclient ref="bob"/> <!-- Because all of the critical data for this resource is either defined in the resources block or inherited, we can reference it again! --> <nfsclient ref="jim"/> </nfsexport> </fs> <ip address="10.2.13.20"/> </service>
如果服务是平面的(即没有上级/下级关系),则需要按使用如下配置:
- 该服务需要四个 nfsclient 资源 — 每个文件系统一个(一共两个文件系统),每个目标机器一个(一共两台目标机器)。
- 服务需要为每个 nfsclient 指定 export path 和 file system ID,配置的这个部分容易出错。
但在 例 C.5 “资源再利用和继承的 NFS 服务设置” 中只定义一次 NFS 客户端资源 nfsclient:bob 和 nfsclient:jim;同样也只定义一次 NFS 导出资源 nfsexport:exports。资源需要的所有属性都是从上级资源中继承的。因为继承的属性是动态的(并不与其它属性冲突),因此可能再利用那些资源 — 也就是为什么要在资源块中定义它们的原因。在很多情况下可能对配置一些资源没有可操作性。例如:在很多情况下配置文件系统资源可导致在两个节点中挂载一个文件系统,这样就会出问题。