Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

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版)
  • N8103-150
    • MegaRAID SAS 9267-8iのNEC-OEM
    • LSI SAS 2208チップ使用
    • D2607に比べてかなり熱い
  • 検証次第追加予定

だめだったハードウェア

  • 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の値を取得できる。

  • MegaRAID SAS 8708EM2
    • JBODを有効にすることは出来ず
  • D2507-D11
    • LSI SAS 1064Eチップ使用
    • 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などからも見えるようになります。

 

  • No labels