Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 openSUSE Leap 15.7

23 autofs によるオンデマンド型のマウント Edit source

概要

autofs は指定したディレクトリに対して、必要となった時に自動的なマウントを実施するプログラムです。効率性を高めるためにカーネルモジュールをベースとした作りになっていて、ローカルのディレクトリだけでなく、ネットワーク共有を設定することもできます。これらの自動的なマウントポイントは、そこに対してアクセスが行われた際にマウントが行われ、一定時間アクセスがないと自動的にマウントが解除されるようになっています。このような オンデマンド 型の仕組みにより、 /etc/fstab でマウントを固定で指定するよりもずっと柔軟で、ネットワーク帯域にも優しく性能を高めることもできるようになっています。ちなみに、 autofs は制御スクリプトを、 automount は実際の自動マウント処理を行うコマンド (デーモン) を意味しています。

23.1 インストール Edit source

autofsopenSUSE Leap の既定ではインストールされません。自動マウント機能を使用する場合は、まず下記のように実行して、必要なパッケージをインストールしてください:

> sudo zypper install autofs

23.2 設定 Edit source

autofs の設定を行うには、 vim などのテキストエディタを利用し、手作業で設定ファイルを編集する必要があります。 autofs の設定は、大きく分けて 2 種類のファイルがあります。一方は マスター マップファイル、もう一方は固有のマップファイルです。

23.2.1 マスターマップファイル Edit source

autofs における既定のマスターマップファイルは /etc/auto.master です。 /etc/sysconfig/autofs 内の DEFAULT_MASTER_MAP_NAME オプションの値を変更することで、任意の場所にファイルを作成することができます。ここでは openSUSE Leap における既定のマップファイルを使用して作業を行います:

#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).1
#
#/misc  /etc/auto.misc2
#/net -hosts
#
# Include /etc/auto.master.d/*.autofs3
#
#+dir:/etc/auto.master.d
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master4

1

autofs のマニュアルページ ( man 5 autofs ) には、 automounter マップに関する書式について、より詳しい説明が多数提供されています。

2

既定では (#) 印が付けられてコメントアウトされていますが、シンプルな automounter マッピングの書式に関するシンプルな例が示されています。

3

マスターマップを複数のファイルに分割するには、この行のコメントマーク (#) を外してください。これにより、 /etc/auto.master.d/ ディレクトリ内に必要なマッピングファイルを配置できるようになります (ただし、 .autofs で終わるファイル名にしなければならないことに注意してください) 。

4

+auto.master と指定することで、 NIS (NIS について、詳しくは 3.1項 「NIS サーバの設定」 をお読みください) を使用しているユーザに対しても、マスターマップを利用できるようにしています。

auto.master 内の各項目は、下記の書式で記述します:

マウントポイント      マップ名      オプション
マウントポイント

autofs ファイルシステムのマウント先となるベースの場所を指定します。たとえば /home のようになります。

マップ名

マウントの際に使用するマップソースの名前を指定します。マップファイルの書式について、詳しくは 23.2.2項 「マップファイル」 をお読みください。

オプション

これらのオプションが指定されていれば、指定されたマップ内の全ての項目に対して、既定値の形で適用されるようになります。

ヒント
ヒント: さらなる情報

マップの種類 , 書式 , オプション などの設定値に関する詳しい情報については、 auto.master のマニュアルページ ( man 5 auto.master ) をお読みください。

たとえば auto.master 内で下記のような設定を行うと、 autofs/etc/auto.smb 内を参照し、 /smb というマウントポイントを作成します:

/smb   /etc/auto.smb

23.2.1.1 直接マウント Edit source

直接マウントとは、対応するマップファイル内で指定されているパスに対して、マウントポイントを直接作成することを意味します。 auto.master 内でマウントポイントを指定する代わりに、マウントポイントの箇所に /- を指定してください。たとえば下記のような設定を行うと、 autofsauto.smb 内で指定されているパスにマウントポイントを作成します:

/-        /etc/auto.smb
ヒント
ヒント: フルパスを指定しないマップについて

マップファイル側でローカルもしくはネットワークパスをフルパスで指定しない場合、 Name Service Switch (NSS) の設定を利用して場所を判断するようになります:

/-        auto.smb

23.2.2 マップファイル Edit source

重要
重要: その他の種類のマップについて

autofs で自動マウントを行う場合、 ファイル タイプが最もよく使用されますが、その他のタイプも用意されています。マップ仕様ではコマンドの出力や LDAP やデータベースの問い合わせ結果などを指定することができます。マップタイプの詳細について、詳しくはマニュアルページ man 5 auto.master をお読みください。

マップファイルではマウント元の場所 (ローカルまたはネットワーク) を指定するほか、ローカル側でのマウント先となるマウントポイントを指定します。マップファイルの一般的な書式はマスターマップに似ています。違いは オプション 指定の位置で、項目の末尾ではなくマウントポイントと場所の間に記述します:

マウントポイント      オプション      場所

なお、マップファイルは実行可能であるとしてマークされていないことをご確認ください。実行可能マークを外すには、 chmod -x マップファイル を実行します。

マウントポイント

マウントする先のディレクトリを指定します。単一のディレクトリ名 (間接 マウントと呼びます) を指定することができるほか、 auto.master 内で指定したベースパスからの相対パスを指定したり、マウントポイントのフルパス (直接マウントと呼びます、詳しくは 23.2.1.1項 「直接マウント」 をお読みください) を指定したりすることもできます。

オプション

対応する項目に対して設定する、マウントオプションのリストをカンマ区切りで指定します。このマップファイルに対する auto.master の行内にオプションの指定が存在する場合は、それらも追加されます。

場所

ファイルシステムのマウント元の場所を指定します。通常は NFS もしくは SMB のボリュームで、一般的な表記方法 (ホスト名:パス) で記述します。 /dev の項目や smbfs の共有など、 '/' で始まるパスをマウント元として指定したい場合は、冒頭に ':' を付けて記述します (例: :/dev/sda1) 。

23.3 操作とデバッグ Edit source

本章では、 autofs サービスの制御方法について、および automounter の操作を調整する際のデバッグ情報の表示方法について説明しています。

23.3.1 autofs サービスの制御 Edit source

autofs サービスは systemd で制御を行います。 autofs に対する systemctl コマンドの一般的な書式は下記の通りです:

> sudo systemctl サブコマンド autofs

サブコマンド には下記のいずれかを指定します:

enable

システムの起動時に automounter デーモンを開始するように設定します。

start

automounter デーモンを開始します。

stop

automounter デーモンを停止します。自動的なマウントポイントにはアクセスできなくなります。

status

autofs の現状のほか、関連するログファイルの一部を表示します。

restart

automounter をいったん停止させ、開始し直します。動作中の全てのデーモンを終了させたあと、新しいデーモンを開始します。

reload

現在の auto.master マップを確認し、項目に変更点があれば対応するデーモンを再起動し、項目に追加があれば新しい項目のデーモンを起動します。

23.3.2 automounter の問題調査 Edit source

autofs でのディレクトリへのマウントについて、何らかの問題が発生した場合は、 automount デーモンを手動で起動して、出力されるメッセージを確認することをお勧めします:

  1. まずは autofs を停止します。

    > sudo systemctl stop autofs
  2. 一方の端末から、冗長な出力を行うよう automount を実行し、そのまま前面で動き続けるようにします。

    > sudo automount -f -v
  3. もう 1 つの端末を起動して、自動マウントされるはずのディレクトリにアクセスを行います (たとえば cdls など) 。

  4. automount を起動したほうの端末に戻って出力を確認し、なぜマウントが失敗しているのか、もしくはなぜマウントが行われなかったのかを調べます。

23.4 NFS 共有の自動マウント Edit source

下記の手順では、 autofs を利用してネットワーク内に存在する NFS 共有を自動マウントする流れを説明しています。下記の手順では、ここまでの説明と NFS に関する知識があることを前提にしています。 NFS に関して、詳しくは 第22章 「NFS によるファイル共有 をお読みください。

  1. まずはマスターマップファイルを編集します:

    > sudo vim /etc/auto.master

    /etc/auto.master の末尾に、新しい NFS マウントの項目を追加します:

    /nfs      /etc/auto.nfs      --timeout=10

    これにより、 autofs はベースマウントポイントが /nfs であり、実際の NFS 共有が /etc/auto.nfs 内に記述されている設定になります。なお、 10 秒間何も処理を行わない場合、自動的にマウントが解除されます。

  2. NFS 共有に対する新しいマップファイルを作成します:

    > sudo vim /etc/auto.nfs

    /etc/auto.nfs には通常、それぞれの NFS 共有に対して 1 行ずつ項目を記述します。書式は 23.2.2項 「マップファイル」 に示されているとおりです。マウントポイントと、 NFS 共有のネットワークアドレスを下記のように指定します:

    export      jupiter.com:/home/geeko/doc/export

    上記の行は、 jupiter.com というホストにある /home/geeko/doc/export というディレクトリを、 /nfs/export というローカル側のディレクトリに自動マウントするための設定です (/nfsauto.master マスターマップに記述されているものからの値を取ります) 。 /nfs/export ディレクトリは、 autofs で自動的に作成されます。

  3. 上記と同じ NFS 共有を /etc/fstab に記述していた場合は、下記のようにしてコメントアウトしてください:

    #jupiter.com:/home/geeko/doc/export /nfs/export nfs defaults 0 0
  4. 最後に autofs を再読み込みさせて、動作するかどうかを確認します:

    > sudo systemctl restart autofs
    # ls -l /nfs/export
    total 20
    drwxr-xr-x  5 1001 users 4096 Jan 14  2017 .images/
    drwxr-xr-x 10 1001 users 4096 Aug 16  2017 .profiled/
    drwxr-xr-x  3 1001 users 4096 Aug 30  2017 .tmp/
    drwxr-xr-x  4 1001 users 4096 Apr 25 08:56 manual/

    上記のように実行することでリモートの共有内のファイルを表示することができれば、 autofs は問題なく動作していることになります。

23.5 高度なトピック Edit source

本章では、 autofs に関するより高度なトピックを説明しています。ネットワーク内で提供されている NFS 共有の自動マウントやマップファイル内でのワイルドカードの使用、そして CIFS ファイルシステム固有の情報などを説明しています。

23.5.1 /net マウントポイント Edit source

このヘルパーマウントポイントは、多数の NFS 共有を使用するような場合に便利です。 /net はローカルのネットワーク内にある全ての NFS 共有を、必要に応じて自動マウントすることができます。この項目は auto.master ファイル内で既に設定されていますので、コメントアウトを解除して autofs を再起動するだけで利用することができます:

/net      -hosts
> sudo systemctl restart autofs

たとえば jupiter というサーバにある /export という共有にアクセスしたい場合は、下記をコマンドラインで実行することで、マウントを行うことができます:

> sudo cd /net/jupiter/export

"\n \n"

23.5.2 自動マウントサブディレクトリでのワイルドカードの使用 Edit source

たとえば /home などがそれにあたりますが、個別に自動マウントしたいサブディレクトリを含むディレクトリがある場合、 autofs では、これをより賢く解決することができます。

たとえばホームディレクトリの場合、 auto.master ファイル内に下記の行を追加します:

/home      /etc/auto.home

あとは /etc/auto.home ファイル内に適切なマッピングを追加していくことで、ユーザのホームディレクトリを自動的にマウントすることができるようになります。今までの設定方法からすると、下記のようにそれぞれ個別のディレクトリを指定していくことになります:

wilber      jupiter.com:/home/wilber
penguin      jupiter.com:/home/penguin
tux      jupiter.com:/home/tux
[...]

でも、このような設定にしてしまうと、ユーザの一覧を auto.home 内でも管理しなければならなくなりますので、非常に面倒です。その代わり、マウントポイントの指定で '*' (アスタリスク) を指定し、ディレクトリ名の代わりに '&' を指定することで、上記の設定と同じ効果をもたらすことができます:

*      jupiter:/home/&

23.5.3 CIFS ファイルシステムの自動マウント Edit source

SMB/CIFS の共有 (SMB/CIFS プロトコルに関する詳細は、 第21章 「Samba をお読みください) を自動マウントしたい場合、マップファイル内の書式を変更する必要があります。オプション欄に -fstype=cifs と指定して、コロン ':' に続けてホスト名と共有名を指定します:

マウントポイント      -fstype=cifs      ://jupiter.com/export
このページを印刷