2012年10月28日日曜日

CentOS 6 と CentOS 5 で ZFS を共用する

CentOS 5 では、ZFS on Linux が使えない (ビルドできない) ので、zfs-fuse を使うよりないのですが、マルチブート環境で、CentOS 6 と共用したいため、そのための設定方法メモです。

zfs-fuse のほうが zpool および zfs のバージョンが低いので、CentOS 6 に ZFS on Linux を導入した環境で、次のようにバージョンを指定してストレージプールを作成すれば、マルチブートで共用できるようになります。
# zpool create -o ashift=12 -o version=23 -O version=4 tank1 /dev/disk/by-id/scsi-SATA_External_Disk_0AL25744_6000092__0_S-part1
# fdisk -u -l /dev/sdd | grep sdd1
/dev/sdd1            2048   125045423    62521688   83  Linux
ここで、ashift=12 は AFT 対応 HDD (物理セクタサイズが 4K の HDD) の場合に指定すると効果があるパラメータですが、zfs-fuse 付属の zpool コマンドでは指定できません。また、上記のようにパーティションを切っている場合は、先頭セクタ番号が 8 の倍数になるように調整しておく必要があります。

ベンチマーク結果を参考に載せておきます。
まず、CentOS 6 + ZFS on Linux 0.6.0-rc11 の場合です。
# uname -a
Linux xxxx 2.6.32-279.11.1.el6.x86_64 #1 SMP Tue Oct 16 15:57:10 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
# zpool get guid tank1
NAME   PROPERTY  VALUE  SOURCE
tank1  guid      4585092805656841166  local
# zpool status
  pool: tank1
 state: ONLINE
status: The pool is formatted using an older on-disk format.  The pool can
 still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
 pool will no longer be accessible on older software versions.
 scan: none requested
config:

 NAME                                                   STATE     READ WRITE CKSUM
 tank1                                                  ONLINE       0     0     0
   scsi-SATA_External_Disk_0AL25744_6000092__0_S-part1  ONLINE       0     0     0

errors: No known data errors
# bonnie++ -u root -d /tank1
...
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
xxxx         15464M   161  99 60368  12 35164   9   371  94 96024  10 807.8  26
Latency             99022us     443ms    1407ms     332ms     546ms    1067ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  9314  91 +++++ +++ 24604  97  9976  95 +++++ +++  9474  98
Latency             48790us     741us     505us   53719us     128us    1094us
1.96,1.96,xxxx,1,1350830603,15464M,,161,99,60368,12,35164,9,371,94,96024,10,807.8,26,16,,,,,9314,91,+++++,+++,24604,97,9976,95,+++++,+++,9474,98,99022us,443ms,1407ms,332ms,546ms,1067ms,48790us,741us,505us,53719us,128us,1094us

次に、CentOS 5 + zfs-fuse-0.6.9_p1-6.20100709git.el5.1 のデータです。
# uname -a
Linux xxxx 2.6.18-308.11.1.el5 #1 SMP Tue Jul 10 08:48:43 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
# zpool get guid tank1
NAME   PROPERTY  VALUE  SOURCE
tank1  guid      4585092805656841166  default
# zpool status
  pool: tank1
 state: ONLINE
 scrub: none requested
config:

        NAME                                                              STATE     READ WRITE CKSUM
        tank1                                                             ONLINE       0     0     0
          disk/by-id/scsi-SATA_External_Disk_0AL25744_6000092__0_S-part1  ONLINE       0     0     0

errors: No known data errors
# bonnie++ -u root -d /tank1
...
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
xxxx         15424M    24  11 32019   5 24308   6  2379  98 103178   7 496.0   9
Latency               506ms    1381ms    1627ms   10573us     609ms     999ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  5648  12 11300  10  5469   7  5038  12 12881  14  7092  12
Latency             28879us    1700us    3875us   54328us    1760us    2040us
1.96,1.96,xxxx,1,1351439162,15424M,,24,11,32019,5,24308,6,2379,98,103178,7,496.0,9,16,,,,,5648,12,11300,10,5469,7,5038,12,12881,14,7092,12,506ms,1381ms,1627ms,10573us,609ms,999ms,28879us,1700us,3875us,54328us,1760us,2040us
使用機材は、ThinkPad T510 Core i7 M620 2.67G + SAMSUNGの2008年製造の古い SSD 64G (eSATA 接続) です。

2012-11-10追記
わたしの利用範囲では、ZFS on Linux の性能は十分であると感じますが、FreeBSD のほうが上だと聞きますので、試しに同じマシン(ThinkPad T510)にマルチブート環境を作って、同じボリュームを import して、bonnie++ で計測してみました。
# uname -a
FreeBSD xxxx 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
# bonnie++ -u root -d /tank1
...
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
xxxx            16G   173  99 53620   9 33313   5   425  90 138720   7 876.5   8
Latency             46882us    4175ms    3542ms     513ms     590ms     782ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 29261  88 +++++ +++ 32398  97 23195  97 +++++ +++ 12962  98
Latency             13252us     132us     126us   26767us     102us    7513us
1.96,1.96,xxxx,1,1352526856,16G,,173,99,53620,9,33313,5,425,90,138720,7,876.5,8,16,,,,,29261,88,+++++,+++,32398,97,23195,97,+++++,+++,12962,98,46882us,4175ms,3542ms,513ms,590ms,782ms,13252us,132us,126us,26767us,102us,7513us
# zpool get all tank1
NAME   PROPERTY       VALUE       SOURCE
...
tank1  guid           4585092805656841166  local
...
# zpool status
  pool: tank1
 state: ONLINE
status: The pool is formatted using an older on-disk format.  The pool can
 still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
 pool will no longer be accessible on older software versions.
 scan: none requested
config:

 NAME        STATE     READ WRITE CKSUM
 tank1       ONLINE       0     0     0
   ada2s1    ONLINE       0     0     0

errors: No known data errors
確かに各数字を見比べてみると、全般的に FreeBSD 9.0 のほうが、少し性能が上に見えました。
もしも、NAS 専用サーバを作るのであれば、FreeBSD や FreeNAS というものは、良い選択肢なのかもなと思いました。

余談:FreeBSD は、過去何回かインストールした経験があったのですが、拡張パーティションにはインストールできないということを、すっかり忘れており(たぶん、以前同じようにハマったと思いました)、結構な手間・時間がかかってしまいました。たぶん、ほとんど起動しないだろうというのに。。
なお、FreeBSD 10 に向けて、ZFS の性能向上の取り組みがあるらしいので、リリースされたら、また測ってみたいなと思っています。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ