lsblk -lと実行した際に、ディスク容量の入れ替わりが起きていた場合の原因と対応法

Linux

ブロックデバイスの情報を表示する際に「lsblk -l」のコマンドを実行します。私はこのコマンドを実行した際に、ディスク容量の入れ替わりが発生していたことがありました。最初見た時は「なんで??」と放心していたことを今でも覚えています。

この記事では、ディスク容量の入れ替わりが起きる原因と事象発生後の対処方法を紹介します。

発生した事象

具体的について、コマンドの実行結果の例を出しながら解説します。

入れ替わり前

NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda     8:0    0  100G  0 disk
sda1    8:1    0   50G  0 part /
sda2    8:2    0   49G  0 part /home
sda3    8:3    0    1G  0 part [SWAP]
sdb     8:16   0  200G  0 disk
sdc     8:17   0  250G  0 disk
sdd     8:18   0  300G  0 disk
sde     8:19   0  350G  0 disk
sdf     8:20   0  400G  0 disk

入れ替わり後

NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda     8:0    0  100G  0 disk
sda1    8:1    0   50G  0 part /
sda2    8:2    0   49G  0 part /home
sda3    8:3    0    1G  0 part [SWAP]
sdb     8:16   0  350G  0 disk
sdc     8:17   0  300G  0 disk
sdd     8:18   0  400G  0 disk
sde     8:19   0  200G  0 disk
sdf     8:20   0  250G  0 disk

2つを比較した際にsdb以降の容量が変動していると思います。私が経験した事象は上記のようなものです。

対処方法

類似の事象が発生した際には、サーバのリブートを行うことで解決する可能性が高いです。事象発生時には、落ち着いてサーバのリブートを行ってみて下さい。

サーバのリブートを行うには下記のコマンドを実行する必要があります。※下記のコマンドはrootで実行してください。

systemctl reboot

なお、リブートする際は「w」コマンドを実行して、サーバ内に人がいないことを確認してから行いましょう。

事象の発生原因

結論からいくと、ディスクの入れ替わりが発生してしまう原因は、サーバの仕様によるものです。まずは、この仕様について解説したいと思います。ざっくりと下記の感じです。

見出し
  • OSはディスクのデバイス名を保持していない
  • ディスク名(sda、sdabなど)はOS側起動時に、ディスクを認識した順番に割り当てられる。
  • ディスク構成が同じの場合、認識順は同じになることが多いので、固定されているように見える。
  • OS起動時に認識された順番が異なった場合、デバイス名の変動が起きたように見える
  • ディスクの中身とデバイス名はそれぞれ独立関係にある。デバイス名の変動が起きてもディスクの中身に影響を及ぼさない

まず、ディスクのデバイス名はOS側で保持されている物ではないです。デバイス名は、OS起動時にディスクを認識した順番に割り当てられます。OS側では「このディスクがsdaでこっちのディスクはsdb」のような情報は保持されていません。

このことから、ディスクのデバイス名は起動するたびに異なります。ここで、ディスクの構成に変化がない場合、起動順番や認識順番が同一になることが多いです。そのため、デバイス名が固定されているように見えます。

しかし、リブートのタイミングで再度ディスク情報を読み込んだ際に、認識順番が変わる可能性があります。前回のサーバ起動時と認識順番と異なり、割り当てられるデバイス名が変わることで、ディスクの入れ替わりが発生しているように見えます。

なお、ディスクとデバイス名は独立関係にあります。そのため、デバイス名の変動が起きても、ディスクの中身には影響はないのでご安心ください。※ミドルウェアの設定でLV名ではなくデバイス名を指定している場合には、注意が必要なことがあります。

コメント

タイトルとURLをコピーしました