LoginSignup
6
6

More than 1 year has passed since last update.

CentOS Stream 9類のLVMで既存のpvが無視される件

Posted at

前置き

最近やっとCentOS8のサーバーをCentOS Stream 9に置き換えて本格的に使い始めました。

RockyLinuxやAlmaLinuxもCentOS8からのマイグレーションということでは大変ありがたいのですが、じゃあそのまま9にして使うかというと悩ましく、悩ましいぐらいなら正統な方に属するCentOS Stream 9を使おうかと思った次第です。最悪AlmaLinux9とかにマイグレーションできるみたいだし…

CentOS Stream 9やRHEL9クローンは体感では、ほぼ同じバージョンのカーネルを採用しているUbuntu 22.04より快適です。理由がx86_64-v2特化やもっと深いところにあるのか、単にコンソールの表示が速いだけなのか、単に新品のパンツを履いたときぐらいのお気持ちなのかは不明。あとすべてにおいて速いというわけではなさそうですね。

ただ、使ってみると、古いOSで使っていたLVMのディスクを認識してくれていないことに気付きました。

lvもvgもpvも出てこない

再起動とかアップデートとかそのうち何かのタイミングで出てきてくれるのかなと思いきや、一向に出てきませんし、何もエラーも出しません。lvs, vgs, pvs, pvscanでも出てきません。

--devicesオプションでPVがあったところを強制的に指定してやると何とか出てきます。なので、/dev/sdcがそのデバイスだったとして、その状態で無理やりactivate

vgchange -ay Old_VG --devices /dev/sdc

とかするとmountすることもできるのですが、mountした状態ですら、pvもvgもlvも出てきません。
これはなかなか困ります。

なお、新規にpvcreateすると普通に出てきます。ここだけ見ると、まるでバージョンアップで新旧のLVMに互換性が無くなったような動作なので、驚いて作り直したりしないようにしましょう。

原因

というわけで原因です。公式ではないのですが、こちらによると、RHEL9から、pvの検索には
/etc/lvm/devices/system.devices ファイルのリストを使うようになったとのこと。

公式に近いところで唯一見つけられたのはBugzilla。
https://bugzilla.redhat.com/show_bug.cgi?id=2012830

いずれにせよ解決策は次の通りです。

解決策

方法その1) 昔と同じ挙動にする

メンテナンス用のマシンで、いろんなディスクを動的に付けたり外したりして認識してほしいというときには、昔と同じように動いてほしいものです。

/etc/lvm/devices/system.devicesを使わないようにして、昔と同じ動作をさせるには、lvm.confuse_devicesfile=0を設定すると良いようです。
CentOS Stream9のlvm.confではコメントアウトされているのでアンコメントすればよいですね。

/etc/lvm/lvm.conf(抜粋)
# Configuration option devices/use_devicesfile.
# Enable or disable the use of a devices file.
# When enabled, lvm will only use devices that
# are lised in the devices file. A devices file will
# be used, regardless of this setting, when the --devicesfile
# option is set to a specific file name.
# This configuration option has an automatic default value.
# use_devicesfile = 0

なお、CentOS8やUbuntu22.04のlvm.confにはそもそもエントリーがありませんでした。Ubuntuはコマンドもないので、非対応っぽいですね。上記のBugzillaによるとCentOS8.5からサポート(CentOS8だとデフォルトオフ)かな。

方法その2) 正しい使い方をしてみる

新しいやり方には正しい使い方が当然用意されています。こっちの方が良い結果が期待できそうです。新しすぎるとバグを踏む確率も上がるかもしれないですが…

/etc/lvm/devices/system.devicesにエントリを追加するためのコマンドは次の通りです。

/dev/sdcがそのデバイスだったとして

lvmdevices --adddev /dev/sdc

またはデバイスを指定しないでやってくれる

vgimportdevices -a

vgimportdevicesは、指定された(またはすべての)vgに対してlvmdevices --adddevを使うと書かれているので、余計なものを巻き込まない限りはどちらでも同じ結果になるはずです。
https://man7.org/linux/man-pages/man8/lvmdevices.8.html
https://man7.org/linux/man-pages/man8/vgimportdevices.8.html

普段はアップデート後にこれを実行するだけでよさそうですね。

感想

あんまり情報ないあたり、もうRHEL9互換ディストリかつ手作業かつベアメタル運用なんてのは希少of希少なんでしょうね。クラウドだとほぼLVM使わないだろうし…

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6