ZFS on SDHC

私のPC環境は以下のとおりです。

PC:Dell Inspiron mini 9
OS:Ubuntu Linux 8.10
CPU:Atom 1.6 GHz
Mem:2 GB
HDD:SSD 8 GB

SDHC スロットが付いているので SDHC を突っ込んで使っています。

Linux では ZFS が使えませんが、FUSE 経由で使えるとのことなので
(FUSE について理解していませんが)
グーグリングしながら我が Ubuntu にインストールしてみました。

※なんか、8.10 では gcc 関連のエラーが出てしまいますので Workaround が必要です。

・まず、zfs-fuse 本体をダウンロードしておきます。

zfs-fuse
https://developer.berlios.de/projects/zfs-fuse/

・解凍します

tar jxf zfs-fuse-0.5.0.tar.bz2

・INSTALL を見ます

cat INSTALL

・必要なものをインストール(apt-get) or ダウンロードします

* fuse, fuse-utils and/or libfuse (and associated -dev packages)
* libaio and libaio-dev (or libaio-devel) packages.
* zlib (and associated headers usually provided by -dev package).
* SCons (packaged in most distributions)

・次のものはソースファイルからコンパイルして /usr/local にインストールする必要があるかも

* zlib (and associated headers usually provided by -dev package).
http://zlib.net
* fuse-2.7.4
http://fuse.sourceforge.net/

・上から順にインストール(apt-get install)すると吉 (たぶん依存関係でこうなるはず)

scons
libaio1
libaio-dev
libc6
libc6-dev

・zlib, fuse を configure, make, make install します。

./configure --prefix=/usr/local ぐらいはしておきましょう

zfs-fuse-0.5.0 の中に src ディレクトリがありますので cd します

cd src

コンパイルします

scons

・で、ここでエラーで止まっちゃいますので Workaround を発動させます

src ディレクトリに SConstruct ファイルがあり、その 14行目に CCFLAGS に関する記述があります。

その行の中の「-Werror」を削除します。

env['CCFLAGS'] = Split('-pipe -Wall -Werror -std=c99 -Wno-switch -Wno-unused -Wno-missing-braces -Wno-parentheses -Wno-uninitialized -fno-strict-aliasing -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DTEXT_DOMAIN=\\"zfs-fuse\\" -DLINUX_AIO')


・そのあとは scons, scons install で OK です。

※いい忘れましたが、必要に応じて sudo して下さい。

・各コマンド類は /usr/local/sbin に入っていますが、zfs-fuse デーモンが自動的に起動するわけじゃないので、/etc/init.d/zfs-fuse などを作成して以下の用に記述しておきます。

/usr/local/sbin/zfs-fuse
sleep 2
/usr/local/sbin/zpool import
sleep 2
/usr/local/sbin/zfs mount -a

※sleep はお好みで挿入下さい。
※わたしは zpool のみで運用してますので最後の zfs mount -a は zfs 操作してる人は必須です。

zpool を import -a とかで全部インポートとか・・・できないですよね。

・では早速 zpool を作ってみましょう。

cd /usr/local/sbin
./zfs-fuse
./zpool create

ex) ./zpool create sdhc-pool /dev/sdb

・必要に応じて zfs を作成しましょう。

ex) ./zfs create /

※zpool を作ると / という名のディレクトリにマウントされますが、
 zfs create 時の の前に / は必要ありません。
 具体的には・・・

 ○ zfs create sdhc-pool/zfs
 × zfs create /sdhc-pool/zfs

 実際にコマンド打ってみるとよくわかります。