LoginSignup
5
5

More than 1 year has passed since last update.

autofsによるファイルシステムへの自動マウント

Last updated at Posted at 2022-03-14

Introdaction

解析用データは基本的にNASにおいてあり,計算マシンのUbuntuからアクセスする際に毎回マウントするのは面倒であり,自動化を図りたい。方法としては,まずfstabによるシステム起動時の自動マウントが挙げられる。しかしながら,fstabではNASにアクセスしていないときでもマウント対象へファイルシステム向けのリソースが消費されるため,システムが1度に多くのシステムへのマウントを維持している場合はシステムのパフォーマンスに影響を与える可能性がある。また,障害などによりNASへの接続が切れてしまっていたり設定ミスによってマウントができない場合,システムの起動に失敗してしまうことがある。

そこで今回は,autofsを利用する。autofsでは,必要になった際ににアクセスすると自動的にマウントしてくれる。また,しばらくアクセスがないと自動的にアンマウントもしてくれる。これらにより,リソースを適宜節約できる。

本記事の趣旨

自分のための覚え書きである。
詳細などは他によくまとまったページがあるので,これを参照されたし[ref1, 2, 3, 4]。

パッケージインストール

まずは必要なパッケージを用意する

terminal
$ sudo apt install autofs

cifs-utilssmbclientがまだインストールされていないのであれば,これらのパッケージも入れる。

設定

方針

ホスト名hogeというNASで共有設定されているpiyoというフォルダにアクセスする際に,自動的に/mnt/下にマウントされるように設定する。

流れ
Step 1. マスタマップにエントリを追加
Step 2. マップファイルを編集(作成)
Step 3. 認証ファイルの作成
Step 4. 設定の反映

Step 1. マスタマップにエントリを追加

主要設定ファイルとして/etc/auto.master (マスターマップ) が用意されている。このマスターマップファイルには,autofs により制御されるマウントポイント,それに対応する設定ファイル,または自動マウントマップと呼ばれるネットワークソースが記載される。記載のフォーマットは,mount-point map-name optionsであり,今回の場合はmount-pointが/mnt/hoge/なので以下のようになる。

/etc/auto.master
/mnt/hoge/ /etc/auto.smb-hoge --timeout300

上記の例で示した末尾のオプションでは,自動的にアンマウントするまでの時間を指定している。オプションの詳細はここでは割愛する。次に,マップファイル/etc/auto.smb-hogeを用意してやる必要がある。

Step 2. マップファイルを編集(作成)

マップファイルでは,個々のマウントポイントのプロパティを設定する。なお,マウントポイントの ディレクトリが存在しない場合,自動マウント機能はディレクトリを作成する。指定したタイムアウト期間中にアクセスがない場合,自動的にアンマウントされ,当該ディレクトリは削除される。しかし,自動マウント機能が実行されたときにマウントポイントのディレクトリが存在している場合は,アンマウント時に削除されることはない

今回はマップファイル/etc/auto.smbをベースとして新たなマップファイル/etc/auto.smb-hogeを作成・編集する。元ファイルに追記していく方針でも良いのだが,個人的にはオリジナルとは隔離したい。マップファイル名は好きなものを付ければよい。

~/
$ sudo cp /etc/auto.smb /etc/auto.smb-test

auto.smb-hogeの中身を確認していく。中に以下のような記載がある。

/etc/auto.smb-hoge
key="$1"
opts="-fstype=cifs"
# 中略
creds=/etc/creds/$key

if [ -f "$creds" ]; then
    opts="$opts"',uid-$UID,gid+$GID,credentials='"$creds"
    smbopts="-A $creds"
else

入力引数の$1 には,ホスト名が入る。今回の例ではNASのhoge に該当する。optsはmount.cifsのオプション設定である。アクセス権限を設定したい場合は,username, password, domainなどの情報を適宜指定してやればよい。ただ,上記if分の部分で,/etc/creds/下にホスト名hogeと同じ名前の認証ファイルがあれば,その中に記述されている権限情報が自動的に指定されるようになっている。そのため,必要があれば認証ファイル/etc/auto.creds/hogeを作成する。

Step 3. 認証ファイルの作成

アクセスの際に認証が必要ない場合は,この手順はスキップする

アクセス権限が制限されている場合は,認証ファイルの作成を行う。
以下のように/etc/auto.creds/hogeに認証に必要な情報を記載する。

/etc/auto.creds/hoge
username=ユーザー名
password=パスワード
domain=ドメイン名

適宜必要な情報に整えること。

Step 4. 設定の反映

あとは,サービスを再起動して設定を反映させる。

$ service autofs restart

このあと,/mnt/hoge/にアクセスして共有フォルダpiyoが自動マウントされることを確認する。

$ ls -la /mnt/hoge/
 piyo
$

※ローカルストレージを自動的にマウントしたい場合

例えばOSやアプリケーションとは異なるストレージにデータを保存したい場合,ドライブを別途積むことがある(e.g., Dドライブ)。これも自動的にマウントしてやる場合,autofsのマップの記載が変わる。マップの一般的な形式は,mount-point options locationであり,これに準ずればよい。

例えば,ファイルシステムext4のローカルストレージ(UUIDfoo-bar)をマウントポイント/mnt/hogehoge/にマウントしたいなら,

/etc/auto.hogehoge
hogehoge -fstype=ext4 :/dev/disk/by-uuid/foo-bar

とすればよい。ただしこのとき,/etc/auto.masterのマスターマップには,/mnt /etx/auto.hogehoge --timeout=300のように追記する必要がある。

locationでは,ディレクトリではなく,個体を一意に識別するための識別子であるUUID(universally unique identifier)を指定している。これは,ディスクの認識順序は起動時に代わる可能性があるため(当該ディスクが/dev/sdcだったのに次回の起動時には/dev/sdbになっていたりする)である。ディスクの情報を確認するにはfdisk -lなどのコマンドが使える。UUIDによるマウントの参考になりそうなページはこのあたり[ref5, 6]。

References

  1. /etc/fstab へのファイルシステムの追加,システムデザインガイド34.8.2.,8,Red Hat Enterprise Linux
  2. autofs のしくみ,第31章 リモートファイルシステムリファレンスへのアクセス,Solaris のシステム管理 (第 3 巻)
  3. autofsを用いてHDD/SSD/USBメモリを起動時に自動マウントする方法(Debian)
  4. Qiita-Windows の認証付き共有フォルダを Ubuntu で自動マウント
  5. Qiita-Ubuntu 起動時にディスクをマウントする
  6. Qiita-uuidによるデバイスのマウント
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5