論理ボリュームのサイズを一時期に変更する
論理ボリュームのサイズ(容量)を一時期に変更します。例えば、3つの「100MiB」の物理ボリュームで「RAID 1」アレイを作成しているとします。
この時、論理ボリュームのサイズは約「100MiB」になります。
この論理ボリュームのサイズを「50MiB」に減らすことができます。
また、「50MiB」に減らした論理ボリュームのサイズを「90MiB」に増やすこともできます。
「一時期に」というのは、アレイを停止した際に元の論理ボリュームのサイズに戻るということです。
この方法による論理ボリュームのサイズの変更は、メタデータに反映されません。
使用目的
論理ボリュームのサイズの一時的な変更は、物理ボリュームのサイズを縮小する前など、論理ボリューム上のパーティションやファイルシステムの整合性を確認するために行います。実際に物理ボリュームのサイズを縮小する前に必ず、論理ボリューム上のパーティションやファイルシステムのサイズの縮小、及び一時的な論理ボリュームのサイズの縮小を行い、論理ボリューム上のパーティションやファイルシステムに問題がないか確認してください。
GPTについて
パーティションテーブルの形式が「GPT」の場合、ディスクの情報やパーティションの情報(以下GPTデータ)を記録する領域が2箇所あります。2箇所用意することで、片方のGPTデータが破損しても、もう片方のGPTデータを元にGPTデータを復旧できるよう、冗長性が提供されています。
またお互いの位置がディスク上のどこにあるのか、GPTデータ内にその情報が保存されています。
論理ボリュームのサイズの変更において、この構造に留意しなければなりません。
2箇所あるうちの1箇所(バックアップGPTデータ)は、ディスクの最後に保存されます。
物理ボリュームのサイズが変わるということは、論理ボリュームのサイズも変わるということです。
例えば物理ボリュームのサイズを増やせば、ディスクの最後に保存しなければならないGPTデータが、ディスクの終わりよりも前に位置してしまうことになります。
パーティションテーブルの形式やファイルシステムは、「mdadm」や「MDドライバー」が考慮するものではないため、自動的に修正を行うことはありません。
ユーザーがパーティションやファイルシステムの操作を行うソフトウェアを用いて、調整や修復を行う必要があります。
事前にその方法を調べておいてください。
最後のパーティションの終了位置について
「MBR」形式のパーティションテーブルでは、最後のパーティションの「終了セクタ」が論理ボリュームの総セクター数以下でなければなりません。「GPT」形式のパーティションテーブルでは、最後のパーティションの「終了セクタ」に加え、バックアップGPTデータ用に33セクター必要です。
「GParted」でパーティションを縮小する際、最後のパーティションの後ろに「1MiB」以上の空き容量を確保しておくと良いでしょう。
パーティションやファイルシステムのサイズの確認について
物理ボリュームのサイズを縮小する時は、パーティションやファイルシステムのサイズに注意してください。縮小後の物理ボリュームのサイズから、論理ボリュームのサイズがいくつになるのか確認し、論理ボリュームのサイズ内にパーティションやファイルシステムが収まるようにしなければなりません。
ディスクの操作を行うアプリによっては、指定するサイズにMiBなど様々な単位が用意されています。
変更後に指定したサイズ通りになっているか、論理ボリュームのサイズ内にパーティションやファイルシステムが収まっているか確認する必要があります。
特にぎりぎりのサイズで調整する場合は注意してください。
というわけで
各パーティションテーブルの形式の構造や、ファイルシステムの構造がよく分からないのであれば、物理ボリュームのサイズの変更は行わないでください。最悪パーティションやファイルシステムが破損し、データが失われる可能性があります。
事前にデータはバックアップしておいてください。
事前に論理ボリューム上のパーティションはすべてアンマウントしておいてください。
不用意に論理ボリューム上のパーティションを操作しないよう注意してください。
サイズ調整を間違えるとどうなるか
サイズ調整を間違えると、パーティションが論理ボリュームのサイズを超えて配置されるため、アプリは正常に動作しなくなります。以下は「ディスク」と「GParted」の例です。
パーティションテーブルの形式は、「MBR」です。
100MiBの物理ボリュームで「RAID 1」アレイを作成しています。
サイズ調整する前の状態
論理ボリュームのサイズを調整する前の状態です。ディスク
「ディスク」では以下のように表示されます。GParted
「GParted」では以下のように表示されます。サイズ調整後の状態
パーティション(ファイルシステム)のサイズを変更せず、論理ボリュームのサイズを「50MiB」に変更した状態です。ディスク
「ディスク」では以下のように表示されます。論理ボリュームのサイズは「52MB」と表示されていますが、パーティションのサイズは「105MB」と表示されています。
パーティションが論理ボリュームのサイズを超えて配置されています。
GParted
「GParted」では以下のように表示されます。パーティションテーブルが認識されない状態になります。
パーティションテーブルの形式が「GPT」の場合、「GParted」がクラッシュするケースがありました。
コマンドのフォーマット
「mdadm」コマンドのフォーマットは以下になります。mdadm <モード> <論理ボリューム> <論理ボリュームのサイズ>
ショートオプションとロングオプションについて
モードやオプションの記述方法には、「ショートオプション」と「ロングオプション」の2種類があります。どちらを利用しても良いでのですが、ここでは意味が分かりやすい「ロングオプション」を使用します。
モード
モードは、「mdadm」の動作モードを指定します。アレイの再形成(Grow Mode)なので、以下のオプションを指定します。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-G | --grow | --grow |
論理ボリューム
操作対象の論理ボリュームのデバイスファイルを指定します。複数の論理ボリュームのデバイスファイルを指定することはできません。
記述例
/dev/md/RAID1Array論理ボリュームのサイズ
論理ボリュームのサイズを指定します。指定するサイズの単位は、「KiB」です。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-Z | --array-size | --array-size=1024 |
単位の指定
単位の指定を省略した場合は、上記でも記述した通り「KiB」が単位になります。以下のように単位を指定することも可能です。
単位の指定 | 単位 | 記述例 | 記述例の説明 |
---|---|---|---|
単位の指定なし(省略) | KiB | --array-size=32 | 論理ボリュームのサイズに「32KiB」を指定する |
M | MiB | --array-size=1M | 論理ボリュームのサイズに「1MiB」を指定する |
G | GiB | --array-size=1G | 論理ボリュームのサイズに「1GiB」を指定する |
元の値に戻すには
論理ボリュームのサイズを変更前(本来の値)に戻すには、このオプションに以下の値を指定します。値 | 記述例 |
---|---|
max | --array-size=max |