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 とは完全におさらばですね。
キーワード:
参照:[本日のメニュー]