« 宮崎 里司: 「外国人力士はなぜ日本語がうまいのか―あなたに役立つ「ことば習得」のコツ」 | メイン | BT接続のテンキー、FKBT22MBを試す »

2008年6月16日 (月)

[技術メモ]: FreeBSDでSSHFSを試す

先日、 Emacsで Trampを使うという話を書いた。この目的は、リモートにあるファイルを Emacsで編集したりする、ということなのけれど、 sshfsというのがこの目的、というよりリモートのファイルにアクセスを必用とする作業全般には適しているらしい、という話を小耳に挟んだので、早速調べてみた。これ、簡単に言えば sshでアクセスできるホストの任意のディレクトリを、 sshfsを実行するホストの任意のマウント・ポイントにマウントしてくれて、その後はさもローカルのディレクトリかのようにリモートのディレクトリを扱うことができる、というもの。

FreeBSD Ports Collectionのインデックスを検索すると、 fusefs-sshfsというのが出てきたので、とりあえず入れてみた。 (FreeBSD 6.x以降で使えるらしい。) が、入れただけだとどうしていいものやらよく分からなかったので、ちょっとあれこれ調べてみた。以下、分かったことなど。

インストール


sudo portinstall fusefs-sshfs

fusefs-*を使うための設定

/etc/rc.confに以下を記述して、 fuseで必用な kernel moduleがロードされるようにする:


enable_fuse="YES"

これで次にリブートすれば自動的にロードされるが、それまではロードされないので手動でロード:


sudo /usr/local/etc/rc.d/fuse start

一般ユーザが実行できるようにする

/dev/fuseへのアクセス許可

何も設定しないと、 /dev/fuse* というディバイスには root:operatorしかアクセスできない。 sshfsを使うユーザを operatorグループに入れれば済む話ではあるが、あまりスマートではないので、 devfsの設定で /dev/fuse* を 666にする。

  1. /dev/devfs.rulesに以下を記述:
    
    [devfsrules_world_writablle=10]
    add path 'fuse*' mode 666
    
  2. /etc.rc.confに以下を記述:
    
    devfs_system_ruleset="devfsrules_world_writable"
    
  3. 本来ならばここで
    sudo /etc/rc.d/devfs restart
    を実行すればよいはずなのだが、なぜか 手元の FreeBSD 6.2-STABLE (ちょっと前のやつ) だとここでフリーズしてしまったので、やむなく再起動。再起動後は特に問題ない模様。

一般ユーザでも マウントできるようにする

sudo sysctl vfs.usermount=1
とすればとりあえず使えるようになるが、 OSを再起動するとこの設定が失われるので、 /etc/sysctl.confに以下を記述:

vfs.usermount=1

マウントの実行

ここまですれば準備完了。たとえば、 remote.example.comに userという名前のユーザでログインした時のホームディレクトリを、クライアントの /home/user/ssh/remoteにマウントする場合は、
sshfs user@remote.example.com: /home/user/ssh/remote
などとすればよい。

このようにしてマウントすると、後は普通にこのディレクトリの下のファイルにアクセスすることができる。エディタでの編集とか、その他のプログラムによるアクセスについても、概ね問題なさそう。ただし、 tail -f は期待したような動作にはならなかったが、これはもしかするとマウントする時のオプション指定でどうにかなるのかもしれない。

アンマウント

とりあえず使い終わったらアンマウントしておくのが賢明だと思う:

umount /home/user/ssh/remote

問題点

マウントしたままでほったらかしにしておくと、どうもよろしくないようだ。おそらく接続制がなくなったりしたタイミングでおかしなことになっているのではないかと思うが、しばらくほったらかしにしていたマウント・ポイントの下のファイルなどにアクセスしようとすると、アクセスしに行ったまま無反応になってしまうという状態が何度か観測されている。丁度 NFSがおかしなことになった時のような感じといえば、分かる人には分かるのではないだろうか。ということで、 NFSを AMD (Auto-Mount Daemon) で使うような感じで sshfsを使う方法を模索したいと思うのだが、ちょっと時間がないのでとりあえず先延ばし。

後、コマンド・ラインの引数のチェックが甘いのか、いろいろと試している時にとんちんかんなオプションを指定した時も、マウントできたふりをしつつ、実際にはうまく行っていなかったようで、マウント・ポイント以下へのアクセスで固まってしまった。こういうミスを防ぐためにも AMDが使えると便利だと思う。

結論

ちゃんと動いている時は激しく便利。

トラックバック

この記事のトラックバックURL: http://www.trashpot.org/mt/mttbxs9Qqx.cgi/206

コメントを投稿

本文以外の項目は、入力していただかなくてもかまいません。また、入力していただいたメールアドレスは表示されません。

(いままで、ここでコメントしたことがない場合や、 TypeKeyの IDでサインインせずにコメントを書き込む場合は、コメントが表示される前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。その場合は、承認されるまでしばらくお待ちください。)

あわせて読みたい

このページについて

2008年6月16日 12:31に投稿された記事のページです。

前の記事: 「宮崎 里司: 「外国人力士はなぜ日本語がうまいのか―あなたに役立つ「ことば習得」のコツ」
次の記事: 「BT接続のテンキー、FKBT22MBを試す

この記事は、以下のカテゴリーに投稿されました:
  技術メモ
各カテゴリー名をクリックすると、そのカテゴリーに投稿された他の記事を読むことができます。

 Amazon.co.jpアソシエイト
Powered by
Movable Type