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 리소스를 필요로 합니다 — 파일 시스템 마다 1 개 (파일 시스템에서 총 2개), 그리고 대상 시스템 마다 1개 (대상 시스템에서 총 2 개).
  • 서비스는 각 nfsclient 마다 내보내기 경로 및 파일 시스템 ID를 지정해야 하며, 이는 설정에서 오류를 일으킬 가능성이 있습니다.
예 C.5. “리소스 재사용과 상속을 위한 NFS 서비스 설정 ”에서는 NFS 클라이언트 리소스 nfsclient:bobnfsclient:jim이 한 번 정의되고 있습니다. 마찬가지로 NFS 내보내기 리소스 nfsexport:exports는 한 번만 정의되고 있습니다. 리소스에 필요한 모든 속성은 부모 리소스에서 상속됩니다. 상속된 속성은 동적 (그리고 서로 충돌하지 않음)이기 때문에 이러한 리소스를 다시 사용 가능합니다 — 이것이 리소스 블록에서 정의되는 이유입니다. 일부 리소스를 여러 위치에서 설정하는 것은 실용적이지 않을 수 있습니다. 예를 들어, 여러 위치에서 파일 시스템 리소스를 설정하면 하나의 파일 시스템을 두 개의 노드에 마운트하는 결과를 일으킬 수 있어 문제가 발생하는 원인이 됩니다.