VFS (Virtual file system)かな?

最近、NASの種類も増えて、便利になりました。 しかし、Linuxで使おうと思うとNFSに対応していて欲しいと言うことになります。

でも、NFS対応ではないNASではどうしたらよいでしょうか? 基本的にWindowsには対応しているので、 smbclientでCIFSを使って、マウントすることができます。しかし、 Linuxのファイルシステムext2/ext3とは異なりファイル毎のパーミッションの設定ができません。 (マウント時にすべて同じパーミッション設定になる)

NASをバックアップとして使用する場合、パーミッション情報が落ちるのはちょっと痛い。 また、他人に見えないようになっている個人ファイルのパーミッションが 変わってしまうのは嫌だ。NASから情報が漏れるかも知れない…。

そこで、ファイル共有上にVFSを構築して、その上でext2/ext3を作ればいいじゃんとなります。

前提

NAS(NFS非対応)があるとします。テスト環境では、LanDisk-Teraです。

これをLiunxからsmbclientでマウントできるとします。 あらかじめNAS上にバックアップ用のディレクトリmirrorを作り、公開します。 autofsを起動して、以下でアクセスできること。 認証無しの公開にしておくと簡単でしょう。

$ ls /smb/landisk/mirror
もし、できない場合は、
$ smbclient //landisk/mirror
等でアクセスできるかを確認する。

準備

/smb/landisk/mirrorの下にVFS用のファイルを作ります。

$ cd /smb/landisk/mirror
$ dd if=/dev/zero of=ext3_vfs.img bs=1k count=20000
bsはブロックサイズです。1kから8kくらいでしょう。 countはブロック数です。bs x countバイトのファイルシステムができます。 この例では、20MBなので小さなファイルシステムになります。

ループ・デバイスとして関連づけます。rootで行います。

$ su 
# losetup /dev/loop0 ext3_vfs.img

まだ、ファイルシステムが作られていないので、この上にファイルシステムを作ります。

# mke2fs -j -c /dev/loop0 
-jを付けると、ext3のジャーナリングが使えます。

こでは、/dev/loop0 (ext3_vfs.img)がLinuxで扱えるファイルシステムext3 になりました。マウントします。

# mkdir /mnt/vfs
# mount /dev/loop0 /mnt/vfs
後は、他のパーティションと同様に /mnt/vfs が扱えるはずです。

解除

NASなので、ずっとつなぎっぱなしにはできないので、 マウントを解除したり、ループ・デバイスを解除したりしないといけません。

# umount /mnt/vfs
# losetup -d /dev/loop0

応用

同様のことが、USB フラッシュメモリでもできるはずです。


Last modified: Fri Nov 5 14:52:08 JST 2010