Introdaction
解析用データは基本的にNASにおいてあり,計算マシンのUbuntuからアクセスする際に毎回マウントするのは面倒であり,自動化を図りたい。方法としては,まずfstab
によるシステム起動時の自動マウントが挙げられる。しかしながら,fstabではNASにアクセスしていないときでもマウント対象へファイルシステム向けのリソースが消費されるため,システムが1度に多くのシステムへのマウントを維持している場合はシステムのパフォーマンスに影響を与える可能性がある。また,障害などによりNASへの接続が切れてしまっていたり設定ミスによってマウントができない場合,システムの起動に失敗してしまうことがある。
そこで今回は,autofs
を利用する。autofsでは,必要になった際ににアクセスすると自動的にマウントしてくれる。また,しばらくアクセスがないと自動的にアンマウントもしてくれる。これらにより,リソースを適宜節約できる。
本記事の趣旨
自分のための覚え書きである。
詳細などは他によくまとまったページがあるので,これを参照されたし[ref1, 2, 3, 4]。
パッケージインストール
まずは必要なパッケージを用意する
$ sudo apt install autofs
cifs-utils
,smbclient
がまだインストールされていないのであれば,これらのパッケージも入れる。
設定
方針
ホスト名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/
なので以下のようになる。
/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の中身を確認していく。中に以下のような記載がある。
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
に認証に必要な情報を記載する。
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/
にマウントしたいなら,
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]。