ZFSでNFSサーバ

玄柴(KURO-SHEEVA) が手に入りました。

ちょっと大きめなACアダプタぐらいのサイズで、armCPU 1.2G、メモリ 512MB/DDR2、フラッシュメモリ 512MB、というスペックで完全ファンレスLinux-BOXです。
ちなみに、 OSは ubuntu です。

保存領域が 512MBしかないため、今回はOpenSolarisNFSサーバとして使います。

初期状態では、aptの領域が tmpfsだったりしますので、今回は HOMEディレクトリと aptの領域をNFSでマウントします。

OpenSolaris NFSサーバ


$ pfexec zfs create rpool/kurosheeva
$ pfexec zfs create rpool/kurosheeva/home
$ pfexec zfs create rpool/kurosheeva/apt
$ pfexec zfs set sharenfs=on rpool/kurosheeva/apt
$ pfexec zfs set sharenfs=on rpool/kurosheeva/home

Linux NFSクライアント


root# apt-get install nfs-common
root# vi /etc/init.d/rc.local
...
ASYNCMOUNTNFS=no #追加。これがないとブート時のマウントに失敗する
root# vi /etc/fstab
...
#tmpfs /var/cache/apt tmpfs defaults,noatime # コメントアウト
[サーバのIP]:/rpool/kurosheeva/home /export/home nfs soft 0 0
[サーバのIP]:/rpool/kurosheeva/apt /var/cache/apt nfs soft 0 0

ちなみに、rootで作ったファイルは以下に見えてしまいます。(Linux側)


# ls -al /export/home/root/
drwxr-xr-x 3 4294967294 4294967294 12 Sep 4 21:02 kernel-2.6.32.2

4294967294 で検索するといくつか出てきますが、SolarisNFSサーバがOS間の違いをうまく吸収できていないのが原因なのかな?と。

一般ユーザでは問題ないので、とりあえずこのままで使ってみます。


zfs set sharenfs=root=hostname tank/filesystem
とか、uid/gid の問題とかややこしそうなところです。


Solaris
$ id nobody
uid=60001(nobody) gid=60001(nobody) groups=60001(nobody)
Linux
$ id nobody
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)