autofsとsshfsの組み合わせの覚え書き
たくさんのHDDを積んだファイルサーバを複数台ネットワークで接続して使っているため、autofsとsshfsを組み合わせて使用しております。
結構設定が面倒だったので、自分用に忘れない為の覚え書きとして記します。
検索エンジンとかで調べてもトラブル時の対応とか全然わかんなくて困ったし(苦笑)。
一応Debianでの事例につき、Debian及びUbuntu以外のディストリビューションについては微妙に手順や記述内容が異なるかもしれません。
sshfsをコマンドラインでの実行は
# sshfs -o fuse,allowother user@host:/dir
といった感じ。
ここまでのsshfs自体の導入の説明はしません。上述の様にすぐに接続出来る状態である事を前提にautofsでの設定方法を説明いたします。
autofsがすでにインストールされている段階であるとして
/etc/auto.master の記述は
/foo /etc/foo.sshfs --timeout 0 --ghost
/fooはローカルPCのmount先の1層上のディレクトリを記述。
このディレクトリは存在しない状態で構わない(autofsを動かすと作成され、止めると消されるため)。
foo.sshfsは適当な名前でよい。このファイルの内容についてはこの後説明する。
--ghostは実際にアクセスされるまでmountしない設定。--timeout 0は自動切断をしない。
/etc/foo.sshfs の記述(auto.masterで指定したものであればファイル名は任意でよい。ファイルは644あたりにしておくこと、755などの実行属性が付いていると正常に動作しません)
data --ftype=fuse,allow_other sshfs\#user@host:/dir
先頭のdataが実際にmountされるディレクトリになる。前述のauto.masterで指定した/fooの下層となり、実際には/foo/dataがmount対象となる。
--ftype=fuse,allow_otherはfuseを使用し、他のユーザでもアクセス可能にする意味。他にも読み込み専用であるroなどを付ける場合もある。
sshfs\#user@host:/dirの部分が接続先のホスト名、ログインユーザ名、対象となるホストのディレクトリを示す。要注意事項として、sshfs\#の様に#の前に\(バックスラッシュ)を入れないと、missing hostとなってしまい接続に失敗します。
これで、autofsを開始すれば/foo/dataへアクセスすると自動でmountしてくれるようになります。
なお、autofsでmountさせる場合は、/etc/fstabへの記述をする必要はありません。