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 フラッシュドライブや外部ハードドライブ、ネットワーク共有、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 に記載されています。
警告
AutoFS は、/bin/mount/etc/fstab と非常に同じように、"マウント"や"マウントポイント"といった用語を使用しません。

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

コード
mount-point [map-type[,format]:]map [options]
重要
間接マップは mkdir -p と同じように作成され、ファイルシステムがアンマウントされたときに削除されます。

mount-point で AutoFS が監視するディレクトリを指定し、map は AutoFS に何をマウントするかを伝えます。詳細については、以下の使い方を参照してください。

最初の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 マウントは、そこにアクセスが試行されるまでマウントされません。つまり、システムに追加されたデバイスを単に自動的にマウントするために使用することはできません。

AutoFS マウントは /etc/autofs/auto.master で指定されます。

設定例:

ファイル /etc/autofs/auto.master/etc/autofs/auto.blockdev に定義されたブロックデバイスを /media/blockdev に 5 秒のタイムアウトでマウントする
/media/blockdev    /etc/autofs/auto.blockdev   --timeout=5
ファイル /etc/autofs/auto.blockdev/dev の下のブロックデバイスを /media/blockdev に自動で間接マウントする
*   -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.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

外部資料