Raspberry Pi5でMegaRAIDを動かしてみる

Raspberry Pi5でPCIeが気軽に使えるようになったので遊んでみました。
仕事で、Broadcom(LSI logic)のRAIDカードを使う機会が有ったので、これが繋がらないかチャレンジしてみました。
取り急ぎ、動作することまでは確認できたので、自分用メモ

20260208RPi5.JPG

概要

参考サイトにある様にRAIDカードの動作実績も有るみたいでした。 必要な作業としては

  • 対応するKernelの再構築
  • ドライバのビルドと導入
  • RAIDカードユーティリティの導入

が必要な事は解りました。

結論としては、

  • Rasbianのカーネルソースに含まれているMegaRAIDのドライバを有効にしたカーネルを作成すればカードが動作する事
  • Broadcomで配布されている、CLI/Webのツールのarm64版が問題なく動作しインストール可能で有る事

が確認できました。

環境

  • Hardware
    • Raspberry Pi5 4GB?
    • 16GB microSD(OS)
    • Broadcom 9580-8i8e
    • M.2 NVMe HAT
    • M.2 NVMe -> PCIe Adapter
    • HPE Power Supply(12V)
    • テスト用 Storage
    • SATA SSD(SanDisk X400 2.5 7MM 128GB)
    • SATA HDD(TOSHIBA MQ01ABF050)
    • SAS HDD 15krpm (EH0600JDYTL)
  • Software
    • Rasbian(2025-12-04-raspios-trixie-arm64-lite.img)
    • StoreCLI(007.3503.0000.0000MR 7.35Storcli.zip)
    • LSA for Linux(008.015.010.000MR 7.35LSA aarch64.zip)

参考サイト

  • https://pipci.jeffgeerling.com/
  • https://pipci.jeffgeerling.com/cards_storage/broadcom-megaraid-9460-16i.html
  • https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/72
  • https://nw-electric.way-nifty.com/blog/2024/10/post-9042bb.html

導入手順

  1. RaspbianをSD(16GBに書き込む)
    • 2025-12-04-raspios-trixie-arm64-lite.img
  2. 起動する
    • 初期ユーザ作成・パスワード設定
    • SSH有効化
      • /etc/ssh/sshd_config
      • PermitRootLogin yes
      • systemctl enable ssh
  3. Debianのアップデート
    • apt update
    • apt upgrade
  4. 必要なツールをインストール
    • sudo apt-get install -y git bc bison flex libssl-dev make
  5. カーネルソースを取得する
    • git clone --depth=1 https://github.com/raspberrypi/linux
  6. カーネルをビルドする
    • cd linux
    • make ARCH=arm64 bcm2712_defconfig
    • vi .config 以下のオプションを設定する
      • CONFIGIRQPOLL=y
      • CONFIGMEGARAIDSAS=y
    • make -j6 ARCH=arm64 Image.gz modules dtbs
  7. カーネルをインストールする
    • KERNEL=kernel2712
    • make -j6 modulesinstall
    • cp /boot/firmware/$KERNEL.img /boot/firmware/$KERNEL-backup.img
    • cp arch/arm64/boot/Image.gz /boot/firmware/$KERNEL.img
    • cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
    • cp arch/arm64/boot/dts/overlays/.dtb /boot/firmware/overlays/
    • cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
  8. CLIツールをインストール storcli64007.3503.0000.0000arm64.debを導入
    • dpkg -i storcli64007.3503.0000.0000arm64.deb
    • ln -s /opt/MegaRAID/storcli/storcli64 /usr/local/sbin/storcli
  9. LSAをインストール(LSAlibutils2-8.00-00) LSALinuxaarch64.zipを転送
    • unzip LSALinuxaarch64.zip
    • cd aarch64
    • ./install_deb.sh
      • Y Agree ULA
      • Since Log Clear
      • gateway
      • 2463 Web Server Port(Default)
      • 9000 LSA Port (Default)
      • SLP Yes http://:2463 でアクセス
    • rootパスワードを設定する(rootユーザーでログオンしないとLSAが参照のみになり設定が出来ない)
      • sudo passwd root

20260209LSA.png

動作テスト

  • ディスクをOSに認識させる
    • LSAでDG/LDを作成する
    • OS上でsdaとして認識される
  • ディスクをフォーマットしてマウント
    • fdisk /dev/sda g n
    • mkfs.ext4 /dev/sda1
    • mount /mnt /dev/sda1
  • パフォーマンス測定ツールの導入とテスト

    • apt-get install fio
    • コマンドライン例(ランダムリード?)

    fio --name=rand-read --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --timebased --groupreporting --ioengine=libaio --iodepth=16
    fio --name=rand-read --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --timebased --groupreporting --ioengine=libaio --iodepth=16 --filename=/mnt/test1g

    • 測定結果(IOPSが想定より4倍ぐらい出てる気がするけど何故?まぁ目安として...)

    Mem: read: IOPS=410k, BW=1600MiB/s (1678MB/s)(93.8GiB/60001msec)
    SSD: read: IOPS=158k, BW=616MiB/s (646MB/s)(36.1GiB/60001msec)
    SD:read: IOPS=17.3k, BW=67.6MiB/s (70.9MB/s)(4054MiB/60004msec)
    HDD(SATA):read: IOPS=157, BW=630KiB/s (645kB/s)(36.9MiB/60036msec)
    HDD(SAS):read: IOPS=918, BW=3673KiB/s (3761kB/s)(215MiB/60004msec)

その他のメモ

9580-8i8e の消費電力

実測で推定10W程度だが、容量に余裕のある電源を使った方が良さそう。
手元のHDD用の12V/2AのACアダプタでは稼働しなかった。
dmesgで、PCIeがLinkDownのログが上がっており、認識すらしなかった。

公式MegaRADドライバ

BroadcomのMegaRAIDドライバをビルドしようと思ったが、エラーが出てビルドできない。
結果的に、カーネル側でMegaRAIDらしきドライバを有効にすることで動作したので良しとした。

/home/pi/megaraidsas-07.723.02.00/megaraidsas_base.c:45:10: fatal error: asm/unaligned.h: No such file or directory
45 | #include
| ^~~~~~~~~~~~~~~~~