debian GNU/kFreeBSD で zfs

debian GNU/kFreeBSD で zfs とか raid-z とかをやってみた。

とりあえずバーチャルでの実行です。ディスクは2GBが4台という構成で、1台はシステム用で残りの3台で zfs raid-z の構成にするというのをやってみた。使ったディストリはモチロン debian 6.0 squeeze GNU/kFreeBSD です。まず、1台のドライブにインストールして、そのあと zfsutils でいじくりまわすというやり方です。初めてのトライだったのですが、とりあえず問題も無くできちゃいました。

まず、起動します。そして、SSH でターミナルで作業します。というのも、キーボードのレイアウトが日本語キーボードになっていないから。

GNU/kFreeBSD taruzake 8.1-1-amd64 #0 Tue Jan  4 15:07:39 CET 2011 x86_64

The programs included with the Debian GNU/kFreeBSD system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/kFreeBSD comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Feb  9 20:43:26 2011
gojappe@taruzake:~$

ルートになって作業をします。

gojappe@taruzake:~$ su - root
Password:

まずは、zfsutils のインストールです。zfs のファイルシステムにインストールすると、zfsutils がすぐに使えたのですが、やはり、ufs でインストールすると zfsutils はインストールされないみたいです。(あたりまえか)というわけで zfsutils のインストールです。

root@taruzake:~# aptitude install zfsutils

すると、こんなふうになってすぐ終わります。

The following NEW packages will be installed:
  zfsutils
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/114 kB of archives. After unpacking 279 kB will be used.
Selecting previously deselected package zfsutils.
(Reading database ... 19954 files and directories currently installed.)
Unpacking zfsutils (from .../zfsutils_8.1-4_kfreebsd-amd64.deb) ...
Processing triggers for man-db ...
Setting up zfsutils (8.1-4) ...
Starting ZFS subsystem... zvol swap filesystems.

そしたら、zpool というコマンドで ztank という名前のプールを作成するらしい。このへんはマイコミジャーナルの記事をもとにやってみました。ztank っていう名前じゃないといけないのかな?とか思いつつもその通りにやってみました。

そしたらなんと、ディスクのデバイス名を忘れてしまっていた(パーティションを作成するときに出ていたと思われる)。ちょっといい加減すぎか。そんなわけで、とりあえず、

root@taruzake:~# ls -la /dev | grep disk

とかやってみました。

crw-r-----  1 root    disk    0,  34 Feb  9 20:42 ata
crw-rw----  1 root    disk    0,  90 Feb  9 20:42 da0
crw-rw----  1 root    disk    0,  94 Feb  9 20:42 da0s1
crw-rw----  1 root    disk    0,  95 Feb  9 20:42 da0s2
crw-rw----  1 root    disk    0,  97 Feb  9 20:42 da0s5
crw-rw----  1 root    disk    0,  91 Feb  9 20:42 da1
crw-rw----  1 root    disk    0,  92 Feb  9 20:42 da2
crw-rw----  1 root    disk    0,  93 Feb  9 20:42 da3
crw-r-----  1 root    disk    0,   3 Feb  9 20:42 geom.ctl
crw-rw----  1 root    disk    0,  85 Feb  9 20:42 pass0
crw-rw----  1 root    disk    0,  86 Feb  9 20:42 pass1
crw-rw----  1 root    disk    0,  87 Feb  9 20:42 pass2
crw-rw----  1 root    disk    0,  88 Feb  9 20:42 pass3
crw-rw----  1 root    disk    0,  89 Feb  9 20:42 pass4

これで、da0 っていうのが、システムをインストールしたディスクで、da1 da2 da3 がこれからraid-z にしようとしているディスクだろうと見当がつきます。こんないい加減なやり方でいいんだろうか?っていうか結果的にできたんだからいいんじゃね。

てなわけで、プールの作成です。

root@taruzake:~# zpool create ztank raidz da1 da2 da3

なんか簡単すぎじゃない。あっと言う間に終わってるし。そこで、zpool のコマンドを試してみる。

root@taruzake:~# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
ztank  5.97G   141K  5.97G     0%  ONLINE  -

なるほど、2GBが3つだから6GBか。って、あたりまえ。

root@taruzake:~# zpool status
  pool: ztank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        ztank       ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0
            da3     ONLINE       0     0     0

errors: No known data errors

おっ!エラーが!!じゃない。エラーが無いっていう意味か。どうも errors という文字に敏感になってしまっている。

お次は ztank というプールに storage というファイルシステム?を作ります。

root@taruzake:~# zfs create ztank/storage

そうしたらディレクトリを作って、そこへマウントポイントを変更してあげます。

root@taruzake:~# mkdir /home/nas
root@taruzake:~# zfs set mountpoint=/home/nas ztank/storage

あらら、これもあっと言う間に終わってしまう。linuxで長い時間待たされてソフトウェアレイドをやってた時の苦労っていったい何だったんだろうか?

あとは、マイコミジャーナルの記事のとおんなじコマンドを試してみた。

root@taruzake:~# zfs list
NAME            USED  AVAIL  REFER  MOUNTPOINT
ztank           137K  3.91G  25.3K  /ztank
ztank/storage  24.0K  3.91G  24.0K  /home/nas
root@taruzake:~# zpool iostat
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
ztank        219K  5.97G      0      0     38    879
root@taruzake:~# zfs upgrade
This system is currently running ZFS filesystem version 3.

All filesystems are formatted with the current version.
root@taruzake:~# zpool upgrade
This system is currently running ZFS pool version 14.

All pools are formatted using this version.

とりあえず、/home の中を見てみる。

root@taruzake:~# ls -la /home
total 8
drwxr-xr-x  4 root    root    512 Feb  9 21:05 .
drwxr-xr-x 21 root    root    512 Feb  9 20:57 ..
drwxr-xr-x  2 gojappe gojappe 512 Feb  9 20:41 gojappe
drwxr-xr-x  2 root    root      2 Feb  9 21:04 nas

ついでに、df

root@taruzake:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/da0s1             1890638    433388   1306000  25% /
devfs                        1         1         0 100% /dev
linprocfs                    4         4         0 100% /proc
/sys                         4         4         0 100% /sys
fdescfs                      1         1         0 100% /dev/fd
tmpfs                   912296         4    912292   1% /lib/init/rw
ztank                  4103141        24   4103117   1% /ztank
ztank/storage          4103141        24   4103117   1% /home/nas

おっ!/home/nas が4GBになってる。成功っぽい。ちょっと嬉しい。

バーチャルでも速くなるのか、100MBのファイル作成で試してみる。

root@taruzake:/home# time head -c 100m /dev/zero > 100mb

real    0m3.065s
user    0m0.041s
sys     0m2.011s
root@taruzake:/home/nas# time head -c 100m /dev/zero > 100mb

real    0m1.475s
user    0m0.011s
sys     0m1.242s

結構、理論値にいってるみたいだ。ついでにランダムだと。

root@taruzake:/home# time head -c 100m /dev/urandom > 100mb

real    0m4.997s
user    0m0.000s
sys     0m4.465s
root@taruzake:/home/nas# time head -c 100m /dev/urandom > 100mb

real    0m1.801s
user    0m0.000s
sys     0m1.795s

これって結構イケテル気がします。簡単だし。mdadm とは完全におさらばですね。

更新日時:2011/02/09 21:31:53
キーワード:
参照:[本日のメニュー]
このページは凍結されています。