2013年5月5日日曜日

exFatの外付けドライブを任意のユーザーでマウント


ubuntu13.10で自宅サーバーを立てたときに外付けドライブのところで少しハマったので、備忘録として書いてみます。

ubuntuサーバーで自宅内のメディア配信を実現するに当たり、まずはメディアファイルをサーバーに格納しないといけない。しかし、これをSambaを使ってネットワーク経由でやろうとするとものすごく時間がかかる。

なので、今回のミッションは、

・Windowsでメディアファイルを外付けドライブに直接格納する。(Macでも出来ると尚良し)
・書き込みをした外付けドライブをUbuntuに繋げてSambaやMediatombで共有する。

ということ。

もちろんSambaからは参照・更新・追加・削除ができること。

外付けドライブは、2.5インチのSATAディスクをUSB3.0の外付けドライブとして利用できるオウルテックのケースを使ってみた。

http://www.amazon.co.jp/%E3%82%AA%E3%82%A6%E3%83%AB%E3%83%86%E3%83%83%E3%82%AF-USB3-0%E5%AF%BE%E5%BF%9C2-5inch-%E7%94%A8%E5%A4%96%E4%BB%98%E3%81%91HDD%E3%82%B1%E3%83%BC%E3%82%B9-OWL-EGP25-U3/dp/B0052UWXOO/ref=sr_1_3?s=computers&ie=UTF8&qid=1367711224&sr=1-3&keywords=usb3.0+2.5+%E3%82%B1%E3%83%BC%E3%82%B9

まず外付けドライブのファイルシステムをNTFSでフォーマットにしてみた。しかし、ubuntuでマウントはできるが、パーミッションの変更ができない。「そんな機能はない!」というエラーメッセージが出てしまう。やはりWindowsの規格なのでLinuxと親和性が低いのかもしれない。それに、Macとのやり取りでもNTFSは不便なので、早々にNTFSは諦めた。(後で気づくけど、もしかしたらNTFSのままでも行けたかもしれない・・・が、まあそれでも色々問題が起きた気がするな)

じゃあなんのファイルシステムなら良いのか

ubuntu13.10は標準ファイルシステムがext4(ブート領域はext2)なので、ext4を考えたが、Windowsで読み込む環境がまだ整備されていない。

ならばext3ならどうかと思って、実際に試してみたが、Windowsで読み書きするための手間が耐えられなかった。出来るんだろうけど、、、やはりWindowsの標準機能で読み書きできた方がスマートだろう。フリーのツールの操作性にはどうも慣れない。

ということで、exFatを考えてみた。これならWindowsとMacの間でも標準機能で読み書きできるし、ubuntu13.10でもマウントできる。(ただし、追加パッケージをインストールしておくことが必要)

実際に試してみたら、Windowsの読み書きは普通のドライブと同じようにできる。しかし、ubuntuにマウントしたところ、NTFSと同じ現象が・・・マウントしたexFatのパーミッション変更ができない。。。

デフォルトのマウントだと、パーミッション的にrootのユーザは参照・追加しかできない状態になっている。

しかし、試行錯誤した後、単に自分がマウントの知識が足りないだけだとわかった。
マウントしてからはパーミッション変更できないが、マウント時にパーミッションを制御すればよかっただけだ。

具体的には /etc/fstab にこんなことを書けばいい。

/dev/sdb1       /home/share     exfat-fuse      async,auto,dev,exec,gid=65534,rw,uid=65534      0       0

gidはグループID、uidはユーザID。65534はそれぞれnogroupとnobodyを指す。Windowsで言うところのEveryone。

これで誰でも読み書きOKな権限が付いてマウントできるので、これでSambaからアクセスするときに読み書きや更新削除を自由に行うことが出来る。ふー

ちなみに、これならNTFSでもやれたような気がする。
しかし、Macとの親和性やLinux側でのNTFSサポートの状況を考えると、やはりexFatが正解な気がする。
確かMSってNTFSの仕様を完全に公開してないんじゃかったっけ?

ちなみにroot権限でのマウントのままでも、Sambaでアクセスしてきたユーザをrootとみなすように設定すれば、それでも大丈夫だったが、セキュリティ的に非常にイケてない気がするので、こっちの方法の方が良いと思う。

まあこれで重たいメディアファイルの格納は、ディスクの物理的な接続をUbuntuとWindows間で変えてやって、ネットワーク越しではなく直接アクセスしてやることで、USB3.0のスピードで実施できるから、大分自宅サーバのファイル管理が楽になるな。ちなみにファイル書き込み速度は、Sambaを使って自宅サーバに使っているLenoveS10eの無線LAN経由で書き込む場合だと1.5MB/Sぐらい、USB3.0だと 80MB/Sぐらい。(USB2.0だと20MB/Sぐらい)なので、無線を使う場合のおよそ50倍強のスピードでファイルを移動できる。有線LAN経由と比較してもおよそ10倍ぐらいのスピードだ。

P.S.
ちなみにS10eの無線LANをubuntu13.10(Kernel 3.8.0-19)で使う場合はBroadcomのサイトからドライバのソースを取ってきて、make , make & installでインストールすればOK。そのままやると対応するLinuxカーネルじゃないのでエラーが出るけど、その辺の対処の仕方は海外のサイトとかで結構情報がある。Linuxカーネルの違いなのかわからないけど、Centos5でインストールした時の3倍ぐらいのスピードが出ている。

【参考】
・マウントオプションの話
http://unixlife.jp/unixlife/linux/sys-fstab.jsp
・ubuntuでのexFatマウントの話
http://linux-user.hatenablog.com/entry/2013/01/31/195733


0 件のコメント:

コメントを投稿