Ubuntu Documentation

はじめに

autofs は必要なときに必要なだけ自動的にディレクトリをマウントするためのプログラムである。 自動マウントは、アクセスされたときのみマウントされ、一定期間使用されないとアンマウントされます。 このため、NFS/Samba 共有を自動マウントすることで、fstab による静的マウントと比較して帯域幅を節約し、全体的に優れたパフォーマンスを提供します。

1.1. 用語に関する簡単なメモ

混乱を避けるため、以下の用語が使用されます。

  • automount は autofs のマウントポイントを設定するために使用されるプログラムです。 autofs を起動すると、各マップに対して automount デーモンが生成されます。

  • Auto-mount あるいは auto-mounting は、ファイルシステムを自動的にマウントする処理を指します。
  • autofs は automount daemon の動作を制御するプログラムです。

インストール

ここをクリックするか、ターミナルウィンドウで以下を入力して autofs パッケージをインストールしてください。

  • $ sudo apt-get install autofs

設定

autofsは設定ファイルを編集して設定することができます。 ネットワーク上で autofs を設定する方法は他にもありますが (AutofsLDAP を参照)、設定ファイルが最も簡単な設定を提供します。

3.1. マスターマップファイル

デフォルトでは autofs のマスターコンフィグレーションファイルは /etc/auto.master です。 これを変更する正当な理由がない限り、デフォルトのままにしておいてください。

以下は、Ubuntuが提供するサンプルファイルです。

## $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $## Sample auto.master file# This is an automounter map and it has the following format# key location# For details of the format look at autofs(5).#/misc /etc/auto.misc --timeout=60#/smb /etc/auto.smb#/misc /etc/auto.misc#/net /etc/auto.net
  • デフォルトでは、すべての行が # 文字でコメントアウトされています。

auto.master の各行は、マウントとそのマップの場所を記述しています。 これらの行は次のような形式になっています。

  • mount-point :] map 

3.1.1. 直接マップと間接マップ

オートマウント・マップには、直接または間接的なものがあります。 上に示した auto.master ファイルのような間接的なマップは、メイン マウント ポイントの内部にサブディレクトリとしてマウント ポイントを作成します。 例えば、次のようなマスターマップエントリを考えてみましょう。

  • /smb /etc/auto.smb

この auto.master のエントリは autofs に /etc/auto.smb を見て、/smb ディレクトリにマウントポイントを作成するように指示します。

直接マップは、関連するマップ ファイルで指定されたパスにマウント ポイントを作成します。 auto.master のマウントポイントエントリーは常に /- です。 たとえば、次の行は、auto.data で指定された場所にマウントポイントを作成するように autofs に指示します。

  • /- /etc/auto.data
  • マップファイルが完全なローカルまたはネットワークパスを使用して指定されていない場合、ネームサービススイッチ構成は、例えば、マップを検索するために使用されます。
    /- auto.data

3.2. マップファイル

上に示したように、各 autofs マウントは独自のマップファイルを持っています。 これらのファイルは通常 auto.<X> という規則で名付けられます。ここで <X> は auto.master のエントリにマッチし、ファイル名として有効である限り、何でもかまいません。

地図ファイルは次のような形式をとります。

  • key location

example: NFS 共有を自動マウントする

この Howto では、一連の設定ファイルを使用して、NFS 共有を自動マウントするように autofs を設定します。 この Howto は、あなたが既に NFS エクスポートに精通しており、ネットワーク上に適切に機能する NFS 共有があることを想定しています。 そのようなサーバーをセットアップする方法については、NFS セットアップページを参照してください。

4.1. etc/auto.master

次のステップでは、/nfs にマウント ポイントを作成し、/etc/auto.nfs (次のステップで作成します) で指定した設定に従ってそれを構成します。

  1. ターミナルに次のように入力します。
    $ sudo nano /etc/auto.master
  2. 以下の行を /etc/auto.master の末尾に追加してください。

    /nfs /etc/auto.nfs

4.2. /etc/auto.nfsの作成

ここで、オートマウンターマップを含むファイルを作成します。

  • $ sudo nano /etc/auto.nfs

このファイルには、各 NFS 共有に対して個別の行を記述する必要があります。 行の形式は {マウントポイント} です。 {場所}を指定します。 以前、/etc/fstab で静的マウントを設定したことがあれば、それを参照するとよいでしょう。 ここで指定するマウントポイントは、/etc/auto.master で指定されたマウントポイントからの相対的なものであることを覚えておいてください。

次の行は、NFS の古いバージョン (バージョン 4 より前) を使用する共有のためのものです。

  • server server:/

これは /nfs/server/ に新しいマウントポイントを作成し、ホスト名が server であるマシンによってエクスポートされた NFS ルートディレクトリをマウントします。

4.2.1. NFSv4

NFS 共有が NFSv4 を使用する場合、autofs にそのことを伝える必要があります。 そのような場合、上記の行は以下のように表示されます。

  • server -fstype=nfs4 server:/

NFSv4 サーバーに接続するには、クライアントも /etc/default/nfs-common に同じ変更を加える必要があります。

  • /etc/default/nfs-commonで、設定します。

    NEED_IDMAPD=yesNEED_GSSD=no # no is default

4.3. 静的マウントのアンマウントと /etc/fstab の編集

以前に NFS 共有を静的マウントとして設定した場合、それらをアンマウントする時が来ました。

  • $ sudo umount /server

次に、/etc/fstab のそれぞれのエントリーを削除 (またはコメントアウト) してください。

  • #server:/ /server/ nfs defaults 0 0

4.4. 再ロード /etc/init.d/autofs

変更を入力した後、以下のコマンドを実行して autofs を再ロードします。

  • $ sudo service autofs reload

古いバージョンのubuntuで作業していて、これがうまくいかない場合、試してみてください。

  • $ sudo /etc/init.d/autofs reload

Natty で動作しない場合は、以下を試してみてください。

  • $ sudo /etc/init.d/autofs restart

4.5. 動作の確認

共有にアクセスし、正しく動作していることを確認するために、シェルに次のように入力します。

  • $ ls /nfs/server

NFS 共有が一覧に表示されたら、おめでとうございます! autofs による NFS マウントが機能するようになりました! さらに高度な情報を学びたい場合は、読み進めてください。

高度な情報

上記の例のディレクトリ構造に従って、シェルに ls /nfs と入力すると、何も表示されないので驚くかもしれません。 しかし、自動マウントされる前にディレクトリにアクセスする必要があることを忘れないでください。 共有にアクセスするには、ls /nfs/serverと入力します。 一度アクセスすると、共有はタイムアウトまでしかリストされません。 このことを覚えておくと、実際には存在しない autofs の問題を診断する時間を節約することができるので、良いことです。

5.1. net と /smb に関する注意事項

これら二つのデフォルト設定は、あなたのセットアップに有用かもしれません。 多くの NFS や Samba 共有がある場合、これらの行のコメントを解除するとよいでしょう。 /net は、NFS によってエクスポートされるネットワーク上の他の場所のファイルシステムの自動マウントを有効にします。 例えば、fileserverという名前のサーバーに/exportというNFSエクスポートディレクトリがある場合、シェルのコマンドラインcd /net/fileserver/exportと入力することでマウントすることができます。 NFSファイル・サーバーがある環境では、このような構成が有効です。 /smbも同じように機能しますが、こちらはSambaファイルシステム用です。 ただし、Samba共有にアクセスする前に認証が必要な場合、automountは機能しません。

5.2. ワイルドカード文字

個別に自動マウントしたいいくつかのサブディレクトリを持つディレクトリがあるとします。 この例として、/home ディレクトリがあり、この場合 /etc/auto.master には次の行が含まれるかもしれません。

  • /home /etc/auto.home

ユーザ1がログインしている場合、彼のホームディレクトリを自動マウントしたいでしょう。 しかし、/home ディレクトリ全体のマウント ポイントを作成すると、他のすべてのユーザーのホーム ディレクトリも同時にマウントすることになり、帯域幅を浪費することになります。 これを解決するには、次のようにディレクトリごとに個別のエントリを作成することです。

  • # /etc/auto.homeuser1 server:/home/user1user2 server:/home/user2user3 server:/home/user3

これはうまくいくが、面倒である。 代わりに、次のようにワイルドカード文字を使用することができます。

  • * server:/home/&

マウントポイントの代わりにアスタリスク (*) を、マウントするディレクトリの代わりにアンパサンド (&) を使用します。 ワイルドカードの使用についての詳細は、「AutoFS マップでワイルドカード文字をショートカットとして使用する」を参照してください。

また、変数 (autofs(5) man ページ参照) を使ってユーザーや他のパラメータを置き換え、複数のユーザーのための汎用ファイルを作成することができます。 以下の例は、$USER変数を用いて共有を要求するユーザに基づいてマップするsmbマップです。

* -fstype=cifs,rw,credentials=/home/$USER/.smbcredentials,iocharset=utf8,uid=$USER,gid=users,file_mode=0700,dir_mode=0700 ://server/$USERshare1 -fstype=cifs,rw,credentials=/home/$USER/.smbcredentials,iocharset=utf8,uid=$USER,gid=users ://server/share1share2 -fstype=cifs,rw,credentials=/home/$USER/.smbcredentials,iocharset=utf8,uid=$USER,gid=users ://server/share2

他の種類のファイルシステムをマウントする

6.1. CIFS

マップファイル内でCIFS共有を指定する場合、-fstype=cifsを指定し、共有位置の前にコロン(:)を付けます。

例:

mntpoint -fstype=cifs ://example.com/shrname

例: ファイルを所有するユーザーとグループを指定して、読み書き可能な状態でマウントします。

mntpoint -fstype=cifs,rw,uid=myuserid,gid=mygrpid ://example.com/shrname

例: 共有に接続するために使用するユーザー名とパスワードを指定して、読み書き可能にマウントします。

mntpoint -fstype=cifs,rw,username=myuser,password=mypass ://example.com/shrname

6.2. FUSE ベースのファイルシステム

FUSE ベースのファイルシステムは -fstype=fuse を指定することでマウントされます。 ファイルシステムの位置は、ファイルシステムのマウントに使用するユーザ空間のバイナリを指定し、その後にハッシュ(#)、その後に位置を指定します。

Map ファイルで FUSE ファイルシステムの場所を指定する場合、特定の文字、特にハッシュ (#) とコロン (:) をバックスラッシュ (\) でエスケープする必要があります。 また,位置の前には必ずコロン(:)を付けなければならない.

自動マウントは root としてマウントを実行するので、通常、非 root ユーザー ID が共有にアクセスできるように、マウント オプションで allow_other を指定する必要があります。

6.2.1. SSHFS ファイルシステム

SSHFS は FUSE ベースのファイルシステムです。 autofsマウントでは、サーバ名に続くコロン(:)をバックスラッシュでエスケープする必要があります(※1)。

すでに公開鍵暗号方式によるパスワード不要の認証を設定したはずです。 先に進む前に、このセキュリティの意味を理解していることを確認してください。

自動マウントは SSHFS ファイルシステムをルートとしてマウントするので、次のことを行う必要があります。

  1. 秘密鍵を /root/.ssh ディレクトリにコピーします。 先に進む前に、このセキュリティの意味を理解していることを確認してください。

  2. 必要なホスト鍵を /root/.ssh/known_hosts に追加してください。

  3. 接続に使用するユーザー名を指定する

SSHFSファイルシステムをルートとしてマウントするテストは、次のように発行します。

sudo sshfs [email protected]:/ mountpoint

パスワードを要求されずにマウントに成功したら、autofs でファイルシステムをマウントする準備ができています

例:

mntpoint -fstype=fuse,allow_other :sshfs\#[email protected]\:/path/to/mount

例: ファイルを所有するユーザーとグループを指定し、読み書き可能にマウントします。

mntpoint -fstype=fuse,rw,uid=1000,gid=1000,allow_other :sshfs\#[email protected]\:/path/to/mount

FUSE のマウントでは、uid と gid は数値の ID でなければならないことに注意してください。

Debugging Auto Mount Problems

ファイルシステムの自動マウントに問題がある場合、フォアグラウンドで automount を実行すると便利な場合があります。

  1. autofs デーモンを停止

    sudo service autofs stop
  2. foreground で詳細情報を表示して automount を実行

    sudo automount -f -v
  3. 別のターミナルから、マウントポイントにディレクトリを変更しファイルシステムをマウントしてみて下さい。
  4. 最初のターミナルからの出力をチェックして、マウントがなぜ失敗したか、または試行されなかったかの手がかりを探します。

See Also

  • Mount – Ubuntu のマウント処理とその設定に関する情報です。

  • The mount man page – Ubuntu の公式サイトでホストされています。

コメントを残す

メールアドレスが公開されることはありません。