Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.3. autofs

/etc/fstab を使用する欠点の 1 つは、NFS がマウントされたファイルシステムにユーザーがアクセスする頻度に関わらず、マウントされたファイルシステムを所定の場所で維持するために、システムがリソースを割り当てる必要があることです。これは 1 つまたは 2 つのマウントでは問題になりませんが、システムが一度に多くのシステムへのマウントを維持している場合、システム全体のパフォーマンスに影響を与える可能性があります。/etc/fstab の代わりに、カーネルベースの automount ユーティリティーを使用します。自動マウント機能は以下の 2 つのコンポーネントで設定されます。
  • ファイルシステムを実装するカーネルモジュール
  • 他のすべての機能を実行するユーザー空間デーモン
automount ユーティリティーは、NFS ファイルシステムを自動的にマウントおよびアンマウントできます(オンデマンドマウント)。したがって、システムリソースを節約できます。これは、AFS、SMBFS、CIFS、およびローカルファイルシステムを含む他のファイルシステムをマウントするために使用できます。
重要
nfs-utils パッケージは、NFS ファイルサーバーとネットワークファイルシステムクライアントグループの両方に含まれるようになりました。そのため、Base グループではデフォルトでインストールされなくなりました。NFS 共有の自動マウントを試みる前に、最初に nfs-utils がシステムにインストールされていることを確認してください。
autofs は、ネットワークファイルシステムクライアントグループに含まれます。
autofs は、デフォルトのプライマリー設定ファイルとして /etc/auto.master (マスターマップ)を使用します。これは、Name Service Switch (NSS)メカニズムとともに autofs 設定( /etc/sysconfig/autofs内)を使用して、サポートされている別のネットワークソースと名前を使用するように変更できます。autofs バージョン 4 デーモンのインスタンスは、マスターマップで設定された各マウントポイントに対して実行されるため、任意のマウントポイントに対してコマンドラインから手動で実行できます。autofs バージョン 5 では、設定されたすべてのマウントポイントを管理するために単一のデーモンが使用されるため、これは不可能です。そのため、すべての自動マウントをマスターマップで設定する必要があります。これは、他の業界標準の自動マウント機能の通常の要件と一致しています。マウントポイント、ホスト名、エクスポートしたディレクトリー、および各種オプションは各ホストに対して手動で設定するのではなく、すべて 1 つのファイルセット (またはサポートされている別のネットワークソース) 内に指定することができます。

8.3.1. バージョン 4 と比較した autofs バージョン 5 の改善点

autofs バージョン 5 では、バージョン 4 と比較して、以下の機能拡張が行われています。
ダイレクトマップのサポート
autofs のダイレクトマップは、ファイルシステム階層の任意の時点でファイルシステムを自動的にマウントするメカニズムを提供します。ダイレクトマップは、マスターマップの /- のマウントポイントで示されます。ダイレクトマップのエントリーには、(間接マップで使用される相対パス名の代わりに) 絶対パス名がキーとして含まれています。
レイジーマウントとアンマウントのサポート
マルチマウントマップエントリーは、単一のキーの下にあるマウントポイントの階層を記述します。この良い例として、-hosts マップがあります。これは通常、マルチマウントマップエントリーとして /net/host の下のホストからのすべてのエクスポートを自動マウントするために使用されます。-hosts マップを使用する場合、/net/ホストの ls は、ホスト から各エクスポートの autofs トリガーマウントをマウントします。次に、これらはマウントされ、アクセスされると期限切れとなります。これにより、エクスポートが多数あるサーバーにアクセスする際に必要なアクティブなマウントの数を大幅に減らすことができます。
強化された LDAP サポート
autofs 設定ファイル(/etc/sysconfig/autofs)は、サイトが実装する autofs スキーマを指定するメカニズムを提供するため、アプリケーション自体で試行とエラーによってこれを判断する必要がなくなります。さらに、共通の LDAP サーバー実装でサポートされるほとんどのメカニズムを使用して、LDAP サーバーへの認証済みバインドがサポートされるようになりました。このサポート用の新しい設定ファイル( /etc/autofs_ldap_auth.conf )が追加されました。デフォルトの設定ファイルは自己文書化されており、XML 形式を使用します。
Name Service Switch (nsswitch)設定の適切な使用。
Name Service Switch 設定ファイルは、特定の設定データがどこから来るのかを判別する手段を提供するために存在します。この設定の理由は、データにアクセスするための統一されたソフトウェアインターフェイスを維持しながら、管理者が最適なバックエンドデータベースを柔軟に使用できるようにするためです。バージョン 4 の自動マウント機能は、今まで以上に NSS 設定を処理できるようになっていますが、まだ完全ではありません。一方、autofs バージョン 5 は完全な実装です。
このファイルで対応している構文の詳細は、man nsswitch.conf を参照してください。すべての NSS データベースが有効なマップソースである訳ではなく、パーサーは無効なデータベースを拒否します。有効なソースは、ファイル、ypnisnisplusldap、および hesiod です。
autofs マウントポイントごとの複数のマスターマップエントリー
頻繁に使用されますが、まだ記述されていないのは、直接マウントポイント /- の複数のマスターマップエントリーを処理することです。各エントリーのマップキーはマージされ、1 つのマップとして機能します。

例8.2 autofs マウントポイントごとの複数のマスターマップエントリー

以下は、ダイレクトマウントの connectathon テストマップの例です。
/- /tmp/auto_dcthon
/- /tmp/auto_test3_direct
/- /tmp/auto_test4_direct
 

8.3.2. autofs の設定

自動マウント機能の主な設定ファイルは /etc/auto.master です。これは、マスターマップ とも呼ばれます。これは、「バージョン 4 と比較した autofs バージョン 5 の改善点」 で説明されているように変更できます。マスターマップには、システム上の autofsで制御されたマウントポイントと、それに対応する設定ファイルまたはネットワークソースが自動マウントマップとして知られています。マスターマップの形式は次のとおりです。
mount-point map-name options
この形式で使用されている変数を以下に示します。
mount-point
autofs マウントポイント(例: /home
map-name
マウントポイントのリストとマウントポイントがマウントされるファイルシステムの場所が記載されているマップソース名です。
options
指定されている場合は、それ自体にオプションが指定されていない場合に限り、指定されたマップのすべてのエントリーに適用されます。この動作は、オプションが累積されていた autofs バージョン 4 とは異なります。混合環境の互換性を実装させるため変更が加えられています。

例8.3 /etc/auto.master ファイル

以下は、/etc/auto.master ファイルのサンプル行です( cat /etc/auto.masterで表示)。
/home /etc/auto.misc
マップの一般的な形式はそのマスターマップと同じですが、マスターマップではエントリーの末尾に表示されるオプション (options) がマウントポイント (mount-point) と場所 (location) の間に表示されます。
mount-point   [options]   location
この形式で使用されている変数を以下に示します。
mount-point
これは autofs マウントポイントを参照します。これは 1 つのインダイレクトマウント用の 1 つのディレクトリー名にすることも、複数のダイレクトマウント用のマウントポイントの完全パスにすることもできます。各ダイレクトマップエントリーキー(マウントポイント)の後に、スペースで区切られたオフセットディレクトリー( /で始まるサブディレクトリー名)のリストが続き、マルチマウントエントリーと呼ばれるものになります。
options
指定した場合は、これらは、独自のオプションを指定しないマップエントリーのマウントオプションになります。
location
これは、ローカルファイルシステムパス(Sun マップ形式のエスケープ文字 ":" が先頭に付き、マップ名が /で始まる場合)、NFS ファイルシステム、またはその他の有効なファイルシステムの場所などのファイルシステムの場所を参照します。
以下は、マップファイルの内容の例です(例: /etc/auto.misc)。
payroll -fstype=nfs personnel:/dev/hda3
sales -fstype=ext3 :/dev/hda4
マップファイルの最初の列は、autofs マウントポイント(personnel と呼ばれるサーバーのsales および payroll )を示してい ます。2 列目は autofs マウントのオプションを示し、3 番目のコラムはマウントのソースを示しています。指定された設定に従うと、autofs マウントポイントは /home/payroll および /home/sales になります。-fstype= オプションは省略されることが多く、通常は正しい操作には必要ありません。
ディレクトリーが存在しない場合、自動マウント機能はディレクトリーを作成します。ディレクトリーが存在している状況で自動マウント機能が起動した場合は、自動マウント機能の終了時にディレクトリーが削除されることはありません。
自動マウントデーモンを起動するには、以下のコマンドを使用します。
# systemctl start autofs
自動マウントデーモンを再起動するには、以下のコマンドを使用します。
# systemctl restart autofs
指定の設定を使用して、プロセスが /home/payroll/2006/July.sxc などのアンマウントされた autofs ディレクトリーへのアクセスを必要とする場合、自動マウントデーモンはディレクトリーを自動的にマウントします。タイムアウトを指定した場合は、タイムアウト期間中ディレクトリーにアクセスしないと、ディレクトリーが自動的にアンマウントされます。
自動マウントデーモンのステータスを表示するには、以下のコマンドを使用します。
# systemctl status autofs

8.3.3. サイト設定ファイルの上書きまたは拡張

クライアントシステム上の特定マウントポイントのサイトデフォルト値を無効にする場合に便利です。たとえば、次の条件を検討します。
  • 自動マウント機能マップは NIS に保存され、/etc/nsswitch.conf ファイルには以下のディレクティブがあります。
    automount:    files nis
  • auto.master ファイルには以下が含まれます。
    +auto.master
  • NIS の auto.master マップファイルには以下が含まれます。
    /home auto.home
  • NIS の auto.home マップには以下が含まれます。
    beth        fileserver.example.com:/export/home/beth
    joe        fileserver.example.com:/export/home/joe
    *       fileserver.example.com:/export/home/&
  • ファイルマップ /etc/auto.home は存在しません。
このような状況では、クライアントシステムが NIS マップの auto.home を上書きし、別のサーバーからホームディレクトリーをマウントする必要があると仮定します。この場合、クライアントは以下の /etc/auto.master マップを使用する必要があります。
/home ­/etc/auto.home
+auto.master
/etc/auto.home マップにはエントリーが含まれます。
*    labserver.example.com:/export/home/&
自動マウンタは最初に出現したマウントポイントのみを処理するため、/home には NIS auto.home マップではなく、/etc/auto.home の内容が含まれます。
または、サイト全体の auto.home マップをいくつかのエントリーで拡張するには、/etc/auto.home ファイルマップを作成し、新しいエントリーを追加します。最後に、NIS auto.home マップを含めます。次に、/etc/auto.home ファイルマップは以下のようになります。
mydir someserver:/export/mydir
+auto.home
これらの NIS auto.home マップ条件により、ls /home コマンドは以下を出力します。
beth joe mydir
autofs では、読み取り中のファイルマップと同じ名前のファイルマップの内容が含まれないため、この最後の例は期待どおりに機能します。したがって、autofs は、nsswitch 設定の次のマップソースに移動します。

8.3.4. LDAP を使用した自動マウント機能マップの格納

LDAP から自動マウント機能マップを取得するように設定されているすべてのシステムに、LDAP クライアントライブラリーをインストールする必要があります。Red Hat Enterprise Linux では、openldap パッケージは自動マウント機能 の依存関係として自動的にインストールされ ます。LDAP アクセスを設定するには、/etc/openldap/ldap.conf を変更します。BASE、URI、スキーマなどが使用するサイトに適した設定になっていることを確認してください。
自動マウントマップを LDAP に格納するために最後に確立されたスキーマは、rfc2307bis に記載されています。このスキーマを使用するには、スキーマ定義からコメント文字を削除して、autofs 設定(/etc/sysconfig/autofs)に設定する必要があります。以下に例を示します。

例8.4 autofs の設定

DEFAULT_MAP_OBJECT_CLASS="automountMap"
DEFAULT_ENTRY_OBJECT_CLASS="automount"
DEFAULT_MAP_ATTRIBUTE="automountMapName"
DEFAULT_ENTRY_ATTRIBUTE="automountKey"
DEFAULT_VALUE_ATTRIBUTE="automountInformation"
設定内でコメントされていないスキーマエントリーが上記だけであることを確認します。automountKey は、rfc2307bis スキーマの cn 属性を置き換えます。以下は、LDAP データ交換形式(LDIF)の設定例です。

例8.5 LDF の設定

# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (&(objectclass=automountMap)(automountMapName=auto.master))
# requesting: ALL
#

# auto.master, example.com
dn: automountMapName=auto.master,dc=example,dc=com
objectClass: top
objectClass: automountMap
automountMapName: auto.master

# extended LDIF
#
# LDAPv3
# base <automountMapName=auto.master,dc=example,dc=com> with scope subtree
# filter: (objectclass=automount)
# requesting: ALL
#

# /home, auto.master, example.com
dn: automountMapName=auto.master,dc=example,dc=com
objectClass: automount
cn: /home

automountKey: /home
automountInformation: auto.home

# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (&(objectclass=automountMap)(automountMapName=auto.home))
# requesting: ALL
#

# auto.home, example.com
dn: automountMapName=auto.home,dc=example,dc=com
objectClass: automountMap
automountMapName: auto.home

# extended LDIF
#
# LDAPv3
# base <automountMapName=auto.home,dc=example,dc=com> with scope subtree
# filter: (objectclass=automount)
# requesting: ALL
#

# foo, auto.home, example.com
dn: automountKey=foo,automountMapName=auto.home,dc=example,dc=com
objectClass: automount
automountKey: foo
automountInformation: filer.example.com:/export/foo

# /, auto.home, example.com
dn: automountKey=/,automountMapName=auto.home,dc=example,dc=com
objectClass: automount
automountKey: /
automountInformation: filer.example.com:/export/&