zfs on linux その1

fuseを使って利用いたものが、ネイティブに使えるというシロモノ。詳しくはぐぐってください。

btrfs RAID10(6T)な自宅サーバのストレージをリプレースするにあたり、この子を使って実容量の向上をたくらんでみることにしました。

注意点はいくつかありますが、念頭においておかないといけないことは、オンラインでRAID自体の再構成はできないということでしょう。
たとえば、4台のRAID-Z(RAID5だとする)で構築したプールに、RAID-Zにディスクを追加するという形で追加することはできません。RAIDアレイ + RAIDアレイ=プール といった形にしかできません。
ですので、冗長性を考慮すると4台RAID-Z + 2台RAID-Z(ミラー)というプール構成になります。
この場合、はじめから7台でRAIDを構成する場合と比べると、1台分が実容量として使用できない無駄なディスクが増えてしまいます。もしやるとしても、すべてRAID-Zで構成した上で、ホットスペアをつけてあげたほうがお得な気がします。

以上のことを踏まえ、実データをコピー後、残りのHDDをかき集めてプールに追加する手順をとるとして、2T4台 + 2T4台構成で構築することにしました。実質使える容量はざっくり12Tになります。

とりあえず今あるデータをコピーするための箱作り。

zfs on linux インストール
Ubuntu12.04はとても簡単です。

sudo su -

#zfsインストール
apt-add-repository ppa:zfs-native/daily
aptitude clean
aptitude update
aptitude install debootstrap ubuntu-zfs
modprobe zfs

#確認する
dmesg | grep -i zfs

zfsのモジュールがロードされていればすぐ利用できる。

RAID-Zの構築(シングルパリティ)

zpool create data raidz /dev/sdb /dev/sdc /dev/sdd /dev/sde

zpool status で容量の確認ができる

続きは6Tのrsyncが終わってからです。

URIとQUERY_STRINGをそのままmod_rewrite

http://hoge.hoge/aaa?bbb=ccc という形を引き継いでRewriteやProxyしたい場合のサンプル。

一行でやる場合。

RewriteRule /(.*)$ http://hage.hage/$1?bbb=%{QUERY_STRING} [p]

$1に /aaa が入り、%{QUERY_STRING} に ccc が入ります。

複数定義したい場合。
URLの形が http://hoge.hoge/aaa?bbb=ccc&ddd=eee だとすると。

RewriteCond %{QUERY_STRING} bbb=(.*)$
RewriteCond %{QUERY_STRING} ddd=(.*)$
RewriteRule /(.*)$ http://hage.hage/$3?bbb=$1&ddd=$2 [p]

$1 ccc
$2 eee
$3 aaa

となる。