LSI Logic 3ware 9750-4iを導入する(Gentoo Linux)

LSI Logic 3ware 9750-4iを購入したのでGentooLinuxに突っ込んだときのログです。カーネルモジュールの有効〜ユニットの作成までをまとめてみました。
中で触れていませんが、ユニットの作成は3BM(BIOSベース)や3DM2(ブラウザベース)でやった方が簡単です。

環境

流れ

  1. カーネルモジュールを有効にする
  2. tw_cliの導入
  3. ユニット(とボリューム)の作成
    1. コントローラオブジェクトの番号確認とフォーカスの移動
    2. ディスクの確認
    3. ユニット作成
    4. ユニットの確認

カーネルモジュールを有効にする

下記、モジュール各々を有効にします。

Device Drivers
  SCSI device support
    <*> SCSI disk support
    [*] SCSI low-level drivers  --->
      <M>   3ware 97xx SAS/SATA-RAID support
      # 起動ディスクにする場合は、 initrdにモジュールを含めるか、*にする

tw_cliの導入

tw_cliを導入します。tw_cliは3ware向けのコンフィギュレーションツールです。9750シリーズは、バージョン10以降が必要になります。

インストールパッケージのダウンロード

自分でパッケージのダウロードが必要です(ダウンロード時にライセンスに同意しないといけないから?)。また、ダウンロード先は変更される可能性があるので注意です。
ダウンロード後"/usr/portage/distfiles/"にコピーします。

http://www.lsi.com/DistributionSystem/AssetDocument/cli_linux_10.1.zip

package.keywordsへの追加
$sudo sh -c "echo 'sys-block/tw_cli' >> /etc/portage/package.keywords"
tw_cliのインストール

準備が整ったのでインストールします。

$sudo emerge tw_cli

以上で完了です。以降はtw_cliを使ってディスクの設定を行います。

ユニット(とボリューム)の作成

ユニット/ボリュームの作成を行います。ユニットとボリュームの詳細は備考欄をご覧ください。
まずは、tw_cliを起動します。

#tw_cli
コントローラオブジェクトの番号確認とフォーカスの移動

追加したRAIDカードが何番目のコントローラーオブジェクトに割り当てられているかを調べます。
実行すると下記のようになります。

//xx>show
Ctl   Model        (V)Ports  Drives   Units   NotOpt  RRate   VRate  BBU
------------------------------------------------------------------------
c6    9750-4i      3         3        1       0       1       1      -     

c6に割り当てられているのでフォーカスを変更します。

//xx>focus /c6
ディスクの確認

RAIDカードに接続しているディスクのポートを確認します。
VPort 0-2にディスクが接続されていることが確認できます。今回は0-2のディスクを用いてRaid5を構築します。

//xx>show
Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------  

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   1.82 TB   SATA  0   -            ST32000542AS        
p1    OK             u0   1.82 TB   SATA  1   -            ST32000542AS        
p2    OK             u0   1.82 TB   SATA  2   -            ST32000542AS        
ユニット作成

ユニットの作成はaddコマンドを用いて行います。

//xx>/c6 add type=raid5 disk=0-2
  • type:raidの種類(raid0,1....)を指定します。今回はraid5を指定しています。
  • diskに使用するディスクのポート番号を指定します。今回はp0-2を指定しています。

また、下記項目は任意設定項目です。変更する必要がないので変更していません。他の設定値は備考やマニュアルをご覧ください。

  • Read Cache:標準で有効
  • Write Cache:標準で有効
  • 先読み処理:標準で有効
  • ストリップサイズ:256kb
ユニットの確認

作成したユニットを確認します。まずはコントローラオブジェクトレベルからです。
u0が作成されています。

//xx>/c6 show

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-5    OK             -       -       256K    3725.27   RiW    ON     

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   1.82 TB   SATA  0   -            ST32000542AS        
p1    OK             u0   1.82 TB   SATA  1   -            ST32000542AS        
p2    OK             u0   1.82 TB   SATA  2   -            ST32000542AS    

次にユニットレベルで確認します。u0/v0というボリュームが作成されています。
このボリュームが実際にカーネルからディスクとして認識されます。(ボリュームの詳細は備考をご覧ください)。

//xx>/c6/u0 show

Unit     UnitType  Status         %RCmpl  %V/I/M  VPort Stripe  Size(GB)
------------------------------------------------------------------------
u0       RAID-5    OK             -       -       -     256K    3725.27   
u0-0     DISK      OK             -       -       p0    -       1862.63   
u0-1     DISK      OK             -       -       p1    -       1862.63   
u0-2     DISK      OK             -       -       p2    -       1862.63   
u0/v0    Volume    -              -       -       -     -       3725.27  

以上で作成完了です。dmesgからディスクが認識されていることが分かります。

$dmesg
 scsi 6:0:0:0: Direct-Access     LSI      9750-4i    DISK  5.12 PQ: 0 ANSI: 5
 sd 6:0:0:0: [sdc] 7812456448 512-byte logical blocks: (3.99 TB/3.63 TiB)
 sd 6:0:0:0: Attached scsi generic sg4 type 0
 sd 6:0:0:0: [sdc] Write Protect is off
 sd 6:0:0:0: [sdc] Mode Sense: 23 00 10 00
 sd 6:0:0:0: [sdc] Write cache: disabled, read cache: enabled, supports DPO and FUA
 sdc1
 sd 6:0:0:0: [sdc] Attached SCSI disk

今回は約3.7TBのディスクを作成しました。2Tバイト以上のパーティションMBR(現行PC/ATで使用されているパーティションテーブル)で扱えないのでGPTを必要とします。GPTの扱いについては http://d.hatena.ne.jp/ktomoya/20100912/1284256525 を参照ください。

備考

LSI Logic 3ware 9750-4iについて

選択した理由は単純に3wareが枯れているからという理由です。。。あとは、メモリキャッシュが欲しかったけです。

  • 4ポートSATA+SAS 6Gb/s
  • ロープロファイル対応
  • x8 PCI Express® 2.0 インターフェース
  • 512MB DDRII ECC cache (800MHz)
  • バッテリーバックアップオプション対応
  • 最大96ディスク接続可能
  • RAIDレベル0, 1, 5, 6, 10, 50,Single Disk対応
  • リビルドにおけるオートリジュー
  • 再編成におけるオートリジュー
  • 動作中にディスクのサイズ変更可能
  • 動作中にRAIDレベルの変更可能
  • Global hot spare with revertible hot spare support
  • 自動リビルド対応
  • Single controller multipathing (failover)
  • I/Oロードバランシング
  • 広範囲に渡るRAID管理スイート
ユニットについて

ユニットは複数のディスクを束ねたオブジェクトを指します。束ね方はraidtypeで指定します。

ボリュームについて

ユニットを任意の容量で切り出し、実際にディスクとして認識されるオブジェクトです。

ユニット作成コマンド引数詳細

ユニット作成コマンドの引数について少し細かく説明します。

# 全体
/cx add type=<RaidType> disk=<p:-p> [stripe=size] [noscan] [group=<3|4|5|6|7|8|9|10|11|12|13|14|15|16>] [nowrcache] [nordcache| rdcachebasic] [autoverify] [noqpolicy] [ignoreECC] [name=string] [storsave=<protect|balance|perform>] [rapidrecovery=all|rebuild|disable] [v0=n|vol=a:b:c:d]
  • type:作成するユニットのタイプを設定します。 タイプにはraid0,raid1,raid5,raid6,raid10,raid50,single(ディスク1つでユニットを作成するときに選択する), spare(スペアディスクとして設定) と多数あります。
# RAID0を選択した場合(diskは0と1)
//xx>/cx add type=raid0 disk=0:1
  • disk:ユニットに割り当てるディスクを選択する
# p0〜p2とp4を選択した場合
//xx>/cx add type=raid6 disk=0-1:4 
  • stripe(任意):RAIDカードがデータを管理する際のブロックサイズの設定です。16KB,64KB,256KBから選択可能です(RaidTypeによって選択可能なサイズはことなりますのでマニュアル参照)。
# Stripサイズに64Kを指定した場合
//xx>/cx add type=raid1 disk=1:2 stripe=64
  • v0,vol(任意):ボリュームのサイズを指定します。
      • v0:1つ目のボリュームのサイズを指定します。残り領域はもう一つのボリュームが作成されます
      • vol:先頭から4つまでの任意のボリュームサイズを指定できます。4つで全て使い切らなかった場合には、carveサイズ単位でボリュームを作成します(標準:1TB, 最大:32TB)。carveサイズは変更可能です。
# v0で1つ目のボリュームサイズ(1024GB)のみを指定する。
//xx>/cx add type=raid5 disk=0-2 v0=1024

# volで複数のボリュームを作成します。10GB,5GB,200GB,5GBで切っています。
# ディスクの残りはcarveサイズ単位となります。
//xx>/cx add type raid5 disk=0-3 vol=10:5:200:5

下記以降はマニュアルをどぞ。

  • group=3,4,5,6,7,8,9,10,11,12,13,14,15,16
  • noscan(任意)
  • nocache,nowrcache(任意):ライトバックキャッシュを無効にするとパフォーマンスが非常に落ちるのでおすすめしません。(10MB/sとかになりました。。。)
  • nordcache,rdcachebasic(任意)
  • autoverify(任意)
  • noqpolicy(任意)
  • ignorECC(任意)
  • name=string(任意)
  • rapidrecovery=all,rebuild,disable(任意)
  • storsave=protect,balance,perform(任意)
その他のコマンド
  • /cx/ux del:ユニットを削除します
  • /cx/ux migrate:作成済みのユニットの構成を変更します(RAIDレベルの変更やstripeサイズの変更など)
今後
  • 3DM2入れてみる
  • ベンチとってみる(ストリップサイズの違いで)