LinuxサーバーをCentOS 6から7に再インストールしました。サーバーには3 /home
つのドライブがあります/home
。システムSSDドライブ(それ以外をすべてホストします)と2つの4TB HDDドライブをホストします。すべてLVMを使用しています。2つの4TBドライブは(LVM自体のraidオプションを使用して)ミラーリングされ、/ homeパーティションで完全に満たされます。
問題は、4TBのディスクは問題なく認識され、LVMは問題なくボリュームを認識しますが、ボリュームを自動的にアクティブ化しないことです。それ以外はすべて自動的にアクティブになります。手動でアクティブ化できます。
/ homeに古いシステムドライブのイメージがあります。これにはLVMボリュームも含まれています。でマウントするとkpartx
、LVMがそれらを取得してアクティブ化します。しかし、これらのボリュームと非アクティブなボリュームの間に違いはありません。
ルートファイルシステムもLVMであり、これは問題なく起動します。
ただし、奇妙なことがわかります。実行するlvchange -aay
と、アクティブ化するドライブを指定する必要があることがわかります。自動的には行われません。私が指定した場合lvchange -ay lv_home
-それは動作します。
私はこの振る舞いの原因となるものを見つけることができません。
追加:(initを使用していvgchange -aay --sysinit
た)古いシステムが起動スクリプトにあることに気づきました。新しいものはsystemdを使用しておりvgchange
、そのスクリプトには呼び出しが表示されません。しかし、どこに置くべきかもわかりません。
追加2: systemdを理解し始める。私はスクリプトがどこにあるかを見つけて、それらがどのように呼び出されるかを理解し始めました。また、実行されたスクリプトをで確認できることもわかりましたsystemctl -al
。これは、起動後に既知の各udevブロックデバイスをlvmetad
呼び出すことを示していpvscan
ます。ただし、その時点で登録されているudevブロックデバイスは1つだけであり、これは認識されたlvmボリュームの1つです。ハードドライブもそこにありますが、異なるパスとはるかに長い名前の下にあります。認識されたブロックデバイスはのようなものですが8:3
、ハードドライブはのようなもの/device/something/
です。私はもうサーバーにいないので、正確に書くことはできません(これは後で修正します)。
私はそれがudevとデバイスの検出/マッピングに関係していると思います。私は夕方まで続き、その時にudevを勉強します。
他のすべてが失敗した場合、私は呼び出すスクリプトを見つけ、pvscan
常にすべてのデバイスをスキャンするように変更できることを確認しました。これで問題は解決しましたが、見苦しいハックのように見えるので、本当の根本原因を解明しようと思います。
追加3:わかりました。これがなぜ発生するのかはまだわかりませんが、少なくともかなり問題のない回避策を講じています。をpvscan
起動しlvmetad
た直後に、もう一度を呼び出すsystemdサービスを作成しました。特定のデバイスに対するもう1つの呼び出しはまだあり、実際にudev
それを呼び出すのはそれだと私は思います(それが私がそれへの参照を見つけた唯一の場所です)。なぜそれが他のハードドライブのためにそれを呼び出さないのですか-私にはわかりません。
lvmetad
-他には気づいていません)。