AutoFS/ja
AutoFS は、Linux カーネルの自動マウントを利用して、必要時にファイルシステムを自動でマウントするプログラムです。USB フラッシュドライブや外部ハードドライブ、ネットワーク共有、CDROM/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
+libtirpc
|
Use TiRPC library instead of SunRPC |
dmalloc
|
Enable debugging with the dmalloc library |
ldap
|
Install LDAP module |
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 |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
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
WebDAV ファイルシステムのためには、net-fs/davfs2 パッケージが必要です:
root #
emerge --ask net-fs/davfs2
設定
サービス
自動マウント機能が動作するために、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
を実行することで閲覧可能です。通常はこのファイルを改変する必要はありません。
/etc/autofs/auto.master
/etc/autofs/auto.masterは(デフォルトの)"マスターマップ"です。各行でAutoFSのマウントの設定をします。
基本的な使い方は man auto.master に記載されています。
通常は、このファイルの設定行は次のような形式を取ります:
mount-point [map-type[,format]:]map [options]
間接マップは mkdir -p と同じように作成され、ファイルシステムがアンマウントされたときに削除されます。
mount-point
で AutoFS が監視するディレクトリを指定し、map
は AutoFS に何をマウントするかを伝えます。詳細については、以下の使い方を参照してください。
最初の2つの(空白文字で区切られた)フィールド、すなわちmount-point
とmap
をそれぞれ埋め、行の残りはオプションとして扱います。オプションは、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.*のパターンで名前付けされます。
このファイルの行は、以下の形式を取ります:
key [-options] location
ここで、key
は、AutoFSのマウントに結び付けられた一意的なキーで、ファイルシステムがどこにマウントされるかのパスの一部分または全体です。location
はAutoFSに、何のファイルシステムをマウントするかを伝えます。-options
はカンマ区切りのオプションのリストで、mountに渡されます。AutoFSが扱う(fstype
のような)一部の特別なオプションは例外です。詳細については、以下の使い方、または次のコマンドを実行してマニュアルページを閲覧してください:
user $
man 5 autofs
使い方
Autofs マウントは、そこにアクセスが試行されるまでマウントされません。つまり、システムに追加されたデバイスを単に自動的にマウントするために使用することはできません。
AutoFS マウントは /etc/autofs/auto.master で指定されます。
設定例:
/media/blockdev /etc/autofs/auto.blockdev --timeout=5
* -fstype=auto :dev/&
マップの場所は host:path
の形式を取ります。この例では auto.blockdev
となっていて、これは /etc/autofs/auto.blockdev を参照します。host
はローカルマシンのパスを参照するために空白のままにすることもできます。そうでなければ、名前付きリモートホストからの名前付きパスが、NFS を使用してマウントされます。
この設定では、autofs サービスが開始されると /media/blockdev が作成されるでしょう。デバイスが /dev/sda1 に存在し、 /media/blockdev/sda1 へのアクセスが試行されると、そのデバイスは自動的にそこにマウントされるはずです。
AutoFS のマウントには、直接と間接の 2 種類のマウントがあります。
直接 AutoFS マウント
直接 AutoFS マウントでは、-mount-point
は /-
、そしてマップファイル内の key
は、どこにファイルシステムがマウントされるかのフルパスを指定します。例として、AutoFS のマニュアルページでは、このような例が含まれています:
/- /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.local
/mnt/stuff -fstype=ext4 :/dev/sdd1
実質的には次のコマンドを実行します:
root #
mount -t ext4 /dev/sdd1 /mnt/stuff
間接 AutoFS マウント
間接 AutoFS マウントでは、mount-point
はディレクトリのパスを、map
は、そのディレクトリへデバイスをマウントするルールが定められているファイルへのフルパスを指定します。例として、デフォルトのインストールでは、以下の行が含められています (ただしコメントアウトされています):
/misc /etc/autofs/auto.misc
この行では、AutoFSにファイルシステムアクセスのために/misc以下のファイルを監視するよう伝えます。プログラムが/misc以下のなにかにアクセスしようとすると、AutoFSは/etc/autofs/auto.miscにある設定ファイルを使用して、何かをマウントするかしないかを決定します。そのファイルの各行(コメントでもなく、空行でもない)は、AutoFSが/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
これは、いくつか他の例です:
# /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 を以下のように設定することが出来ます:
/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がインストールされ、マウント前に設定されなければなりません。
/net file:/etc/autofs/auto.smbm --ghost --nonstrict
* -fstype=autofs,-Dhost=& file://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
外部資料
- LinuxドキュメンテーションプロジェクトのウェブサイトにあるAutomount mini-Howto
- UbuntuコミュニティのヘルプWikiにあるAutoFSのページ