C.3. 継承、<resources>ブロック、リソースの再利用
一部のリソースは、親リソースから値を継承することにメリットがあります。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>
サービスが平坦(すなわち、親/子 関係が無い状態)である場合、以下のように設定される必要があります:
- サービスは 4つの nfsclient リソースを必要とします — ファイルシステム毎に1つ (ファイルシステム群で計2つ)、そしてターゲットマシン毎に1つ (ターゲットマシン群で計2つ)
- サービスは各 nfsclient にエクスポートパスとファイルシステム ID を指定する必要があります。これにより、設定にエラーが生じる可能性があります。
一方、例C.5「リソース再利用と継承の為の NFS サービスセットアップ」 では NFS クライアントリソース nfsclient:bob と nfsclient:jim は、一度だけ定義されています。同じように NFS エキスポートリソース nfsexport:exports も一度だけ定義されています。リソースで必要とされる全ての属性は親リソースから継承されます。この継承属性は動的である (かつ相互に競合しない) ため、それらのリソースを再利用することは可能です — これがリソース群がリソースブロック内で定義される理由です。いくつかのリソースを複数の場所で設定することは実用的ではない場合があります。例えば、複数の場所でファイルシステムリソースを設定すると、1 つのファイルシステムを 2 つのノードにマウントすることになる場合があり、問題になります。