21 autofsによるオンデマンドマウント #
autofsは、指定したディレクトリをオンデマンドベースで自動的にマウントするプログラムです。これは高い効率を実現するためにカーネルモジュールに基づいており、ローカルディレクトリとネットワーク共有の両方を管理できます。これらの自動的なマウントポイントは、アクセスがあった場合にのみマウントされ、非アクティブな状態が一定時間続くとアンマウントされます。このオンデマンドの動作によって帯域幅が節約され、/etc/fstabで管理する静的マウントよりも高いパフォーマンスが得られます。autofsは制御スクリプトですが、automountは実際の自動マウントを実行するコマンド(デーモン)です。
   
21.1 インストール #
   デフォルトでは、autofsはSUSE Linux Enterprise Serverにインストールされません。その自動マウント機能を利用するには、最初に、次のコマンドを使用してインストールします。
  
>sudozypper install autofs
21.2 設定 #
vimなどのテキストエディタで設定ファイルを編集して、autofsを手動で設定する必要があります。autofsの基本的な設定手順は2つあります。「マスタ」マップファイルを使用する手順と、特定のマップファイルを使用する手順です。
  
21.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
- マウントに使用するマップソースの名前。マップファイルの構文については、21.2.2項 「マップファイル」を参照してください。 
- options
- これらのオプションを指定した場合、指定したマップ内のすべてのエントリにデフォルトとして適用されます。 
     オプションのmap-type、format、およびoptionsの特定の値の詳細については、のマニュアルページ(man 5 auto.master)を参照してください。
    
auto.masterの次のエントリは、autofsに対し、/etc/auto.smb内を検索して/smbディレクトリにマウントポイントを作成するよう指示します。
   
/smb /etc/auto.smb
21.2.1.1 直接マウント #
     直接マウントは、関連するマップファイル内で指定されたパスにマウントポイントを作成します。auto.masterでマウントポイントを指定するのではなく、マウントポイントフィールドを/-に置き換えます。たとえば、次の行は、autofsに対し、auto.smbで指定された場所にマウントポイントを作成するよう指示します。
    
/- /etc/auto.smb
ローカルまたはネットワークのフルパスでマップファイルを指定していない場合、マップファイルはネームサービススイッチ(NSS)設定を使用して検索されます。
/- auto.smb
21.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つのディレクトリ名(「間接」マウント)、またはマウントポイントのフルパス(直接マウント、21.2.1.1項 「直接マウント」を参照)のいずれかを指定できます。
- options
- 関連するエントリのマウントオプションを、カンマで区切ったオプションのリストで指定します。このマップファイルのオプションも - auto.masterに含まれている場合、これらが追加されます。
- location
- ファイルシステムのマウント元の場所を指定します。通常は、標準の表記方法 - host_name:path_nameによるNFSまたはSMBボリュームです。マウントするファイルシステムが「/」で始まる場合(ローカルの- /devエントリやsmbfs共有など)、- :/dev/sda1のように、コロン記号「:」のプレフィクスを付ける必要があります。
21.3 操作とデバッグ #
   このセクションでは、autofsサービスの操作を制御する方法と、自動マウント機能の操作を調整する際に詳細なデバッグ情報を表示する方法の概要について説明します。
  
21.3.1 autofsサービスの制御 #
autofsサービスの動作は、systemdによって制御されます。autofs用のsystemctlコマンドの一般的な構文は、次のとおりです。
   
>sudosystemctl SUB_COMMAND autofs
ここでSUB_COMMANDは以下のいずれかです。
- enable
- ブート時に自動マウント機能のデーモンを起動します。 
- start
- 自動マウント機能のデーモンを起動します。 
- stop
- 自動マウント機能のデーモンを停止します。自動マウントポイントにはアクセスできません。 
- status
- autofsサービスの現在のステータスと、関連するログファイルの一部を出力します。
- restart
- 自動マウント機能を停止して起動します。実行中のデーモンをすべて終了し、新しいデーモンを起動します。 
- reload
- 現在の - auto.masterマップを確認して、エントリに変更があるデーモンを再起動し、新しいエントリがある場合は新しいデーモンを起動します。
21.3.2 自動マウント機能の問題のデバッグ #
autofsでディレクトリをマウントする際に問題が発生する場合は、automountデーモンを手動で実行して出力メッセージを確認してください。
   
- 停止 - autofs.- >- sudosystemctl stop autofs
- 1つの端末から、フォアグラウンドで - automountを手動で実行し、詳細な出力を生成します。- >- sudoautomount -f -v
- 別の端末から、マウントポイントにアクセスして(たとえば、 - cdまたは- lsを使用して)、自動マウントファイルシステムをマウントしてみます。
- 1番目の端末から、 - automountの出力で、マウントに失敗した理由またはマウントが試行されていない理由についての詳細情報がないかどうかを確認します。
21.4 NFS共有の自動マウント #
   次の手順は、ネットワーク上で利用可能なNFS共有を自動マウントするようautofsを設定する方法を示しています。この方法は上で説明した情報を利用しています。また、NFSのエクスポートを熟知していることが前提です。NFSの詳細については、第19章 「NFS共有ファイルシステム」を参照してください。
  
- マスタマップファイル - /etc/auto.masterを編集します。- >- sudovim /etc/auto.master- /etc/auto.masterの最後に新しいNFSマウント用の新しいエントリを追加します。- /nfs /etc/auto.nfs --timeout=10 - これは、ベースマウントポイントは - /nfsで、NFS共有は- /etc/auto.nfsマップで指定されていることを- autofsに伝え、非アクティブな状態が10秒間続いたらこのマップ内のすべての共有を自動的にアンマウントするよう指示します。
- NFS共有用の新しいマップファイルを作成します。 - >- sudovim /etc/auto.nfs- 通常、 - /etc/auto.nfsには、各NFS共有に対して別個の行が含まれます。形式については、21.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を再ロードし、動作しているかどうかを確認します。- >- sudosystemctl 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は機能しています。
21.5 詳細トピック #
   このセクションでは、autofsの基本的な説明よりも詳しいトピックについて説明します。ここで説明するのは、ネットワーク上で利用可能なNFS共有の自動マウント、マップファイルでのワイルドカードの使用、およびCIFSファイルシステムに固有の情報です。
  
21.5.1 /netマウントポイント #
    このヘルパーマウントポイントは、大量のNFS共有を使用する場合に便利です。/netには、ローカルネットワーク上にあるすべてのNFS共有がオンデマンドで自動マウントされます。このエントリはすでにauto.masterファイルに存在しているため、エントリのコメント化を解除してautofsを再起動するだけで済みます。
   
/net -hosts
>sudosystemctl restart autofs
    たとえば、jupiterという名前のサーバと/exportという名前のNFS共有がある場合、
   
>sudocd /net/jupiter/export
コマンドラインで次のように入力してマウントできます。
21.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/&
21.5.3 CIFSファイルシステムの自動マウント #
    SMB/CIFS共有を自動マウントする場合(SMB/CIFSプロトコルの詳細については、第20章 「Samba」を参照)、マップファイルの構文を変更する必要があります。オプションフィールドに-fstype=cifsを追加し、共有の場所にコロン「:」のプレフィクスを付けます。
   
mount point -fstype=cifs ://jupiter.com/export