Tutoriel Linux

LinuxにおけるAutofs:要求に応じてNFS共有をマウントする

Débutant2 min de lecture

利用できないNFSエクスポートを待っているDebianサーバーは、空のディレクトリ、失敗したマウント、または無駄なタイムアウトで起動する可能性があります。プロジェクトのアーカイブやリポジトリのように、断続的に使用される共有に対しては、Autofsが最初のアクセス時にパスをマウントし、アイドル状態が続くと一定の期間後に解放します。

以下の手順は、既に利用可能なNFSエクスポートを持つDebianまたはUbuntuのサーバーを対象としています。手動マウントから始まり、間接マウントポイント/srv/nfs/projetsを設定します。サービスが起動時に必要とするボリュームに対しては、/etc/fstabを保持します。

NFSサーバーに接続されたネットワークフォルダを開くペンギンTux
Autofsは、ディレクトリが実際に開かれたときに共有をマウントします。

NFSエクスポートを変更する前にテストする

Autofsは、ディレクトリへのアクセスの背後にマウント操作を隠します。そこは、欠けているNFSエクスポート、故障したDNS、またはサーバーによって拒否された権限を修正しません。まず、DebianまたはUbuntuにNFSクライアントをインストールし、次に一時ディレクトリでmountコマンドを使用してパスをテストします。

sudo apt update
sudo apt install nfs-common
sudo mkdir -p /mnt/nfs-manual-test
sudo mount -t nfs4 nfs.exemple.lan:/srv/nfs/projets /mnt/nfs-manual-test
findmnt -T /mnt/nfs-manual-test
ls -la /mnt/nfs-manual-test
sudo umount /mnt/nfs-manual-test
sudo rmdir /mnt/nfs-manual-test

サーバーとパスをあなたのチームによって提供されたエクスポートに置き換えます。findmntはNFSソースを表示し、ディレクトリは期待される権限で読み取り可能であるべきです。このテストが失敗した場合、ここで止まってください。機能するNFSマウントを持っていない状態でAutofsを設定することは、診断を複雑にします。

showmount -e nfs.exemple.lanは、まだMOUNTプロトコルを公開しているサーバーで役立つかもしれませんが、必ずしも必要なテストとして使用しないでください:NFSv4サーバーは、文書化されたマウントを受け入れながら、このコマンドで何も公開しないことがあります。

間接マウントポイントを宣言する

DebianおよびUbuntuでは、NFSテストの後にautofsをインストールします。ファイル/etc/auto.masterは、ルートディレクトリをマップに関連付けます。そのマップには、マウントトリガーとなるサブディレクトリが含まれています。間接マップの形式は、autofsマニュアルに詳しく説明されています。

sudo apt install autofs
sudoedit /etc/auto.master

次の行を/etc/auto.masterに追加します:

/srv/nfs /etc/auto.nfs --timeout=120

/srv/nfsはAutofsポイントです。最初のアクセスの際に、projetsディレクトリがこのルートの下に作成されます。--timeout=120は、アイドル状態が2分続いた後にアンマウントを要求します。ここに0を置かないでください:自動アンマウントが無効になります。

次に、参照されたマップを作成し、テキスト形式で保持します。programタイプのマップは、エントリを生成するプログラムを実行できます。このメカニズムは、制御された管理には適していますが、この初期設定には適していません。

sudo install -m 644 /dev/null /etc/auto.nfs
sudoedit /etc/auto.nfs

共有ごとにエントリを追加します:

projets -fstype=nfs4,rw nfs.exemple.lan:/srv/nfs/projets

単語projetsはローカルパス/srv/nfs/projetsを形成します。オプションの後に続く部分は、前述の有効なNFSエクスポートです。マップのパスに二重スラッシュを避けてください。マニュアルauto.masterは、これらのパスが困難な期限切れを引き起こす場合があることを示しています。

この間接マウントは、時折開かれるディレクトリに限定するべきだと思います。データベース、コンテナ、またはsystemdサービスに不可欠なファイルが含まれるボリュームについては、ネットワーク依存関係とともに明示的なマウントを維持するべきです。Autofsは、パスが参照されたときにマウントを作成するため、最初のアクセスはネットワークを待つか失敗する可能性があります。

Autofsを再起動してマウントを引き起こす

マスターマップを考慮してサービスを再起動し、デーモンが読み込んだマップを表示します。automount -mはその構成を示します。このコマンドは必ずしもNFSエクスポートに接触せず、マウントが機能することを証明するものではありません。マニュアルautomountがこの表示モードについて説明しています。

すでにAutofsを使用しているサーバーでは、対象のパスを使用するプロセスがない状態で再起動してください。

sudo systemctl restart autofs
sudo automount -m
systemctl --no-pager --full status autofs
sudo journalctl -u autofs -n 50 --no-pager

サービスがアクティブである必要があります。構文エラー、欠落したマップファイル、またはアクセスできないパスがログに表示されます。この問題を修正してから、共有をテストしてください。

次のアクセスがマウントをトリガーします:

ls -la /srv/nfs/projets
findmnt -T /srv/nfs/projets
mountpoint /srv/nfs/projets

lsの後、findmntはNFSサーバーを表示し、mountpointは成功ステータスを返すべきです。ディレクトリを開かずに2分以上待ってから、再度findmnt -T /srv/nfs/projetsを実行します。システムによっては、Autofsマップが/srv/nfsの下に表示されたままとなり、projetsのNFSマウントは次のアクセスまで消えます。

重要なパスからAutofsを除外する

Autofsは、プロジェクトディレクトリ、アーカイブ、または管理者によって参照される共有に適しています。ネットワークよりも先に起動するサービス、遅延を許容しないプロセス、またはビジネスデータを書き込むために使用されるパスでは、恒久的なマウントと明示的なsystemdの依存関係が必要です。

ガイドNFSのLinuxの使い方は、維持されたネットワークマウントについて説明しています。ここでは、目標が異なります:あまり使用されない共有が起動を重くしないようにしつつ、なぜマウントが表示されたり消えたりするのかを示すコマンドとログを保持します。