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