autofsを使い始めたのは1993年ぐらいで、なんだかとっても昔のことだ。そもそも今どき利用している人がいるのか、ちょっと自信がない。ただ、今でもちゃんとautofsはメンテされているのだから、きっと需要はあるのだろう。そういうわけでautofsの紹介と導入手順を説明する。
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時間が過ぎるとアンマウントされる。