2012年4月10日
Oracle Solaris 11から、標準ファイルシステムがUFSからZFSに変更になり、/(ルート)ファイルシステムはZFSのみ使用することができます。
ZFSはOracle Solaris 10でも使用することができたのですが、みなさん、すでにお使いでしょうか?UFSと比べて、機能も充実しており、慣れるとZFSの方が簡単に感じられると思います。そこで今回はZFSの設定や機能について、前回作成したOracle Solaris 11の環境を利用してご紹介したいと思います。 なお、ZFSの概要はこちらをご覧ください。
ZFSの設定をするには、まずはストレージプールを作成します。ストレージプールに登録するディスクをformatコマンドで確認しましょう。
root@s11-0:~# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c2d0
/virtual-devices@100/channel-devices@200/disk@0
1. c2d2
/virtual-devices@100/channel-devices@200/disk@2
2. c2d3
/virtual-devices@100/channel-devices@200/disk@3
Specify disk (enter its number):
c2d0は前回Oracle Solaris 11をインストールしたディスクですので、c2d2とc2d3を使ってストレージプールを作成します。
ストレージプールはzpoolコマンドを使用して作成します。今回はプール名をpool1としました。
root@s11-0:~# zpool create pool1 c2d2 c2d3
'pool1' successfully created, but with no redundancy; failure of one
device will cause loss of the pool
プール作成時に何やら表示されました。これはRAIDの指定をしなかったので、「冗長性がありませんよ」という警告です。Solaris 10では表示されなかったのですが、Solaris 11から表示されるようになりました。RAIDの指定をしないと、ストライピング(RAID 0)になります。
なお、zpoolコマンドでプールを作成するときに、以下のように指定すると、ミラー構成になります。
root@s11-0:~# zpool create pool1 mirror c2d2 c2d3
設定できるRAID構成にはmirrorのほかに、シングルパリティ(RAID 5相当)の”raidz”、ダブルパリティ(RAID 6相当)の”raidz2”、トリプルパリティの”raidz3”があります。
プールを作成したら、zpool statusコマンドで状態を確認しましょう。
root@s11-0:~# zpool status pool1
pool: pool1
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
pool1 ONLINE 0 0 0
c2d2 ONLINE 0 0 0
c2d3 ONLINE 0 0 0
errors: No known data errors
ストレージプールを作成したら、今度はファイルシステムを作ってみましょう。ファイルシステムはzfsコマンドで作成します。
先ほど作成したpool1にfilesys1とfilesys2を作成します。
root@s11-0:~# zfs create pool1/filesys1
root@s11-0:~# zfs create pool1/filesys2
作成したら、zfs listコマンドで状態を確認しましょう。
root@s11-0:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pool1 166K 19.6G 33K /pool1
pool1/filesys1 31K 19.6G 31K /pool1/filesys1
pool1/filesys2 31K 19.6G 31K /pool1/filesys2
rpool 5.08G 9.44G 73.5K /rpool
rpool/ROOT 1.98G 9.44G 31K legacy
・・・省略・・・
ZFSの特長の一つとして、ファイルシステムを作っただけで、マウントポイントが自動で作成されて、そこにマウントされます。UFSで必要なnewfs/mountコマンド相当のことがzfs createコマンドだけで実施できます。
root@s11-0:~# mount | grep pool1
/pool1 on pool1 read/write/setuid/devices/rstchown/nonbmand/exec/xattr/atime/dev=391000d on 水 2月 22 19:13:23 2012
/pool1/filesys1 on pool1/filesys1 read/write/setuid/devices/rstchown/nonbmand/exec/xattr/atime/dev=391000e on 水 2月 22 19:14:41 2012
/pool1/filesys2 on pool1/filesys2 read/write/setuid/devices/rstchown/nonbmand/exec/xattr/atime/dev=391000f on 水 2月 22 19:14:52 2012
このようにZFSは、zpool/zfsコマンドのみで簡単に作成することができます。
ファイルシステムが簡単に作れましたので、Solaris 11の新機能である「重複排除機能」を試してみたいと思います。まずはzfs setコマンドで重複排除機能をonにします。
root@s11-0:~# zfs set dedup=on pool1/filesys1
root@s11-0:~# zfs set dedup=on pool1/filesys2
テストで使うデータを各ファイルシステムに配置します。ここでは、Solaris 11のText InstallerのISOイメージを配置しました。
root@s11-0:~# ls -lh /pool1/filesys1
total 1078095
-rw-r--r-- 1 root root 526M 2月 22日 19:17 sol-11-1111-text-sparc.iso
root@s11-0:~# ls -lh /pool1/filesys2
total 1078089
-rw-r--r-- 1 root root 526M 2月 22日 19:18 sol-11-1111-text-sparc.iso
では、本当に重複データが排除されているのか見てみましょう。重複排除機能はプール単位で各ファイルの共通ブロックを共有しますので、重複排除率はプール単位で確認します。
root@s11-0:~# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
pool1 19.9G 502M 19.4G 2% 2.10x ONLINE -
rpool 14.8G 4.98G 9.77G 33% 1.00x ONLINE -
約500MBのファイルをpool1に二つ配置しましたが、使用されている容量は1GBではなく、
約500MB(=19.9G-19.4G)になっていることが確認できます。また、DEDUP(重複排除率)の値を見てみると、2.10xということで、約半分になっていることが確認できます。
同じファイルを配置しましたので当然の結果ですが、重複排除機能が働いていることがわかると思います。
今回保存したISOイメージが、AからEまでの6つのブロックで構成されていたとすると、重複排除機能がonの場合とoffの場合を図にすると、以下のようになります。同一ファイル内でも同じブロックの場合は共有されます。
重複排除機能と似た機能で圧縮機能もあります。これはSolaris 10から実装されていた機能です。この圧縮機能の効果も確認してみましょう。
まずはファイルシステムを作成します。
root@s11-0:~# zfs create -o compress=on pool1/filesys3
今回はファイルシステム作成時に-oオプションを指定して、圧縮機能をonにしました。では、同じISOイメージをコピーします。
root@s11-0:~# ls -lh /pool1/filesys3
total 865721
-rw-r--r-- 1 root root 526M 2月 22日 20:04 sol-11-1111-text-sparc.iso
どのくらい圧縮されているか確認しましょう。
root@s11-0:~# zfs list pool1/filesys3
NAME USED AVAIL REFER MOUNTPOINT
pool1/filesys3 423M 18.7G 423M /pool1/filesys3
root@s11-0:~# zfs get compressratio pool1/filesys3
NAME PROPERTY VALUE SOURCE
pool1/filesys3 compressratio 1.18x -
526MBのファイルが423MBに圧縮されていることがわかります。圧縮比は1.18xということで約20%小さくなっていますね。
今回の結果では重複排除機能の方がディスクの使用量を節約する効果がありましたが、もちろん、ファイルの種類によっては、圧縮機能の方が効果がある場合もあります。
なお、重複排除機能と圧縮機能を併せて使用することもできます。
ZFSは豊富な機能が標準で実装されていますが、設定や基本的な使い方は簡単です。zpool create/zfs createコマンドだけで使うことができます。
みなさんもぜひZFSを使ってみてください。
応援メッセージはtwitterにて、ハッシュタグ #fjsparc までお願いします。