ページ ツリー
メタデータの末尾にスキップ
メタデータの先頭に移動

LSI のRAIDカードをZFSに使用したり、ライセンスの関係でRAID0/1のみしか使えないRAIDカードでS/W RAID5を組みたいときなど、

JBODでディスクが見えた方が都合が良いときにJBODを有効にする方法のメモです。

おそらくLSI SAS 2000/21000/2200系のチップを使っているカードでは有効だと思われます。

 

有効だったハードウェア

  • D2607-A21
    • LSI SAS 9211-8i相当だけど全くの独自設計
    • LSI SAS 2008チップ使用
    • 富士通 RX100S7にデフォルトでついてたカード(RAID0/1/10版)
    • 日立のDeskstarシリーズ、東芝のDT01/MD03/MD04シリーズをJBODで使う場合は要注意
  • N8103-150
    • MegaRAID SAS 9267-8iのNEC-OEM
    • LSI SAS 2208チップ使用
    • D2607に比べてかなり熱い
  • PIKE 2008
    • eBayでZ9PE-D16に追加するために購入
    • そもそもITモードでしか動かない。ebayで買った中古なのでデフォルトがITなのかは不明
    • MSMで見るとUnconfiguredデバイスとしてぶら下がっているドライブが見えるが、そこからArray作成はできない
    • storcli/Megacliでもコントローラーが見えない
    • 9217のファームが当たるが、それでも変わらず
    • ドライブを挿せばfdiskやWindowsのディスク管理ツールに出てくる
  • ServeRAID H1110
    • LSI 2004チップ採用
    • ドライブを刺しただけで見える
    • 論理ドライブも作れる
    • 論理ドライブを作成したあとでも、LDを削除してUnconfiguredにすると単体のドライブとして再び見える謎の多いカード
    • 帯域としては読み書きともに1GB/s、70kIO/s程度が限界
  • 検証次第追加予定

だめだったハードウェア

  • N8103-129
    • LSI SAS 2108チップを使用
    • カードに対して

      MegaCli -AdpSetProp -EnableJBOD 1 -a0

      は通るものの、ディスクに対して

      MegaCli -PDMakeJBOD -physdrv[252:2] -a0

      をやると

      Adapter: 0: Failed to change PD state at EnclId-252 SlotId-2.

      と帰ってきて有効に出来ず。

    • その代わり、

      smartctrl -x /dev/sdb -d megaraid,2

      を行うと正常にSMARTの値を取得できる。

  • N8103-129(9260-8iファーム適用)
    • そもそもカードに対して

      MegaCli -AdpSetProp -EnableJBOD 1 -a0

      が通らなくなる

    • LSI SAS 2108の仕様と同じ
    •  MR 5.8以降のファームを適用すると、4kセクタのディスクを接続して論理ディスクの定義しても、しっかり4kセクタとしてOSに返してくれる。それ以前は512B固定で返す。
  • MegaRAID SAS 8708EM2
    • JBODを有効にすることは出来ず
    • 2TB+以上のディスク容量を認識できず
  • D2507-D11
    • LSI SAS 1064Eチップ使用
    • 2TB+以上のディスク容量を認識できず
    • MegaCLIから見えない
    • TX120S3pについてたやつ
    • そもそも起動時のRAID設定画面でRAIDアレイを作らなければ、未定義ディスクはJBODディスクとして見える
  • 検証次第追加予定

検証環境

root@ubuntu:~# uname -a
Linux ubuntu 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available.

root@ubuntu:~/linux# lsb_release  -a
Distributor ID: Ubuntu
Description: Ubuntu 14.04.2 LTS
Release: 14.04
Codename: trusty

 

設定手順

今回検証した手順は以下の通り。手順ではLinuxからMegaCLIを利用していますが、サーバ起動時にCtrl+YでPreBootCLIに入ることにより設定することも出来ます。

Megacliをインストールする

LSI(現Avago)のページから    MegaCLI 5.5 P2 をDLします。

メモ

MegaCli-8.07.14-1-Linux.tgz

ダウンロード後、Unzipで解凍するとrpmファイルがあるので、Debian系であればAlienでパッケージを変換し、dpkgコマンドでインストールします。

root@ubuntu:~/linux# apt-get install alien --no-install-recommends
root@ubuntu:~/linux# alien --scripts MegaCli-8.07.07-1.noarch.rpm
megacli_8.07.07-2_all.deb generated


root@ubuntu:~/linux# dpkg -i megacli_8.07.07-2_all.deb
Selecting previously unselected package megacli.
(Reading database ... 62518 files and directories currently installed.)
Preparing to unpack megacli_8.07.07-2_all.deb ...
Unpacking megacli (8.07.07-2) ...
Setting up megacli (8.07.07-2) ...


root@ubuntu:~/linux# dpkg -L megacli
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/megacli
/usr/share/doc/megacli/copyright
/usr/share/doc/megacli/changelog.Debian.gz
/opt
/opt/MegaRAID
/opt/MegaRAID/MegaCli
/opt/MegaRAID/MegaCli/MegaCli
/opt/MegaRAID/MegaCli/libstorelibir-2.so.13.05-0
/opt/MegaRAID/MegaCli/MegaCli64

root@ubuntu:~/linux# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/sbin/megacli

 

インストールされるバイナリパッケージは単体でも動くので、Alienで変換をしなくてもREL系のマシンから

/opt/MegaRAID/MegaCli/MegaCli (32bit)
/opt/MegaRAID/MegaCli/MegaCli64 (64bit)

を摘出すれば動きます。まあ一度Alienで変換してしまえばそのdebパッケージを使い回せば良いだけですが…。

アダプタの設定を変更しJBODを有効にする

アダプターの設定を変更し、JBODを有効にします。

root@ubuntu:~/# megacli AdpSetProp enablejbod  -1 -aALL
Adapter 0: Set JBOD to Enable success.
Exit Code: 0x00
    
root@ubuntu:~/# megacli AdpGetProp enablejbod -aALL
Adapter 0: JBOD: Enabled
Exit Code: 0x00

ディスクをJBOD用ディスクに設定する

アダプターの設定を変更後、ディスクをJBODとして使うように設定します。

ただし、すでにRAID1などのアレイのメンバーとして定義されている場合、ディスクの定義を削除し、Unconfigured状態にする必要があります。

root@ubuntu:~/linux# megacli PDList -aALL|grep -E "(^Inquiry|^Enclosure Device|^Slot Number|^Firm)" 
Enclosure Device ID: 64
Slot Number: 0
Firmware state: Unconfigured(good), Spun Up
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q
Enclosure Device ID: 64
Slot Number: 1
Firmware state: Unconfigured(good), Spun Up
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q
Enclosure Device ID: 64
Slot Number: 2
Firmware state: Unconfigured(good), Spun Up
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q
Enclosure Device ID: 64
Slot Number: 3
Firmware state: Unconfigured(good), Spun Up
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q

もし、"Firmware state: Online, Spun Up"となっていた場合は何かしらのディスクのメンバーとして定義されているため、

megacli -LDInfo -Lall -aALL

などで情報を確認後、

 megacli -CfgLdDel -l0 -a0

で対象のLDの定義を消します。

めんどくさければ

 megacli -CfgLdDel -lall -aall

で挿されているアダプターで定義されているRAID情報を全削除できます。(危険)

 

その後、[Enclosure Device ID:Slot Number]形式でJBODとして使うポートを定義します。

root@ubuntu:~# megacli PDMakeJBOD -PhysDrv[64:0,64:1,64:2,64:3] -a0

Adapter: 0: EnclId-64 SlotId-0 state changed to JBOD.
Adapter: 0: EnclId-64 SlotId-1 state changed to JBOD.
Adapter: 0: EnclId-64 SlotId-2 state changed to JBOD.
Adapter: 0: EnclId-64 SlotId-3 state changed to JBOD.

Exit Code: 0x00

JBODとして定義後は、定義したポートに挿したディスクは他のRAIDメンバーに追加などは出来なくなります。

root@ubuntu:~linux# megacli PDList -aALL|grep -E "(^Inquiry|^Enclosure Device|^Slot Number|^Firm)" 
Enclosure Device ID: 64
Slot Number: 0
Firmware state: JBOD
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q
Enclosure Device ID: 64
Slot Number: 1
Firmware state: JBOD
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q
Enclosure Device ID: 64
Slot Number: 2
Firmware state: JBOD
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q
Enclosure Device ID: 64
Slot Number: 3
Firmware state: JBOD
Inquiry Data: S1DMASK     Samsung SSD 840 EVO 120GB               EXT0AB0Q

dmesgを確認すると以下のような出力があります。

[12000.365456] megaraid_sas: scanning for scsi0...
[12000.413778] sd 0:0:1:0: [sdb] Synchronizing SCSI cache

定義後は、通常のディスクとして同じように利用できます。

JBOD用ポートを通常のRAIDアレイのメンバー用ポートに戻す場合

ディスクをアンマウント後、以下のコマンドでJBOD用ポート定義を消すことにより、

以前と同じようにその配下にささっているディスクをRAID1などのメンバーに出来ます。

megacli PDMakeGood  -PhysDrv[64:0,64:1,64:2,64:3]  -Force -a0

ForceをつけないとOS起動状態でJBODの状態を解除できません。

また、JBODとして定義されているポートは、定義を戻さない限りディスクを変更してもJBODディスクとして見えます。

 

JBODとして定義後は、smartctrlなどからも見えるようになります。

 

コメントを書く…