ssh-fs と autofs を組み合わせてリモートストレージを必要な時だけマウントする
某VPSサービスがそこそこの容量を貸してくれるので、ひ弱な RaspberyPi のセカンドストレージとして使おうと思ったが、ネットワークが不安定なのか ssh-fs ではしょっちゅう応答がなくなってしまうので、使うときだけマウントして、使わないときは自動でアンマウントするようにした。もうだいぶ忘れかけているけど完全に忘れないうちにメモを残しておく。
ssh-fs を使ってリモートのファイルシステムをローカルシステムにマウントする
別のサーバーのファイルシステムをマウントするならnfsが有名だが、インターネット上のサーバーのストレージをマウントする場合にはssh-fsが簡単で便利。
Debian 系列の場合なら
sudo aptitude install sshfs
でインストールできるはず。
http://tech.ckme.co.jp/ssh_sshfs.shtml とかで書かれているように
$ sshfs username@example.com: /home/foo /mnt/point
などとすれば簡単にマウントできる。
しかしながら、この状態で長時間放置していると、アンマウントしていないのに ssh が切断されて、運が悪ければシステムが応答しなくなてしまう。安定した接続が確保できない環境では、使うときだけマウントして、使わなくなったらアンマウントするのが安心。
そこでautofs の出番
autofs は所定のディレクトリにアクセスしに行った時だけファイルシステムをマウントしてしばらく使わないでいると勝手にアンマウントしてくれる仕組み。サーバーの再起動の際にアンマウントが必要だけでつい忘れてしまうとか、USB メモリみたいにしょっちゅう抜き差しするのにアンマウントを忘れてしまうようなときに設定しておくととても便利。
autofs のインストールについては http://kaede.blog.abk.nu/nfs-on-autofs あたりを参考にする。大雑把に書くと以下のような感じ
$ sudo atitude install autofs
でプログラムをインストールした後、 /etc/auto.master を編集して自動マウント・アンマウントの設定をしてゆく。
ssh-fs と autofs の組み合わせ方
autofs と ssh-fs の組み合わせ方がなかなか見つからなかったので記録しておく。
/etc/auto.master に、以下を追加
/media/sakura /etc/auto.sakura.data --timeout=30,--ghost
パスフレーズを空にした公開鍵・秘密鍵を作成して秘密鍵を
/home/localuser/.ssh/keys/sshfs2sakura
に置くと想定する。公開鍵はリモートの /home/remoteuser/.ssh/autofs 内に追記することを想定。この時にローカル側の設定として以下を作成。uid=1000 の権限でマウントする。
music -fstype=fuse,allow_other,uid=1000,gid=1000,reconnect,IdentityFile=/home/localuser/.ssh/keys/sshfs2sakura sshfs\#remoteuser@remotehost:/home/remoteuser/data
使用するユーザーがリモートサーバーにログインしたことがあれば問題はないが、一度も ssh でログインしたことがない場合、 knownhosts の設定についても注意が必要。
この記事を書いていたら以下のようなサイトで詳しく解説してくれているので参考にどうぞ
http://blog.fusic.co.jp/archives/2086/