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» — по одному на каждую файловую систему (всего два на файловые системы), а также по одному на target-машину (всего два на target-машины).
  • Для каждого nfsclient надо будет путь экспорта и идентификатор файловой системы, что усиливает риск возникновения ошибок в файле конфигурации.
Пример C.5, «Наследование и повторное использование ресурсов для NFS» демонстрирует определения ресурсов nfsclient:bob, nfsclient:jim и nfsexport:exports. Их атрибуты наследуются от родительских ресурсов и являются динамическими, поэтому допускается их повторное использование и определение в секции «resources». На практике не всегда допускается настривать ресурсы в нескольких местах. Например, настройка ресурса файловой системы в разных местах может привести к монтированию одной файловой системы на разных узлах, что может привести к конфликтам.