思考実験とD.I.Y.

D.I.Y and Gedankenexperiment

【FreeBSD13.4】ファイルサーバーのメンテ(6):RocketRAID62xにRR64x用ドライバーを試すー>ダメだった。

画像・動画編集一時領域用に供するファイルサーバーなので、一時領域はできる限り、Read/Writeパフォーマンスを高くしておきたいと考えています。
そこで、HighPoint製RocketRAID620を使った、ストライプセット(RAID0)の実装テストをします【注*1

0.RocketRAID620が。。。

(1)誤認

メーカー(HighPoint)の製品ページ[*2]では、RocketRAID620は”ネイティブにサポートされています”と記載がありました。
この段階では、”Non-RAID HBA”との記載を見落としていました。

カーネル再構築を行おうと思い”/sys/amd64/conf/LINT”を確認すると、RocketRAID620がありません😅。

再度、”FreeBSD 13.4 ハードウェアノート”を確認すると、"High Point"関連のドライバーにはRocketRAID620が含まれていない😐。

メインファイルサーバーに使っているRocketRAID2720SGLは” ハードウェアノート”に載っていたので、
製品ページの記述からRocketRAID620(RR620)も”RAID”カードとして認識されると誤認していました😅。

(2)再調査

再度調べると、メーカー(HighPoint)の製品ページ[*3]にて、FreeBSD13.0用のドライバーを発見。

(3)とりあえず

とりあえず、ダメもとでダウンロードした、”RocketRAID640”用のドライバーを試行してみる事にしました。

(4)ダウンロードファイルの確認
tarボールの中に入っていたファイルは3つ。

まずは、readme.txtを確認します。

手順的には、シェルスクリプト”postinstall”で、モジュールをインストール。
そして、”/boot/defaults/loader.conf”を修正すればよいようです(*4)。

2.ドライバーのインストール

"readme.txt"に従って、”postinstall”を実行すると、エラーでインストールできません😅(*5)。

”postinstall”の中身を読んでみて、手前勝手な手順に変更😅。

(2)postinstallの修正

”postinstall”は、ドライバーが”/mnt”にあるもとして、コーディングされていました。

そこで、"postinstall"と同じディレクトリを探すように、修正を加えます。

root@freebsd:# mv ./postinstall ./postinstall.orig ; ”postinstall”のタイムスタンプが変わらない様にリネームする。
root@freebsd:# cp ./postinstall.orig ./postinstall ; ”postinstall.orig”をコピーする。
root@freebsd:# vi ./postinstall ; ”postinstall”を修正する。

下記の黄色字部分を追加・修正。

#!/bin/sh
ARCH=`uname -m`
OSREL=`uname -r | cut -d- -f1`


echo "Post Install for rr640l"


if [ ${ARCH} = 'amd64' ]; then
# DRIVER_SRC="/mnt/rr640l-${OSREL}-${ARCH}.ko"
 DRIVER_SRC="./rr640l-${OSREL}-${ARCH}.ko"

else
# DRIVER_SRC="/mnt/rr640l-${OSREL}.ko"
 DRIVER_SRC="./rr640l-${OSREL}.ko"

fi

[..]

(2)シンボリックリンクの作成

”postinstall”は、ドライバーを探す際、マイナーバージョンまで一致していないと、”エラー”を返すよう、コーディングされています。

また、”postinstall”はドライバーを、
”rr640l.ko”として”/boot/kernel/”にコピーし、
loader.confにも”rr640l.ko”として登録します。

そこで、シンボリックリンクを張って、FreeBSD13.0用ドライバーをFreeBSD13.4用ドライバーに見せかける事にしました。
root@freebsd:# ln -s rr640l-13.0-amd64.ko rr640l-13.4-amd64.ko ; シンボリックリンクを作成。
(3)ドライバーのインストール

展開したディレクトリで、”postinstall”を実行。

root@freebsd:# sh ./postinstall ; スクリプトの実行。
(4)loader.confの修正

”postinstall”は、”loader.conf”にモジュールのロードに関する記述を追加してくれます。

ただ、このままだと、追加したモジュールでトラブルが起きた場合収拾がつかなくなるので、”postinstall”が追加したモジュールをコメントアウトしておきます。

root@freebsd:# vi /boot/defaults/loader.conf ; loder.confを編集。

下記の黄色字部分を追加。

[..]

#module_after="cmd"             # executes "cmd" after loading the module
#module_error="cmd"             # executes "cmd" if load fails

#rr640l_load="YES"

3.動作確認

(1)RocketRAID620(RR620)の装着
シャッドダウン後、電源ケーブルを抜いてから、RR620を装着。

装着後、電源ケーブルを接続し、起動。

(2)ドライバーを手動でロード

FreeBSDが立ち上がったら、手動でモジュールをロードします。

root@freebsd:# kldload rr640l.ko ; モジュールをロード。

”Panic”で落・ち・た・・・😲

RR640用ドライバーでRR620が使えるかどうか、以前の問題でした😅。

このカードに対して、原因究明や、対処法を探す気力はもう残っていませんし😑、時間を無駄にしている気がしてきました😅。

4.どうしようかな🤔

(1)状況の整理
  • もともと、RR6xxは、3Gbpsが主流の時代、6Gbpsでかなり安価なRAIDカードでしたが、Windows以外では、ハックが難しく”キワモノ”だったと言えるかもしれません。
  • Ubuntu14.04LTSで使う際もかなり手間取った上、16.04LTSでは使うことが出来ませんでした(*6)。
  • FreeBSDのメインストリームでサポートされておらず、メーカーのサポートも乏しい状況では、今後、O/Sのアップデートをするたびに苦労する事は目に見えています。
  • RR620はホストバスアダプタ(HBA)としては機能しています。
  • マザーボードGIGABYTE A520M DS3H)はRAID0/1/10をサポートしています。
  • 今回のメンテナンスで、CPUの能力はメンテ前より格段に上がっているので、ハードウエアRAID固執する必要はないかもしれません。
  • しかも、10年以上たった、RAIDカードに固執する必要があるか疑問に思い始めました。
(2)対応方法検討

とりあえず、対応方法を考えてみる事にしました。

  1. )マザーボードRAID機能を使ってRAID0を使う。
    • GIGABYTE A520M DS3H”には、SATAポートが4ポートしかついていません。
    • このうち、3つは既に使用済み(SSD×1、HDD×1、BD×1)。
      ⇒実施不可能😅
  2. )zfsでRAID0を組む。
    • メインファイルサーバーでもzfsを使っています。
    • メインファイルサーバーのメンテナンスが控えているので、zfsで実現するのは振り返りになります。
  3. )gmirrorを使って、RAID0を組む。
    • 随分昔にちょっとだけ試した記憶がありますが、
    • 実運用に供するマシン群で、複数のツールが混在していると、混乱しそうです。
(3)今後の方針

考えた末、RR620は”HBA”として活用し、ストライプセット(RAID0)は”zfsで実装することにします。

【次回に続く】

ブログランキング・にほんブログ村へにほんブログ村 IT技術ブログへ

出典・引用・備考

*1:この投稿の内容は、特定の機種並びに特定の環境での確認結果になります。
同等機種や異なる環境での動作他を保証するものではありませんので、ご留意いただけます様お願いいたします。

*2:"SATA 6Gb/s Non-RAID HBA > Rocket 600 Family Series"、HighPoint Technologies, Inc.、https://www.highpoint-tech.com/r600、最終閲覧日:2024年12月21日

*3:"RocketRAID 600 HBA Series"、HighPoint Technologies, Inc.、https://www.highpoint-tech.com/rr600、最終閲覧日:2025年2月14日

*4:デジャブかもしれませんが、昔、同じようなことをした気が。。😅

*5:斜め読みして作業したので、"readme.txt"に従ってないからなのですが。。。😅

*6:当時、調べたり、ハックするだけの気力と時間がありませんでした😅。