なにかの技術メモ置き場

なにかの技術メモ置き場

@インフラエンジニア

CentOS8でハードウェアRAIDのディスクが認識されない part3

事象

CentOS8でdnf update後にOSを再起動したらOSが起動しなくなった。

環境

構成

OS RAIDコントローラ 備考
CentOS 8.1.1911 -> 8.2.2004 LSI MegaRAID SAS 2108 -

原因(順序立てて)

  1. dnf updateによりOSがマイナーバージョンアップした(8.1->8.2)。
  2. 一方、RAIDコントローラのドライバはCentOS8.1用のものしかインストールされていない。
  3. この状態でOSを再起動したことで、次回OS起動時に適したRAIDコントローラのドライバが存在しなくなった(CentOS8.2用のRAIDコントローラのドライバが必要)。
  4. RAIDコントローラのドライバが存在しないため、論理ディスクを認識できず、OS起動に失敗した。

対処

余力が無く割愛。
古いkernelかレスキューモードで起動してinitramfsの再作成とかするんだろう、というイメージ。
あるいは、一時的にDUDを使えるならそれで起動して、改めてOSにRAIDコントローラのドライバをインストールするなど。

対策

回避策1

CentOS8.1に手動でCentOS8.2用のRAIDコントローラのドライバをインストールする。かつ、その直後にOSをCentOS8.2にバージョンアップする。
→すでにCentOS8.1を運用中で、これからOSバージョンアップをする可能性がある環境向け。

回避策2

現時点の最初バージョン(8.2)のOSイメージ、RAIDコントローラのドライバを用いてOSをインストールする。
→OSを新規インストールできる環境向け。

操作手順

回避策1

事前確認

現在のOSのバージョンを確認する。

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

8.1。SASのドライバのバージョンを確認する。

[root@localhost ~]# rpm -qa | grep sas
kmod-megaraid_sas-07.707.51.00-1.el8_1.elrepo.x86_64

「el8_1」なのでCentOS8.1用であることがわかる。
# 厳密にはRHEL8.1用だがそのへんは割愛。

更新作業

RAIDコントローラのドライバ(DUD)をダウンロードしてきた。

[root@localhost ~]# ls -l
合計 692
-rw-------. 1 root root   1878  8月 25 00:50 anaconda-ks.cfg
-rw-r--r--. 1 root root 694272  8月 25 00:59 dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso
-rw-r--r--. 1 root root    116  8月 25 00:50 ks_centos8_01-post.log
-rw-------. 1 root root   1771  8月 25 00:50 original-ks.cfg

OS上で手動で適用するため、まずマウントする。

[root@localhost ~]# mount dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso /mnt/
mount: /mnt: 警告: デバイスは書き込み禁止です、読み込み専用でマウントします.

中身はこんな感じ。

[root@localhost ~]# ls -l /mnt/
合計 5
-rw-rw-r--. 1 502 506   28  5月  2 05:29 rhdd3
drwxrwsr-x. 3 502 506 2048  5月  2 05:29 rpms
drwxrwsr-x. 2 502 506 2048  5月  2 05:29 src

使うのはこれ。「el8_2」なのでCentOS8.2用。

[root@localhost ~]# ls -l /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm
-rw-rw-r--. 1 502 506 97252  5月  2 05:29 /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm

rpmコマンドで直接インストールしてみる。

[root@localhost ~]# rpm -ivh /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm
警告: /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID baadae52: NOKEY
エラー: 依存性の欠如:
        kernel >= 4.18.0-193.el8 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(__dynamic_dev_dbg) = 0xd1ebdaa0 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(_dev_info) = 0x828b6323 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(alloc_workqueue) = 0xdf9208c0 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dev_err) = 0xb05c257c は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dev_notice) = 0x638266e6 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dev_printk) = 0x37f6e9be は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dev_warn) = 0x61cd7cc3 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dma_alloc_attrs) = 0x100e5057 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dma_free_attrs) = 0x2a63c6dc は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dma_set_coherent_mask) = 0x0c0b6182 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
        kernel(dma_set_mask) = 0x72743f81 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています

依存関係で失敗した。dnfコマンドで試してみる。

[root@localhost ~]# dnf install /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm
メタデータの期限切れの最終確認: 0:00:06 時間前の 2020年08月25日 01時00分30秒 に実施しました。
依存関係が解決しました。
=============================================================================================================================
 パッケージ                     アーキテクチャー    バージョン                               リポジトリー              サイズ
=============================================================================================================================
アップグレード:
 kexec-tools                    x86_64              2.0.20-14.el8                            BaseOS                    485 k
 linux-firmware                 noarch              20191202-97.gite8a0f4c9.el8              BaseOS                     72 M
 kmod-megaraid_sas              x86_64              07.710.50.00-1.el8_2.elrepo              @commandline               95 k
依存関係のインストール:
 kernel-core                    x86_64              4.18.0-193.14.2.el8_2                    BaseOS                     28 M

トランザクションの概要
=============================================================================================================================
インストール    1 パッケージ
アップグレード  3 パッケージ

合計サイズ: 100 M
ダウンロードサイズの合計: 100 M
これでよろしいですか? [y/N]: y
(中略)
アップグレード済み:
  kexec-tools-2.0.20-14.el8.x86_64                               linux-firmware-20191202-97.gite8a0f4c9.el8.noarch
  kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64

インストール済み:
  kernel-core-4.18.0-193.14.2.el8_2.x86_64

完了しました!

いけた。結果を確認する。

[root@localhost ~]# rpm -qa | grep sas
kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64

依存関係によりel8_2のkernel-coreがインストールされたので、ここでOSのバージョンを確認してみる。

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

まだアップデートされていなかった。推測だが、ここでOSを再起動すると、次回は起動に失敗する。今度は逆で、OSが8.1に対しRAIDコントローラのドライバが8.2用となり、不整合となるため。
次に、OSをバージョンアップする。

[root@localhost ~]# dnf -y update
(中略)
完了しました!

OSのバージョンを確認する。

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

8.2にバージョンアップされた。無差別にアップデートしたので、念のためRAIDコントローラのドライバが意図せずアップデートやデグレードしていないか確認する。

[root@localhost ~]# rpm -qa | grep sas
kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64

問題ない。
それでは、いよいよOSを再起動する。

[root@localhost ~]# systemctl reboot
事後確認

まず、OSが正常に起動することを確認する。
一応、OSとRAIDコントローラのドライバのバージョンを最終確認する。

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@localhost ~]# rpm -qa | grep sas
kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64

以上。

対処2(恒久対処)

インストール環境に依るので割愛する。

参考サイト

なし

つぶやき

これ、CentOSがマイナーバージョンアップする度にRAIDコントローラのドライバをインストールし直さなきゃいけないわけか。dnf-automatic(旧yum-cron)な環境だったら地獄、そうでなくともうっかり見過ごしかねない。商用利用している環境があったらキツいだろうな・・・