SSDに関する検証 その1

<緊急特集!!SSDに関する検証 その1>
ペンネーム: ミラニスタ

今週から、磁気ディスクの代わりに半導体メモリにデータを記録するスト
レージ装置SSD (Solid State Disk) の検証を行います。

▼ はじめに

一般的に、磁気ディスクに比べ半導体メモリのアクセス速度は100万倍オー
ダーで速いというのが定説になっています。

最近よく耳にする「インメモリデータベース」(以下 IMDB)は、全ての
データストアがサーバの RAM 上に存在するという前提で、例えば Oracle
Times Ten では通常のディスクベースの RDB とは異なったアーキテクチャの
基に実装されています。

何しろ「全てのデータが RAM 上に存在する」のですから、従来型のデータ
ベースとは次元が違います。高度なリアルタイム性を求められる場面では重要
な技術になっていくでしょう。

ところが、IMDB ではデータストアのサイズはサーバに取り付けられた RAM
の大きさに依存しますし、32bit OS では OS 側の制限もいろいろ受けそうです。

それに、IMDB はアーキテクチャが異なるというのも、Oracle に慣れ親しん
だ私たちとしては気になるところです。

今回検証する SSD は、サーバからは従来の磁気ディスク装置と全く同様の
デバイスとして認識される外部記憶装置です。

この SSD を磁気ディスクの代わりに使い、IMDB とまでは行かないまでも、
Oracleデータベースの磁気ディスクに関するボトルネックを半導体メモリのパ
ワーによって、どれくらい改善できるかということを確認することが今回の検
証の目的です。

また、磁気ディスクの代わりと言っても、半導体メモリはまだまだ高価です
ので、一部のディスクの代わりにする等、使い方の工夫があるかもしれませんし、
対障害性についても検証する必要があります。

SSD はこれからのデータベースの世界ではきっとおもしろいアイテムになっ
ていくという予感がします。時代を先取りした検証に乞うご期待!!

▼ 検証製品

検証で取り上げる SSD は、当社が富士ゼロックス株式会社光システム事業開
発部様から検証用として特別にお借りしている GigaExpress(ギガエクスプレス)
という製品です。
http://www.fujixerox.co.jp/product/gigaexpress/

16GBの容量を持ち、ポートを2つ搭載してRAC構築用としても使用できる
「16G-2P」という SSD を2台使用し、検証を行っていきます。

連載の中では、メーカーの方への製品に関するインタビュー等も企画してい
きますので読者の皆さんで製品にご質問、ご興味のある方は、どしどしメール
をお寄せください。

mailto:letter@insight-tec.co.jp

◆環境

Linux 2.4.21-32.EL
Intel(R) Xeon(TM) CPU 2.80GHz
実メモリ:8GB
内蔵ディスク RAID5 SCSIデバイス名: /dev/sda

▼ セットアップ

半導体ディスクと言っても、前述のとおり OS から見る限り通常の SCSI デ
バイスとして認識されます。
PCI スロットにインターフェースカードを取り付け、SCSI ケーブルで接続
し、デバイスドライバがインストールされた状態からのセットアップ法を説明
します。(SSD の SCSI デバイス名: /dev/sdb, /dev/sdc)

1. パーティションの作成

  fdisk コマンドでパーティションを作成します。

  # /sbin/fdisk /dev/sdb

  ......................................
  コマンド (m でヘルプ): n
  コマンドアクション
     e   拡張
     p   基本領域 (1-4)
  p
  領域番号 (1-4): 1
  最初 シリンダ (1-16128, 初期値 1):
  初期値 1 を使います
  終点 シリンダ または +サイズ または +サイズM または +サイズK (1-16128, 初期値 16128):
  初期値 16128 を使います

  コマンド (m でヘルプ): w
  領域テーブルは交換されました!

  ioctl() を呼び出して領域テーブルを再読込みします。
  ディスクを同期させます。

2. パーティションのフォーマット

  mkfs コマンドでパーティションをフォーマットします(ext3形式)

  # /sbin/mkfs ext3 -c /dev/sdb1
  mke2fs 1.32 (09-Nov-2002)
  Filesystem label=
  OS type: Linux
  Block size=4096 (log=2)
  Fragment size=4096 (log=2)
  2064384 inodes, 4128764 blocks
  206438 blocks (5.00%) reserved for the super user
  First data block=0
  126 block groups
  32768 blocks per group, 32768 fragments per group
  16384 inodes per group
  ......................................
  
  Checking for bad blocks (read-only test): done
  Writing inode tables: done
  Writing superblocks and filesystem accounting information: done
  
  ......................................

3. マウントポイントの作成

  /dev/sdb1, /dev/sdc1 のマウントポイントをそれぞれ /fxssd/fxssd1,
  /fxssd/fxssd2 とします。

  # mkdir /fxssd/fxssd1

4. パーティションのマウント

  # mount /dev/sdb1 /fxssd/fxssd1

5. 最後に確認

  # df -k
  Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
  /dev/sda2            280100664 206868684  59003612  78% /
  ....................................................................
  /dev/sdb1             16255912        20  15430140   1% /fxssd/fxssd1
  /dev/sdc1             16255912        20  15430140   1% /fxssd/fxssd2

▼ 基本性能の確認

それでは、早速 hdparm コマンドを使って簡単なベンチマークテストをやっ
てみましょう!

# hdparm とは?
元々は Linux におけるハードディスクのパラメータを設定・取得するコマ
ンドですが、-t オプションで rawデバイスのベンチマークテストを簡単に行
うことができます。
さらに、-T オプションを併用することによって、キャッシュ読み込みのテ
スト結果を
元にした補正係数が -t の結果に加味されます。

まずは、通常の磁気ディスクから

  # hdparm -Tt /dev/sda1
  
  /dev/sda1:
   Timing buffer-cache reads:   3680 MB in  2.00 seconds = 1840.00 MB/sec
   Timing buffered disk reads:  100 MB in  2.61 seconds =  38.31 MB/sec

次に、SSD…

  # hdparm -Tt /dev/sdb1
  
  /dev/sdb1:
   Timing buffer-cache reads:   3668 MB in  2.00 seconds = 1834.00 MB/sec
   Timing buffered disk reads:  954 MB in  3.00 seconds = 318.00 MB/sec

これを交互に5回実行させて、それぞれの結果の平均値を計算しました。

磁気ディスク: 35.63 MB/sec
SSD         :318.66 MB/sec

おおっ!!実に約9倍もの速さです!!

(注:カタログスペックでは650MB/secという数字が出ていますが、hdparm
では CPU リソースを十分に使い切っていないので上記のような結果に留ま
っているようです。
– Top で確認していても hdparm はせいぜい 20%程度しか CPU を使ってい
ませんでした。- 逆に、Oracle がもっと負荷をかけた状態では、磁気ディ
スクとの差はもっと大きくなるかもしれません。)

これは期待できそうです!

次回は、Oracleの構成ファイルをすべて SSD 上に置いた場合と、磁気ディ
スク上に置いた場合の性能を比較してみます。

今日はこれまで。

ちょっと古いけど、A.C.ミラン UEFAチャンピオンズリーグ優勝!!

先週梅雨入りの茅ヶ崎にて