Autofs
Autofsの動機
動機は一言で言うとマウントすることにかかるリソースの効率化である。
ファイルシステムをマウントする方法はいくつかある。1つはmountコマンドを用いてシェル上で対話的に行う方法である。以下はxfsでフォーマットされたデバイス/dev/sda1を、/mntというマウントポイント(アクセスするディレクトリのパス)にマウントする例である。
# mount -t xfs /dev/sda1 /mnt
これだと再起動した場合はマウントが解除されるので、マウントが永続するようにするように/etc/fstabというファイルに記載する*1。
# cat /etc/fstab (略) /dev/sda1 /mnt xfs defaults 0 0
上記いずれのやり方でも、マウントされたファイルシステムはアクセス有無によらずマウントされた状態である。これだとマウントを維持するにかかるリソースを常に消費する。アクセスがあったときだけ自動的に(オンデマンドで)マウントすることができればマウント維持にかかるリソースを効率化できる。これがAutofsの動機で、実現することである。
使い方
Autofsは、autofsをインストール・有効化し、マウントに関する設定ファイルを記載することで利用できる。
# yum install autofs (略) # systemctl enable autofs --now (略)
マウントに関する設定ファイルではマウントポイントに関する指定をする。/etc/auto.masterというファイルに基本の設定を記載しつつ、他の設定ファイルを組み合わせる。設定ファイルでは一行に1エントリを記載する。書き方は直接マップと間接マップという2通りがある。これについては各々節を分けて後述する。
Autofsの利用例を示す。mountコマンドで表示されないし、umountしても「マウントされていないよ」とメッセージが出るがアクセスはできる*2。
# mkdir /test # mkfs.xfs /dev/sdc meta-data=/dev/sdc isize=512 agcount=4, agsize=66993 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=267969, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 # vi /etc/auto.master / /etc/auto.test # vi /etc/auto.test /test -fstype=xfs /dev/sdc # systemctl restart autofs # cd /test/ # touch hogehoge # ls hogehoge # umount /test umount: /test: not mounted # mount |grep test # mount |grep sdc # cd /test/ # ls hogehoge
直接マップ
直接マップは/-で始まる行で記載する。/-の後にある/etc/auto.directも設定ファイルであり、ここで指定したファイルにマウントポイントとデバイスの設定を記載する。
# cat /etc/auto.master (略) /- /etc/auto.direct (略)
マウントポイント/mnt/synologyにnas1:/volume1/dir1をNFSマウントする設定が記載されている。
# cat /etc/auto.direct /mnt/synology -rw,sync nas1:/volume1/dir1
間接マップ
間接マップでは、/etc/auto.masterにマウントポイントと追加の設定ファイルの情報を記載する。以下はマウントポイント/mntに関する設定を/etc/auto.mntに記載する例である(直接マップで示した例と同じことを間接マップで実現した例である)。
# cat /etc/auto.master (略) /mnt /etc/auto.mnt (略)
以下のsynologyは/mntからの相対パスを示す。すなわち、この/etc/auto.masterと/etc/auto.mntを組み合わせることで、/mnt/synologyにnas1:/volume1/dir1をマウントすることができる。
# cat /etc/auto.mnt synology -rw,sync nas1:/volume1/dir1
間接マップでのワイルドカードの利用
マウント設定のエントリ数が多い場合、一行一行書くのは大変なのでワイルドカードを用いて簡略化することができる。
# cat /etc/auto.master (略) /mnt /etc/auto.mnt (略)
*はマウントポイントに関するワイルドカード、&はマウント元に関するワイルドカードである。これによって/mnt/dir1にアクセスしたらnas1:/volume1/dir1が、/mnt/dir2にアクセスしたらnas1:/volume1/dir2が自動マウントされる(もちろんnas1:/volume1/dir1やnas1:/volume1/dir2が存在する前提である)。
# cat /etc/auto.mnt * -rw,sync nas1:/volume1/&
参考にしたもの
https://docs.oracle.com/cd/E19504-01/805-0673/6j0msjnjf/index.html