AutoFS/ja

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page AutoFS and the translation is 100% complete.
Other languages:

AutoFSは、Linuxカーネルの自動マウントを利用して、必要時にファイルシステムを自動でマウントするプログラムです。USBフラッシュドライブや外部ハードドライブ、ネットワーク共有、CD-ROM/DVD/ブルーレイなどと動作します。

AutoFSは、ローカルファイルシステムでディレクトリを監視することで動作します。プログラムがそれらのディレクトリのうち1つにアクセスしようとすると、毎回AutoFSはそのディレクトリに何かをマウントします。監視するディレクトリや、何をマウントするかは、/etc/autofs/autofs.masterのようなAutoFS設定ファイルで指定します。どのようにAutoFSがマウントされるかの設定例は、#使い方の下にあります。

インストール

AutoFSは、カーネルモジュールとユーザスペースプログラムを必要とします。

注意
ファイルシステムを(AutoFSと一緒にか、あるいは手動で)マウントする時、対応するマウントヘルパがマウント時にインストールされている必要があります。例えばNTFSファイルシステムをマウントする時は、sys-fs/ntfs3gまたは何かこれと同等のものが必要です。ファイルシステムの中にはカーネル設定の変更も必要なものもあります。どのソフトウェアや設定が必要かを確認するために、選択したファイルシステムのwikiのページを確認してください。

カーネル設定

以下のカーネルオプションは、自動マウントに必要なカーネルの機能を有効にします。

カーネル
File systems --->
    <*/M> Kernel automounter version 4 support (also supports v3)
注意
もしこのオプションがMに設定されている場合、このモジュールファイルを格納するパーティションは、AutoFSが動作する前にマウントされなければなりません。

ユーザスペースプログラム

ほとんどのLinuxファイルシステムと同じように、カーネルの関係するオプションを有効するのに加え、実際にマウント処理をするために、ユーザスペースパッケージがインストールされなければなりません。

USE flags for net-fs/autofs Kernel based automounter

dmalloc Enable debugging with the dmalloc library
ldap Install LDAP module
libtirpc Use TiRPC library instead of SunRPC
mount-locking Enable locking to prevent corruption of /etc/mtab in the presence of concurrent auto-mounting. If enabled, recursive auto-mounting (eg. using autofs to bind or loop mount a filesystem which is itself auto-mounted) is not possible.
sasl Enable SASL support in the LDAP module
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking

これを、以下のコマンドでインストールしてください:

root #emerge --ask net-fs/autofs

追加のソフトウェア

NFS ファイルシステムをマウントするには、net-fs/nfs-utils パッケージが必要です:

root #emerge --ask net-fs/nfs-utils

CIFS ファイルシステムについては net-fs/cifs-utils が追加で必要です:

root #emerge --ask net-fs/cifs-utils

設定

サービス

自動マウント機能が動作するために、AutoFSのデーモンが実行されている必要があります。

OpenRC

AutoFSをdefaultランレベルに追加してください:

root #rc-update add autofs default

再起動前に自動マウントを使用するには、手動で開始してください:

root #/etc/init.d/autofs start

勿論以下で説明されているように、設定ファイルを最初に編集するのがおすすめです。もし設定を編集した時に既にAutoFSが実行されている場合、次のコマンドを実行してください:

root #/etc/init.d/autofs reload

これで、設定ファイルを再読み込み出来ます。

ファイル

AutoFSをデフォルトのままインストールすると、以下の4つのファイルが提供されます:

ファイル 説明
/etc/conf.d/autofs このファイルは、コマンドラインオプションをautomountプログラムに渡すのに使用されます。ほとんどのユーザはこのファイルを編集する必要はないでしょう。
/etc/autofs/autofs.conf このファイルは、マスターマップファイルの場所や、アクティブでないマウントを切り離す、既定のタイムアウト時間のような、AutoFSのいくつかのパラメータの既定値を定義しています。ほとんどのユーザはこのファイルを編集する必要はないでしょう。
/etc/autofs/auto.master これはマスターマップで、実質的には、何をそしてどこにマウントするかをAutoFSに伝える、マップファイルや他のリソースのインデックスです。ほとんどのユーザはこのファイルを編集する必要があるでしょう
/etc/autofs/auto.misc これはマップファイルの例で、マスターマップから参照されています。このファイルは何をどこにマウントするかを指定します。ほとんどのユーザはこのファイル編集する必要があるでしょう

/etc/conf.d/autofs

/etc/conf.d/autofsは、初期化スクリプト/etc/init.d/autofsに対応する設定ファイルです。基本的なAutoFSの使い方をするならば、このファイルを改変する必要はありません。

このファイルは2つの変数を定義しています:

  • USE_MISC_DEVICE: もしこの変数の値が"yes"ならば、初期化スクリプトはデバイスファイル/dev/autofsを作成します。
  • OPTIONS: この変数は、automountに渡すコマンドラインオプション引数を保持しています。man 8 automountを実行して、すべての使用可能なオプションの一覧をマニュアルページで確認してください。
注意
automountは、マスターマップのファイル名のような、オプションのない引数を受け取るかもしれません。しかし、ほとんどのユーザにとっては既定値(auto.master)で十分です。もしマスターマップのファイル名を変更したい場合、/etc/autofs/autofs.conf内で設定変数master_map_nameの値を設定することが多分よりよい方法です。このページの残りの説明では、マスターマップのファイル名はデフォルトのままであるとします。

/etc/autofs/autofs.conf

/etc/autofs/autofs.confはAutoFS自体の設定ファイルです。デフォルトでインストールされたものには良くコメントがなされており、このファイルで指定可能なオプションに関してはマニュアルページで文書化されています。これについては

user $man 5 autofs.conf

を実行することで閲覧可能です。基本的なAutoFSの使い方をするならば、このファイルを改変する必要はありません。

/etc/autofs/auto.master

/etc/autofs/auto.masterは(デフォルトの)"マスターマップ"です。各行でAutoFSのマウントの設定をします。

重要
AutoFSは、/bin/mount/etc/fstabと非常に同じように、"マウント"や"マウントポイント"といった用語を使用しません。

通常は、このファイルの行は次のような形式を取ります:

ファイル /etc/autofs/auto.master
mount-point     [map-type[,format]:]map                      [-options]

手短に言えば、mount-pointでAutoFSが監視するディレクトリを指定し、mapはAutoFSに何をマウントするかを伝えます。詳細については、以下の#使い方、またはman 5 auto.masterを実行してマニュアルページを閲覧してください。これらのどのフィールドも、スペースは含めません。

最初の2つの(空白文字で区切られた)フィールド、すなわちmount-pointmapをそれぞれ埋め、行の残りはオプションとして扱います。オプションは、AutoFSのautomount(オプションがダッシュで始まっている場合)か、mount(そうでない場合)のどちらかに渡されます。mountに渡されるオプションは、-oスイッチのあとに続きます。例については#使い方を見てください。

注意
auto.master内のコメントでは、形式はkey [ -mount-options-separated-by-comma ] locationであると述べられています。バージョン5.1.2の時点で、これは間違っています。その形式は/etc/autofs/auto.miscのようなマップファイルのエントリに適用されます。

/etc/autofs/auto.misc

/etc/autofs/auto.miscは'"マップファイル"'の例です。マスターマップファイルの中で実際に参照されているマップファイルのみが、実際にAutoFSによって使用されるので、/etc/autofs/auto.masterを対応するものに編集すれば、このファイルのファイル名を変更したり、ファイルを削除しても安全です。また、追加のマップファイルを以下と同じ文法で作成することも可能です。慣習では、マップファイルは/etc/autofs/auto.*のパターンで名前付けされます。

このファイルの行は、以下の形式を取ります:

ファイル /etc/autofs/auto.misc
key             [-options]                                   location

ここで、keyは、AutoFSのマウントに結び付けられた一意的なキーで、ファイルシステムがどこにマウントされるかのパスの一部分または全体です。locationはAutoFSに、何のファイルシステムをマウントするかを伝えます。-optionsはカンマ区切りのオプションのリストで、mountに渡されます。AutoFSが扱う(fstypeのような)一部の特別なオプションは例外です。詳細については、以下の#使い方、または次のコマンドを実行してマニュアルページを閲覧してください:

user $man 5 autofs

使い方

AutoFSのマウントは、/etc/autofs/auto.masterの各行で指定されます。忘れないためにお伝えしますが、このファイルの各行は次の形式を取ります:

ファイル /etc/autofs/auto.master
mount-point     [map-type[,format]:]map                      [-master-options]

通常mapは、/etc/autofs/auto.miscのような、マップファイルへのフルパスです。このファイルの各行は以下の形式を取ります:

ファイル /etc/autofs/auto.misc
key             [-map-options]                               location

ここで、locationフィールドはhost:pathの形式を取ります。hostはローカルマシンのパスを参照するために空白のままになりえます。そうでなければ、名前付きリモートホストからの名前付きパスが、NFSを使用してマウントされます。

-master-optionsと、-map-optionsは、以下のように解析されます:

  • -master-optionsはスペース区切りのオプションのリストで、automount(オプションがダッシュで始まっている場合)か、mount(そうでない場合)のどちらかに渡されます。
  • -map-optionsはカンマ区切りのオプションのリストで、これのほとんどはmountに渡されます。

AutoFSのマウントには、ダイレクトとインダイレクトの2種類のマウントがあります。

ダイレクトAutoFSマウント

ダイレクトAutoFSマウントでは、-mount-point/-、そしてマップファイル内のkeyは、どこにファイルシステムがマウントされるかのフルパスを指定します。例として、AutoFSのマニュアルページでは、このような例が含まれています:

ファイル /etc/autofs/auto.master
/-              /etc/autofs/auto.data
ファイル /etc/autofs/auto.data
/tst/sbin       bogus:/usr/sbin

これらの行は、AutoFSに/tst/sbinディレクトリを監視するよう伝えます。もしプログラムがこのディレクトリ内のなにかにアクセスしようとすると、AutoFSはリモートホストのbogusから、/usr/sbinディレクトリをローカルディレクトリである/tst/sbinにマウントします。言い換えると、実質的には次のコマンドを実行することになります:

root #mount -t nfs bogus:/usr/sbin /tst/sbin

ローカルデバイスのマウントの例は次のような感じです:

ファイル /etc/autofs/auto.master
/-              /etc/autofs/auto.local
ファイル /etc/autofs/auto.local
/mnt/stuff      -fstype=ext4    :/dev/sdd1

実質的には次のコマンドを実行します:

root #mount -t ext4 /dev/sdd1 /mnt/stuff

インダイレクトAutoFSマウント

インダイレクトAutoFSマウントでは、mount-pointはディレクトリのパスを、mapは、そのディレクトリへデバイスをマウントするルールが定められているファイルへのフルパスを指定します。例として、デフォルトのインストールでは、以下の行が含められています(ただしコメントアウトされています):

ファイル /etc/autofs/auto.master
/misc           /etc/autofs/auto.misc

この行では、AutoFSにファイルシステムアクセスのために/misc以下のファイルを監視するよう伝えます。プログラムが/misc以下のなにかにアクセスしようとすると、AutoFSは/etc/autofs/auto.miscにある設定ファイルを使用して、何かをマウントするかしないかを決定します。そのファイルの各行(コメントでもなく、空行でもない)は、AutoFSが/misc以下にマウントできる何かに対応します。例えばこの行

ファイル /etc/autofs/auto.misc
cd              -fstype=iso9660,ro,nosuid,nodev     :/dev/cdrom

は、AutoFSに/misc/cdを監視するよう伝えます。プログラムがこのディレクトリにアクセスしようとすると、AutoFSは実質的には次のコマンドを実行します:

root #mount -t iso9660 -o ro,nosuid,nodev /dev/cdrom /misc/cd

これは、いくつか他の例です:

ファイル /etc/autofs/auto.misc
# /mnt/auto以下のマウントポイント | マウントオプション | デバイス、ネットワーク共有など

# NFSv3によるネットワーク共有ファイルシステムの/mnt/auto/dataへのマウント
data            -rw,vers=3,soft,async                        192.0.2.1:/tank1/data
# CIFSによるネットワーク共有ファイルシステムの/mnt/auto/data1へのマウント
data1           -fstype=cifs,credentials=/root/smb.txt       ://192.0.2.1/data1
# Kindleなど、UUIDが既知で定期的に使用されるメモリースティック
kindle          -fstype=vfat,rw,uid=1000                     :UUID="4CBF-23A2"

インダイレクトマウントでは、AutoFSでワイルドカードを使用することが出来ます。例えば、もしユーザのホームディレクトリが異なるマシンに保存され、NFS上でマウントされている場合、AutoFSを以下のように設定することが出来ます:

ファイル /etc/autofs/auto.master
/home           /etc/autofs/auto.home
ファイル /etc/autofs/auto.home
*               neighborhood:/export/home/&

このようにして、ユーザlarryがログインし、自身のホームディレクトリの何かのファイルにアクセスすると、AutoFSは実質的には次のコマンドを実行します:

root #mount -t nfs neighborhood:/export/home/larry /home/larry

便利なオプション

これらのオプションをマスターマップファイルに与えることが出来ます。

  • --timeout=<seconds>は、自動マウントされたファイルシステムが使用されなくなってから、何秒後にAutoFSがアンマウントするかを指定します。
  • --ghostあるいはbrowse(後者の形式はダッシュなしです)はインダイレクトマウントの際に便利です。このオプションは、ディレクトリにアクセスした時だけでなく、automountデーモンが開始した際にも、AutoFSに、何かがマウントされるディレクトリを作成させます。

このオプションの完全な説明については、次のコマンドを実行してください:

user $man 5 auto.master

ファイルではないマップ

/etc/autofs/auto.master内で、単にmapを指定するのではなく、第2列目は例えば、マップにファイル以外のものも認めるmap-type:mapのような、より複雑なものも取りうることが出来ます。例えば、(各行がマップファイルに取り入れられるような)マップ指定を出力する実行可能ファイルや、あらゆる種類のデータベースを指定できます。認識可能なタイプについての完全な説明は、次のコマンドを実行してください:

user $man 5 auto.master

単純でWindowsのようなSamba共有ファイルシステムのマウント

Windowsが行うように、Samba共有ファイルシステムを自動的にマウントする方法を示します。この構成では、以下のコマンドをシェル内で実行することで、自動マウントを可能にします:

user $cd /net/192.0.2.1/share

あるいはファイルシステムブラウザやダイアログで、/net/192.0.2.1/shareに遷移してください。中のファイルはあたかもローカルマシンにあるように現れます。

重要
これを機能させるためには、Sambaがインストールされ、マウント前に設定されなければなりません。
ファイル /etc/autofs/auto.master
/net     file:/etc/autofs/auto.smbm    --ghost --nonstrict
ファイル /etc/autofs/auto.smbm
*        -fstype=autofs,-Dhost=&       file://etc/autofs/auto.share
ファイル /etc/autofs/auto.share
*         -fstype=cifs,username=guest,password=,file_mode=0664,dir_mode=0775,uid=netmount,gid=netmount,port=139     ://${host}/&

トラブルシューティング

マウントに失敗した場合や、マウントに問題が発生した場合は、問題の原因を絞り込むために次のステップを使用してください。

autofs サービスを停止してください:

root #/etc/init.d/autofs stop

stderr にログを出力するために、automount デーモンをフォアグラウンドで実行してください。一般的なステータスと進捗状況メッセージのログを現在実行中のターミナルで確認するために、verbose オプションを追加してください:

root #automount -f -v

通常のシステムユーザとして、ディレクトリの中に移動することでファイルシステムをマウントしてください:

user $cd /net/gentoo

フォアグラウンドで verbose モードで実行中のデーモンの出力を確認してください。以下の出力中に表示されている失敗メッセージの例:

root #automount -f -v
Starting automounter version 5.1.6, master map auto.master
using kernel protocol version 5.05
mounted indirect on /net with timeout 300, freq 75 seconds
attempting to mount entry /net/gentoo
>> mount: /net/gentoo: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.
mount(generic): failed to mount //example.net/larry (type cifs) on /net/gentoo
failed to mount /net/gentoo

外部資料