ホーム » 技術 » NASをautofsでマウントする

NASをautofsでマウントする

autofsを使い始めたのは1993年ぐらいで、なんだかとっても昔のことだ。そもそも今どき利用している人がいるのか、ちょっと自信がない。ただ、今でもちゃんとautofsはメンテされているのだから、きっと需要はあるのだろう。そういうわけでautofsの紹介と導入手順を説明する。

934

autofsとは

ディスクをマウントするときは、通常/etc/fstabにエントリを書く。このエントリは永続的なもので、頻繁に付けたり外したりすることは想定されていない。通常のディスクは固定的なものなので、それで特に問題は起こらない。

NASのようなネットワークディスクを考えてみよう。このようなディスクは容量が大きく大量のデータを保存することには向いているが、アクセス頻度はそれほど高くない、という場合がある。たとえばバックアップ用の領域とか、フォトストレージのように、撮った写真を格納するとか写真を閲覧するときにアクセスするとかなどの場合だ。つまりユーザがコンソールに向き合っているときしか利用されず、それ以外のときはアクセスがない、というようなことがNASでは起こりうる。こういう類のネットワークディスクを/etc/fstabに書くと、マウントを維持するコストもかかるし、ネットワークが切れた時やプロトコルに異常が発生したときに、余分な障害に悩まされる原因になる。

autofsはマウントポイントを監視し、アクセスがあったときに自動的にマウントを処理してくれるデーモンだ。そして一定時間アクセスがなく、busyでないデバイスを自動的にアンマウントしてくれる。これを使うと、データストアやバックアップ的に使っているNASを、利用するときだけ自動的にマウントできるようになる。

autofsのインストール

まずパッケージをインストールする。

dnf -y install autofs

autofsの設定は/etc/autofs.confにあるが、変更するべき個所はほとんどない。デフォルトのままでよいと思う。強いて言えばtimeoutぐらいだろうが、長く取っても意味はない。

次に/etc/auto.master.d/direct.autofsを以下の内容で作成する。

/-  /etc/auto.direct

次に/etc/auto.directを作る。内容はマウントしたいエントリポイントを記述したものだ。以下の例はWindowsと共有することを前提にフォーマットしたQNAPのドライブをCIFSでマウントするときのエントリだ(要するに自宅の環境の例をメモしたものだ)。1行は3つのフィールドからなる。マウントポイント、mountに渡すオプション、マウントするディスクソースだ。

/var/mnt/qnap-disk/drive -fstype=cifs,rw,iocharset=utf8,file_mode=0644,dir_mode=0755,credentials=/home/north/.credentials.txt,uid=north,gid=north,vers=2.1 ://qnap-disk/drive

credentialsはCIFSマウントするときの認証キーを記述したファイルを指定している。qnap-diskはQNAPのホスト名で、名前がIPアドレスに解決できるようになっていればよい(なんならIPアドレスでもよい)。driveはボリューム名に相当する。他のパラメータはお好みで調整してほしい。

蛇足だが、エントリを書けばどんなタイプのディスクでもマウントできる。NFSでもいいし、cdromでもいい。

ダイレクトマップの設定ができたらautofsを起動する。

systemctl enable autofs
systemctl start autofs

もし/etc/auto.directを更新したら、autofsをリロードするのを忘れないようにすること。さもないと変更は反映されない。

systemctl restart autofs

マウントポイントとsymlink

autofsを使うとき、自分はマウントポイントを/var/mnt/<マシン名>/<ボリューム名>で統一するようにしている。25年以上前、そういう風に教えられたので何となく習慣づいてしまったのだ。auto.directでは統一的に/var/mntにエントリを集めておき、ユーザがアクセスするためのエントリはsymlinkで作るようにする。たとえば

ln -s /var/mnt/qnap-disk/drive $HOME/photo-storage

のようにしておけば、ユーザがphoto-storageにアクセスしたときに自動的にマウントが働くようになる。アクセスが途絶えてtimeout時間が過ぎるとアンマウントされる。

参考リンク