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

このページの古いバージョンを表示しています。現在のバージョンを表示します。

現在のバージョンとの相違点 ページ履歴を表示

« 前のバージョン バージョン 6 次のバージョン »

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に比べてかなり熱い
  • 検証次第追加予定

だめだったハードウェア

  • MegaRAID SAS 8708EM2
    • 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します。

ダウンロード後、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アレイのメンバー用ポートに戻す場合

ディスクをアンマウント後、以下のコマンドでポートをRAIDアレイのメンバー用スロットとして定義することにより、

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

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

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

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

 

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

 

  • ラベルがありません