経験豊富なシステム管理者であろうと、通常のユーザーであろうと、おそらくLinuxにドライブをすでにマウントしているでしょう。
ドライブはマシンに対してローカルにすることも、NFSプロトコルを使用してネットワーク経由でアクセスすることもできます。
ドライブを永続的にマウントすることを選択した場合は、おそらくそれらをfstabファイルに追加しています。
幸いなことに、ドライブを取り付けるためのより優れた費用効果の高い方法があります。AutoFSユーティリティを使用することです。
AutoFSは、アクセスされたときにのみローカルドライブまたはリモートドライブをマウントするユーティリティです :使用しない場合は、自動的にマウント解除されます。
このチュートリアルでは、LinuxシステムにAutoFSをインストールして構成する方法を学習します。
前提条件
始める前に、それはあなたにとって重要です ホストでsudo権限を持っている。
確認するには、「-v」オプションを指定して「sudo」コマンドを実行します。オプションが表示されない場合は、問題ありません。
$ sudo -v
sudo権限がない場合は、Debianベースのホストの場合はこのチュートリアル、CentOSベースのシステムの場合はこのチュートリアルに従うことができます。
LinuxへのAutoFSのインストール
AutoFSユーティリティをインストールする前に、パッケージがリポジトリで最新であることを確認する必要があります。
$ sudo apt-get update
システムが更新されたので、「autofs」引数を指定して「apt-getinstall」コマンドを実行することでAutoFSをインストールできます。
$ sudo apt-get install autofs
AutoFSパッケージをインストールする場合、インストールプロセスは次のようになります:
- 複数の構成ファイルを作成する : auto.master、auto.net、auto.miscなどの/etcディレクトリ内 など;
- 作成します systemdのAutoFSサービス;
- 「自動マウント」を追加します 」エントリを「nsswitch.conf」ファイルに追加し、「ファイル」にリンクします 」ソース
インストール直後に、AutoFSサービスが「systemctlstatus」コマンドで実行されていることを確認してください
$ sudo systemctl status autofs

AutoFSサービスを起動時に実行できるようにすることもできます
$ sudo systemctl enable autofs
AutoFSがシステムに正しくインストールされたので、最初のマップの作成を開始する方法を見てみましょう。
LinuxでのAutoFSの動作
「地図 」は、AutoFSに関して重要な概念です。
AutoFSでは、マウントポイントをファイルにマッピングしています (間接マップと呼ばれます)または場所またはデバイスを含むマウントポイント。
デフォルトの構成では、AutoFSは/etcディレクトリのautofs.masterファイルで定義されたマップを読み取ることから開始します。
そこから、マスターファイルで定義されたマップファイルで定義されたすべてのマウントポイントのスレッドを開始します。

スレッドを開始しても、AutoFSを最初に起動したときにマウントポイントがマウントされるわけではありません。アクセスされたときにのみマウントされます。
デフォルトでは、5分後 非アクティブの場合、AutoFSは使用されなくなったマウントポイントをマウント解除(またはアンマウント)します。
注 :AutoFSの構成パラメーターは、/ etc / autofs.conf
で入手できます。
最初の自動マップファイルの作成
AutoFSがどのように機能するかがわかったので、次は最初のAutoFSマップの作成を開始します。 。
/ etcディレクトリに、「 auto.example」という名前の新しいマップファイルを作成します。 「。
$ sudo touch /etc/auto.example
このマップファイルの目的は、NFS共有をマウントすることです。 ネットワーク上の1台のコンピューターにあります。
NFS共有は、ローカルネットワーク上のIP 192.168.178.29/24にあり、/ var/shareにある1つのドライブをエクスポートします。
NFS共有を自動マウントする前に、手動でマウントし、リモートサーバーに接続できることを確認することをお勧めします。
$ ping 192.168.178.29
ダイレクトマップの作成
AutoFSを使用して作成できる最も簡単なマッピングは、ダイレクトマップまたはダイレクトマッピングと呼ばれます。 。
ダイレクトマップは、1つのマウントポイントを場所(たとえば、NFSの場所)に直接関連付けます

例として、起動時に/tmpディレクトリにNFS共有をマウントするとします。
直接地図を作成するには、「 auto.example」を編集します 」ファイルを作成し、その中に次のコンテンツを追加します:
# Creating a direct map with AutoFS
# <mountpoint> <options> <remote_ip>:<location>
/tmp -fstype=nfs 192.168.178.29:/var/share
次に、ダイレクトマップを「 auto.master」に追加する必要があります 」ファイル。
直接マップを参照していることを指定するには、「-」表記を使用する必要があります
# Content of the auto.master file
/- auto.example

マスターファイルが変更されたので、AutoFSサービスを再起動して、変更を有効にすることができます。
$ sudo systemctl restart autofs
$ cd /tmp
おめでとうございます。これで、直接マッピングを介してNFS経由でファイルにアクセスできるようになります。

間接マッピングの作成
直接マッピングを発見したので、間接マッピングを使用してファイルシステムにリモートロケーションをマウントする方法を見てみましょう。
間接マッピングは、直接マッピングと同じ構文を使用しますが、わずかな違いが1つあります。場所をマウントポイントに直接マウントする代わりに、このマウントポイントの場所にマウントします。

それを理解するには、「 auto.nfs」という名前のファイルを作成します 」と入力し、次のコンテンツを貼り付けます
nfs -fstype=nfs 192.168.178.29:/var/share
ご覧のとおり、最初の列が変更されました。直接マップでは、マウントポイントへのパス(たとえば/ tmp)を使用していますが、間接マップではキーを指定しています 。
キーは、マウントポイントディレクトリにあるディレクトリ名を表します。
「auto.master」ファイルを編集して、次のコンテンツを追加します
/tmp /etc/auto.nfs

AutoFSサービスを再起動し、「tmp」ディレクトリに移動します
$ sudo systemctl restart autofs
$ cd /tmp
デフォルトでは、このディレクトリのコンテンツを一覧表示しても何も表示されません。 AutoFSは、アクセスされたときにのみディレクトリをマウントします。
AutoFSがディレクトリをマウントするには、「auto.nfs」ファイル(この場合は「nfs」と呼ばれます)で指定したキーにちなんで名付けられたディレクトリに移動します
$ cd nfs
素晴らしい!
マウントポイントがアクティブになり、ディレクトリの参照を開始できます。
離れたホームディレクトリのマッピング
直接マッピングと間接マッピングについてもう少し理解できたので、1つの質問を自問するかもしれません。それは、場所を直接マッピングできるのに、間接マッピングを使用する意味は何ですか?
有用であるために、間接マップはワイルドカード文字で使用することを目的としています。
AutoFSユーティリティの主な使用例の1つは、ホームディレクトリをリモートでマウントできるようにすることです。
ただし、ユーザー名がユーザーごとに変わると、きれいで見栄えの良いマップファイルを作成できなくなり、すべてのユーザーを非常に冗長な方法でマップする必要があります。
# Without wildcards, you have very redundant map files
/home/antoine <ip>:/home/antoine
/home/schkn <ip>:/home/schkn
/home/devconnected <ip>:/home/devconnected
幸いなことに、サーバーで利用可能なものに応じてディレクトリを動的に作成できる構文があります。
これを説明するために、「 auto.home」という名前の新しいファイルを作成します / etcの」 ディレクトリを作成して編集を開始します。
# Content of auto.home
* <ip>:/home/&
この場合、2つのウィルカードがあり、サーバー上の/homeディレクトリにあるすべてのディレクトリがマップされることを意味します 同じ名前のディレクトリへ クライアント上。
これを説明するために、192.168.178.29 IPアドレスで実行されているNFSサーバーがあり、ユーザーのすべてのホームディレクトリが含まれているとしましょう。
# Content of auto.home
* 192.168.178.29:/home/&
間接マッピングを作成するには、ファイルを保存してauto.masterファイルの編集を開始します
$ sudo nano /etc/auto.master
# Content of auto.master
/home /etc/auto.home
マスターファイルを保存し、AutoFSサービスを再起動して、変更を適用します。
$ sudo systemctl restart autofs
これで、/ homeディレクトリに移動でき、ユーザー用に正しくマウントされたディレクトリを確認できるはずです。
注:ディレクトリに何も表示されない場合は、AutoFSでマウントするためにディレクトリに一度アクセスする必要がある場合があることに注意してください

ネットワーク上のホストのマッピングと検出
auto.masterファイルに注意を払った場合、おそらく / netのエントリがあることに気づいたでしょう。 値が「-hosts」のディレクトリ 「。
「-hosts」パラメータは、/ etc/hostsファイルで定義されているすべてのエントリを表すことを目的としています。
注意点として、「hosts」ファイルは、一連のIPをホスト名に関連付ける単純なローカルDNSリゾルバーと見なすことができます。
例として、マシンのIPとホスト名を入力して、NFSサーバーのエントリを/ etc/hostsファイルに定義しましょう。

まず、クライアントで「showmount」コマンドを実行して、一部のディレクトリがサーバーにエクスポートされていることを確認します。
$ sudo showmount -e <server>

一部のディレクトリがエクスポートされたことを確認したので、/ etcの「auto.master」ファイルに移動して、次の行を追加します。
# Content of auto.master
/net -hosts
ファイルを保存し、AutoFSサービスを再起動して、変更を適用します。
$ sudo systemctl restart autofs
それでおしまい!
これで、サーバーのホスト名にちなんで名付けられたディレクトリの下の/netディレクトリでNFS共有にアクセスできるようになります。
$ cd /net/<server_name>
$ cd /net/<server_ip>
注 :マウントするには、ディレクトリ内を直接移動する必要があることに注意してください。最初のマウントで/netディレクトリをリストするだけでは表示されません。
トラブルシューティング
場合によっては、AutoFSの設定中に問題が発生することがあります。たとえば、デバイスがビジー状態の場合や、リモートホストに接続できない場合などです。
- マウント/アンマウント:ターゲットがビジーです
Linuxはマルチユーザーシステムであるため、マウントまたはアンマウントしようとしている場所を閲覧しているユーザーがいる可能性があります(AutoFSを使用しているかどうかに関係なく)
誰がフォルダをナビゲートしているのか、誰がファイルを使用しているのかを知りたい場合は、「lsof」コマンドを使用する必要があります。
$ lsof +D <directory>
$ lsof <file>

注:「+ D」オプションは、リソースを再帰的に使用しているユーザーを一覧表示するために使用されます。
- ホスト検出の構成時にshowmountがハングしています
「-hosts」パラメータを使用してホスト検出を構成しようとした場合は、「showmount」コマンドを使用してリモートホストにアクセスできることを確認した可能性があります。
ただし、場合によっては、「showmount」コマンドがリモートサーバーに接続できないためにハングすることがあります。
ほとんどの場合、サーバーファイアウォールはクライアントからの要求をブロックしています。
サーバーにアクセスできる場合は、ファイアウォール(UFWなど)がリクエストをブロックしているかどうかを確認するために、ログを調べようとします。

- 自動マウントユーティリティを使用したデバッグ
最近のディストリビューションでは、autofsユーティリティはsystemdサービスとしてインストールされています。
結果として、「journalctl」コマンドを使用してautofsログを検査できます。
$ sudo journalctl -u autofs.service
「automount」ユーティリティを使用して、サービスによって実行される自動マウントをデバッグすることもできます。
$ sudo systemctl stop autofs
$ sudo automount -f -v
結論
このチュートリアルでは、AutoFSユーティリティについて学習しました。AutoFSユーティリティの仕組みと、直接マップと間接マップの違いです。
また、ホスト検出をセットアップするために構成できることも学びました。箱から出して、ローカルネットワークのすべてのNFS共有に接続できます。これは非常に強力なツールです。
最後に、ホームディレクトリをその場で自動的に作成するために、間接マップを作成する方法を確認しました。
Linuxシステム管理に興味がある場合は、専用のセクションがありますので、ぜひご覧ください。