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で使う場合は要注意
- JBODのSMARTを取る場合、HBAがプロクシとして内容を返すようだが、その際に刺さる事がある
- Smartmontoolsなどを入れると定期的にSMARTの内容を取得してログに吐き出すが、それが上記ドライブを組み合わせると秘孔をつくことがある
- Seagate、WDでは今のところ起きていない(WD Green,Blue,RE4)
- 東芝でもMGシリーズは起きない(MG04,MG03) あまりにも障害を連発するので結局MGシリーズに交換するという苦い経験が…
- http://xmms.jp/blog/index.php?entry=%E3%81%99%E3%81%A8%E3%82%8C%E3%83%BC%E3%81%98%E3%81%AA%E3%81%84%E3%81%A8%E3%82%81%E3%81%82%E3%80%80%E5%BE%8C%E7%B7%A8
- 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します。
メモ
ダウンロード後、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/MegaCli64root@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ディスクとして見えます。
Related articles
コメントの追加