30 Autofsによるオンデマンドマウント #
autofs
は、指定したディレクトリをオンデマンドベースで自動的にマウントするプログラムです。これは高い効率を実現するためにカーネルモジュールに基づいており、ローカルディレクトリとネットワーク共有の両方を管理できます。これらの自動的なマウントポイントは、アクセスがあった場合にのみマウントされ、非アクティブな状態が一定時間続くとアンマウントされます。このオンデマンドの動作によって帯域幅が節約され、/etc/fstab
で管理する静的マウントよりも高いパフォーマンスが得られます。autofs
は制御スクリプトですが、automount
は実際の自動マウントを実行するコマンド(デーモン)です。
30.1 インストール #
デフォルトでは、autofs
はSUSE Linux Enterprise Serverにインストールされません。その自動マウント機能を利用するには、最初に、次のコマンドを使用してインストールします。
sudo zypper install autofs
30.2 環境設定 #
vim
などのテキストエディタで設定ファイルを編集して、autofs
を手動で設定する必要があります。autofs
の基本的な設定手順は2つあります。「マスタ」マップファイルを使用する手順と、特定のマップファイルを使用する手順です。
30.2.1 マスタマップファイル #
autofs
のデフォルトのマスタ設定ファイルは/etc/auto.master
です。その場所を変更するには、/etc/sysconfig/autofs
内のDEFAULT_MASTER_MAP_NAME
オプションの値を変更します。次に、SUSE Linux Enterprise Serverのデフォルトのマスタ設定ファイルの内容を示します。
# # 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
自動マウント機能のマップの形式については、 | |
デフォルトではコメント化(#)されていますが、これは単純な自動マウント機能のマッピング構文の例です。 | |
マスタマップファイルを複数のファイルに分割する必要がある場合、この行のコメント化を解除し、マッピング(サフィックスは | |
|
auto.master
のエントリには3つのフィールドがあり、構文は次のとおりです。
mount point map name options
- mount point
autofs
ファイルシステムをマウントする基本の場所(/home
など)。- map name
マウントに使用するマップソースの名前。マップファイルの構文については、30.2.2項 「マップファイル」を参照してください。
- options
これらのオプションを指定した場合、指定したマップ内のすべてのエントリにデフォルトとして適用されます。
オプションのmap-type
、format
、およびoptions
の特定の値の詳細については、 のマニュアルページ(man 5 auto.master
)を参照してください。
auto.master
の次のエントリは、autofs
に対し、/etc/auto.smb
内を検索して/smb
ディレクトリにマウントポイントを作成するよう指示します。
/smb /etc/auto.smb
30.2.1.1 直接マウント #
直接マウントは、関連するマップファイル内で指定されたパスにマウントポイントを作成します。auto.master
でマウントポイントを指定するのではなく、マウントポイントフィールドを/-
に置き換えます。たとえば、次の行は、autofs
に対し、auto.smb
で指定された場所にマウントポイントを作成するよう指示します。
/- /etc/auto.smb
ローカルまたはネットワークのフルパスでマップファイルを指定していない場合、マップファイルはネームサービススイッチ(NSS)設定を使用して検索されます。
/- auto.smb
30.2.2 マップファイル #
autofs
による自動マウントのマップタイプとしては「ファイル」が最も一般的ですが、他のタイプもあります。マップは、コマンドの出力や、LDAPまたはデータベースのクエリ結果で指定することもできます。マップタイプの詳細については、man 5 auto.master
マニュアルページを参照してください。
マップファイルは、ソースの場所(ローカルまたはネットワーク)と、ソースをローカルにマウントするためのマウントポイントを指定します。マップの全般的な形式はマスタマップと同様です。異なるのは、optionsをエントリの最後ではなくmount pointとlocationの間に記述する点です。
mount point options location
マップファイルが実行可能ファイルとしてマークされていないことを確認してください。chmod -x MAP_FILE
を実行することにより、実行可能ビットを削除することができます。
- mount point
ソースの場所をどこにマウントするかを指定します。ここには、
auto.master
で指定されたベースマウントポイントに追加する1つのディレクトリ名(「間接」マウント)、またはマウントポイントのフルパス(直接マウント、30.2.1.1項 「直接マウント」を参照)のいずれかを指定できます。- options
関連するエントリのマウントオプションを、カンマで区切ったオプションのリストで指定します。このマップファイルのオプションも
auto.master
に含まれている場合、これらが追加されます。- location
ファイルシステムのマウント元の場所を指定します。通常は、標準の表記方法
host_name:path_name
によるNFSまたはSMBボリュームです。マウントするファイルシステムが「/」で始まる場合(ローカルの/dev
エントリやsmbfs共有など)、:/dev/sda1
のように、コロン記号「:」のプレフィクスを付ける必要があります。
30.3 操作とデバッグ #
このセクションでは、autofs
サービスの操作を制御する方法と、自動マウント機能の操作を調整する際に詳細なデバッグ情報を表示する方法の概要について説明します。
30.3.1 autofs
サービスの制御 #
autofs
サービスの動作は、systemd
によって制御されます。autofs
用のsystemctl
コマンドの一般的な構文は、次のとおりです。
sudo systemctl SUB_COMMAND autofs
ここでSUB_COMMANDは以下のいずれかです。
- enable
ブート時に自動マウント機能のデーモンを起動します。
- start
自動マウント機能のデーモンを起動します。
- stop
自動マウント機能のデーモンを停止します。自動マウントポイントにはアクセスできません。
- status
autofs
サービスの現在のステータスと、関連するログファイルの一部を出力します。- restart
自動マウント機能を停止して起動します。実行中のデーモンをすべて終了し、新しいデーモンを起動します。
- reload
現在の
auto.master
マップを確認して、エントリに変更があるデーモンを再起動し、新しいエントリがある場合は新しいデーモンを起動します。
30.3.2 自動マウント機能の問題のデバッグ #
autofs
でディレクトリをマウントする際に問題が発生する場合は、automount
デーモンを手動で実行して出力メッセージを確認してください。
autofs
を停止します。sudo systemctl stop autofs
1つの端末から、フォアグラウンドで
automount
を手動で実行し、詳細な出力を生成します。sudo automount -f -v
別の端末から、マウントポイントにアクセスして(たとえば、
cd
またはls
を使用して)、自動マウントファイルシステムをマウントしてみます。1番目の端末から、
automount
の出力で、マウントに失敗した理由またはマウントが試行されていない理由についての詳細情報がないかどうかを確認します。
30.4 NFS共有の自動マウント #
次の手順は、ネットワーク上で利用可能なNFS共有を自動マウントするようautofs
を設定する方法を示しています。この方法は上で説明した情報を利用しています。また、NFSのエクスポートを熟知していることが前提です。NFSの詳細については、第28章 「NFS共有ファイルシステム」を参照してください。
マスタマップファイル
/etc/auto.master
を編集します。sudo vim /etc/auto.master
/etc/auto.master
の最後に新しいNFSマウント用の新しいエントリを追加します。/nfs /etc/auto.nfs --timeout=10
これは、ベースマウントポイントは
/nfs
で、NFS共有は/etc/auto.nfs
マップで指定されていることをautofs
に伝え、非アクティブな状態が10秒間続いたらこのマップ内のすべての共有を自動的にアンマウントするよう指示します。NFS共有用の新しいマップファイルを作成します。
sudo vim /etc/auto.nfs
通常、
/etc/auto.nfs
には、各NFS共有に対して別個の行が含まれます。形式については、30.2.2項 「マップファイル」を参照してください。マウントポイントおよびNFS共有のネットワークアドレスを記述する行を追加します。export jupiter.com:/home/geeko/doc/export
上述の行は、要求があると、
jupiter.com
ホスト上の/home/geeko/doc/export
ディレクトリがローカルホスト上の/nfs/export
ディレクトリ(/nfs
はauto.master
マップから取得)に自動マウントされることを意味します。/nfs/export
ディレクトリは、autofs
によって自動的に作成されます。以前に同じNFS共有を静的にマウントしていた場合、必要に応じて
/etc/fstab
の関連する行をコメント化します。行は次のようになります。#jupiter.com:/home/geeko/doc/export /nfs/export nfs defaults 0 0
autofs
を再ロードし、動作しているかどうかを確認します。sudo systemctl restart autofs
# ls -l /nfs/export total 20 drwxr-xr-x 6 1001 users 4096 Oct 25 08:56 ./ drwxr-xr-x 3 root root 0 Apr 1 09:47 ../ drwxr-xr-x 5 1001 users 4096 Jan 14 2013 .images/ drwxr-xr-x 10 1001 users 4096 Aug 16 2013 .profiled/ drwxr-xr-x 3 1001 users 4096 Aug 30 2013 .tmp/ drwxr-xr-x 4 1001 users 4096 Oct 25 08:56 SLE-12-manual/
リモート共有上にあるファイルのリストを参照できる場合、
autofs
は機能しています。
30.5 詳細トピック #
このセクションでは、autofs
の基本的な説明よりも詳しいトピックについて説明します。ここで説明するのは、ネットワーク上で利用可能なNFS共有の自動マウント、マップファイルでのワイルドカードの使用、およびCIFSファイルシステムに固有の情報です。
30.5.1 /net
マウントポイント #
このヘルパーマウントポイントは、大量のNFS共有を使用する場合に便利です。/net
には、ローカルネットワーク上にあるすべてのNFS共有がオンデマンドで自動マウントされます。このエントリはすでにauto.master
ファイルに存在しているため、エントリのコメント化を解除してautofs
を再起動するだけで済みます。
/net -hosts
systemctl restart autofs
たとえば、jupiter
という名前のサーバと/export
という名前のNFS共有がある場合、
# cd /net/jupiter/export
コマンドラインで次のように入力してマウントできます。
30.5.2 ワイルドカードを使用したサブディレクトリの自動マウント #
個別に自動マウントする必要があるサブディレクトリが含まれるディレクトリがある場合(代表的なケースは、個々のユーザのホームディレクトリが内部にある/home
ディレクトリ)、autofs
には便利な解決方法が備わっています。
ホームディレクトリの場合は、auto.master
に次の行を追加します。
/home /etc/auto.home
続いて、/etc/auto.home
ファイルに正しいマッピングを追加し、ユーザのホームディレクトリが自動的にマウントされるようにする必要があります。1つの解決方法は、各ディレクトリに対して個別のエントリを作成することです。
wilber jupiter.com:/home/wilber penguin jupiter.com:/home/penguin tux jupiter.com:/home/tux [...]
これは、auto.home
内にあるユーザのリストを管理する必要があるため、効率的とはいえません。マウントポイントの代わりにアスタリスク「*」を使用し、マウントするディレクトリの代わりにアンパサンド「&」を使用します。
* jupiter:/home/&
30.5.3 CIFSファイルシステムの自動マウント #
SMB/CIFS共有を自動マウントする場合(SMB/CIFSプロトコルの詳細については、第29章 「Samba」を参照)、マップファイルの構文を変更する必要があります。オプションフィールドに-fstype=cifs
を追加し、共有の場所にコロン「:」のプレフィクスを付けます。
mount point -fstype=cifs ://jupiter.com/export