論理ボリュームのデバイスファイル
アレイを開始すると、論理ボリュームのデバイスファイルが作成され、アプリが論理ボリュームにアクセスできるようになります。論理ボリュームのデバイスファイルは、「/dev」フォルダー以下に作成されます。
また、論理ボリュームのデバイスファイルには、以下の2種類があります。
- 論理ボリュームのデバイスファイル
- 論理ボリューム上のパーティションのデバイスファイル
いずれも通常のHDDと考え方は同じですが、デバイスファイルの命名ルールは少し異なります。
論理ボリュームのデバイスファイル
論理ボリュームのデバイスファイルとは、論理ボリュームそのものを表すデバイスファイルです。通常のHDDで言うところの、「sda」や「sdb」に相当します。
論理ボリュームのデバイスファイルは、以下のように「md数値」で表現されます。
アレイの数に応じて数値の部分が変化します。
例えば3つのアレイが開始されている場合、「md127」「md126」「md125」といったように数値が変化します。
論理ボリューム上のパーティションのデバイスファイル
論理ボリューム上のパーティションのデバイスファイルとは、ユーザーが作成したパーティションを表すデバイスファイルのことです。通常のHDDで言うところの、「sda1」や「sdb2」に相当します。
論理ボリューム上のパーティションのデバイスファイルは、以下のように「論理ボリュームのデバイスファイル名pパーティション番号」で表現されます。
上記の「md127p1」は、論理ボリューム「md127」上の1番目のパーティションを表しています。
論理ボリューム「md127」に2つパーティションがある場合、「md127p1」「md127p2」といったようにパーティションを表す数値が変化します。
論理ボリュームのデバイスファイル名は誰が指定するのか
論理ボリュームのデバイスファイル名は、以下の2通りの方法で指定します。- ユーザーが指定する
- 「mdadm」が自動的に指定する
論理ボリューム上のパーティションのデバイスファイル名について
論理ボリューム上のパーティションのデバイスファイル名は、パーティションテーブルの情報から自動的に決定されます。ユーザーが指定する場合(論理ボリュームのデバイスファイル)
アレイを作成する時やアレイを構築する時、ユーザーは論理ボリュームのデバイスファイルを指定することができます。もちろん既存のデバイスファイルと重複しないデバイスファイル名を指定する必要があります。
デバイスファイルの指定例
以下のコマンドは「RAID 0」アレイを作成するコマンドです。赤字の箇所で論理ボリュームのデバイスファイルを指定しています。
sudo mdadm --create /dev/md/RAID0Array --level=raid0 --raid-devices=3 --chunk=32 --name=RAID0Array --verbose /dev/sdd1 /dev/sde1 /dev/sdf1
上記のコマンドでは「/dev」フォルダーではなく「/dev/md」フォルダー以下にデバイスファイルの指定を行っています。
しかも「md数値」ではありません。
「/dev/md」フォルダー以下にデバイスファイルを指定する
「mdadm」は、「/dev/md」フォルダー以下に任意の名称のデバイスファイルを指定すると、自動的に「/dev/md数値」のデバイスファイルを作成します。数値の箇所は 「mdadm」が既存のデバイスファイルと重複しないように適当な数値を割り振ってくれます。
この時、ユーザーが指定したデバイスファイルは「/dev/md数値」を示すシンボリックリンクとなります。
「/dev/md」フォルダー
「/dev/md」フォルダーを見ると、ユーザーが指定したデバイスファイル名でシンボリックリンクが作成されています。「プロパティー」画面を開いて「基本」タブをクリックすると、このシンボリックリンクのリンク先が「../md127」であることが分かります。
リンク先を確認すると、「/dev/md127」が存在しています。
ユーザーが指定する場合(論理ボリューム上のパーティションのデバイスファイル)
ユーザーが論理ボリュームのデバイスファイルを指定した場合、論理ボリューム上のパーティションのデバイスファイルがどうなるのかを見てみます。上記で記述した通り、論理ボリューム上のパーティションのデバイスファイル名は自動的に決定されます。
「/dev/md」フォルダー
「/dev/md」フォルダーを見ると、「ユーザーが指定したデバイスファイル名+パーティション番号」でシンボリックリンクが作成されています。「プロパティー」画面を開いて「基本」タブをクリックすると、このシンボリックリンクのリンク先が「../md127p1」であることが分かります。
リンク先を確認すると、「/dev/md127p1」が存在しています。
「mdadm」が自動的に指定する場合(論理ボリュームのデバイスファイル)
アレイを構築する時、構築方法によっては「mdadm」が自動的に論理ボリュームのデバイスファイルを決定します。どのようにデバイスファイル名が決定されるのか
「mdadm」は、論理ボリュームのデバイスファイル名を、「ホームホスト名」と「アレイの名称」から決定します。もし既存のデバイスファイルと重複するデバイスファイル名になった場合、デバイスファイル名の後ろに「_0」などの文字を加えます。
アレイの構築例
以下のコマンドは、作成したアレイをすべて検出し、アレイを構築及び開始するコマンドです。アレイは上記の「ユーザー指定する場合」で紹介したコマンドで作成し、そのアレイを停止した状態です。
「ホームホスト名」は、アレイを作成したPCのホスト名です。
「アレイの名称」は「RAID0Array」です。
sudo mdadm --assemble --scan
「/dev/md」フォルダー
「/dev/md」フォルダーを見ると、ユーザーが指定したデバイスファイル名でシンボリックリンクが作成されています。「プロパティー」画面を開いて「基本」タブをクリックすると、このシンボリックリンクのリンク先が「../md127」であることが分かります。
リンク先を確認すると、「/dev/md127」が存在しています。
「mdadm」が自動的に指定する場合(論理ボリューム上のパーティションのデバイスファイル)
「mdadm」が論理ボリュームのデバイスファイルを自動的に指定した場合、論理ボリューム上のパーティションのデバイスファイルがどうなるのかを見てみます。上記で記述した通り、論理ボリューム上のパーティションのデバイスファイル名は自動的に決定されます。
「/dev/md」フォルダー
「/dev/md」フォルダーを見ると、「ユーザーが指定したデバイスファイル名+パーティション番号」でシンボリックリンクが作成されています。「プロパティー」画面を開いて「基本」タブをクリックすると、このシンボリックリンクのリンク先が「../md127p1」であることが分かります。
リンク先を確認すると、「/dev/md127p1」が存在しています。
デバイスファイルのマッピング
論理ボリュームのデバイスファイルは、上記のように「/dev」フォルダーと「/dev/md」フォルダーに作成されます。これらのマッピング情報は、以下のコマンドで一覧表示できます。
sudo cat /run/mdadm/map
行ごとに各論理ボリュームのマッピング情報が表示されます。
それぞれの情報はスペースで区切られており、左から以下の意味になります。
値 | 意味 |
---|---|
md127 | 「/dev」フォルダー内の論理ボリュームのデバイスファイル |
1.2 | メタデータのバージョン |
8130f78a:513e989f:0881e369:bed3a27b | アレイのUUID |
/dev/md/RAID0Array | 論理ボリュームのデバイスファイル(シンボリックリンク) |
デバイスファイルの決め打ちに注意
シェルスクリプトなど、論理ボリュームのデバイスファイルを決め打ちして処理を行う場合は注意が必要です。デバイスファイルは状況により変化する
ユーザーが論理ボリュームのデバイスファイル指定した場合は、デバイスファイルが重複しない限り指定された通りになりますが、「/dev/md番号」は状況により変化します。またUbuntu起動時にアレイの構築とアレイの開始が自動的に行われます。
これは「mdadmが自動的に指定する場合」に相当します。
この場合、論理ボリュームのデバイスファイルは状況により変化します。
アレイを新規に作成したり削除した場合、既存のアレイの論理ボリュームのデバイスファイルが変更される可能性があります。
従って、上記で紹介した論理ボリュームのデバイスファイルへのアクセスは、おすすめしません。
どうすればよいのか
それでは困る場合、論理ボリュームのデバイスファイルや論理ボリューム上のパーティションのデバイスファイルを一意に識別できる方法があるので、そちらを利用します。「論理ボリュームのデバイスファイルを一意に識別するには」を参考にしてください。