11 mdadmによるソフトウェアRAIDアレイのサイズ変更 #
本項では、ソフトウェアRAID 1、4、5、または6のデバイスのサイズを複数デバイス管理(mdadm(8)
)ツールで増減する方法について説明します。
既存のソフトウェアRAIDデバイスのサイズ変更には、各コンポーネントパーティションが提供するスペースの増減が必要です。デバイスの使用可能な領域の変更を利用するために、RAIDに存在するファイルシステムもサイズ変更できる必要があります。SUSE Linux Enterprise Serverでは、ファイルシステムBtrfs、Ext2、Ext3、Ext4、ReiserFS、およびXFS (サイズの増加のみ)用のファイルシステムサイズ変更ユーティリティが提供されています。詳細については、第2章 「ファイルシステムのサイズ変更」を参照してください。
mdadm
ツールは、ソフトウェアRAIDレベル 1、4、5、および6に対してだけサイズ変更をサポートします。これらのRAIDレベルには耐障害性があるので、一度に1つずつ、サイズ変更するコンポーネントパーティションを削除できます。原則として、RAIDパーティションのホットリサイズが可能ですが、その場合は、データの保全に特に注意する必要があります。
パーティションまたはファイルシステムのサイズ変更には、データを失う可能性をはらむリスクが伴います。データの喪失を避けるには、データを必ずバックアップしてから、サイズ変更タスクを開始します。
RAIDのサイズ変更には、次のようなタスクがあります。タスクの実行順序は、サイズを増加するか、減少するかによって異なります。
仕事 |
説明 |
サイズを増大させる場合の順序 |
サイズを減少させる場合の順序 |
---|---|---|---|
各コンポーネントパーティションのサイズを変更します。 |
各コンポーネントパーティションのアクティブなサイズを増加または減少します。一度に1つのコンポーネントパーティションだけを削除し、そのサイズを変更してから、パーティションをRAIDに戻します。 |
1 |
2 |
ソフトウェアRAID自体をサイズ変更します。 |
RAIDは、ベースのコンポーネントパーティションの増減を自動的には認識しません。したがって、RAIDに新しいサイズを知らせる必要があります。 |
2 |
3 |
ファイルシステムのサイズを変更します。 |
RAIDに常駐するファイルシステムをサイズ変更する必要があります。これは、サイズ変更のツールを提供するファイルシステムの場合のみ可能です。 |
3 |
1 |
以降の各項の手順では、次の表に示すデバイス名を使用します。これらの名前は変更して、必ずご使用のデバイスの名前を使用してください。
RAIDデバイス |
コンポーネントパーティション |
---|---|
|
|
11.1 ソフトウェアRAIDのサイズの増加 #
ソフトウェアRAIDのサイズを増やすには、複数のタスクを所定の順序で実行する必要があります。まずRAIDを構成するすべてのパーティションのサイズを増加させ、次にRAID自体のサイズを増加させます。そして最後に、ファイルシステムのサイズを増加させます。
RAIDに、ディスクの耐障害性がないか、単に一貫性がない場合、パーティションのどれかを削除すると、データが失われます。パーティションの削除は注意深く行い、必ず、データのバックアップをとってください。
11.1.1 コンポーネントパーティションのサイズの増加 #
RAID 1、4、5、または6のサイズを増加するには、本項の手順を適用します。RAID内のコンポーネントパーティションごとに、RAIDからパーティションを削除し、そのサイズを変更し、パーティションをRAIDに戻し、RAIDが安定するまで待機してから続行します。パーティションが削除されている間、RAIDはディグレードモードで動作し、ディスクの 耐障害性がまったくないか、または低下しています。複数の同時ディスク障害を許容できるRAIDの場合でも、一度に2つ以上のパーティションを削除しないでください。RAID用コンポーネントパーティションのサイズを増加させるには、次の手順に従います。
端末コンソールを開きます。
次のように入力して、RAIDアレイが一貫性を保っており、同期されていることを確認します。
cat /proc/mdstat
このコマンドの出力によって、RAIDアレイがまだ同期中とわかる場合は、同期化の完了まで待って、続行してください。
コンポーネントパーティションの1つをRAIDアレイから削除します。たとえば、次のように入力して、
/dev/sda1
を削除します。sudo mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1
成功するためには、failとremoveの両方のアクションを指定する必要があります。
次のオプションの1つを実行して、前の手順で削除したパーティションのサイズを増加させます。
YaSTパーティショナやpartedなどのディスクパーティショナを使用して、パーティションのサイズを増やします。通常は、このオプションが選択されます。
パーティションの常駐ディスクを、容量のより大きいデバイスに置き換えます。このオプションは、元ディスクの他のファイルシステムがシステムによりアクセスされない場合だけ選択できます。置き換え用デバイスをRAIDに追加すると、元のデバイスにあったデータをすべて再構築しなければならないので、データの同期にはるかに長い時間がかかります。
パーティションをRAIDアレイに再追加します。たとえば、次のように入力して、
/dev/sda1
を追加します。sudo mdadm -a /dev/md0 /dev/sda1
RAIDが同期され、一貫性をもつまで待機してから、次のパーティションの処理に進みます。
アレイ内の残りのコンポーネントデバイスごとに、これらの手順を繰り返します。正しいコンポーネントパーティションに対して、必ずコマンドを変更してください。
カーネルがRAIDのパーティションテーブルを再読み込みできないというメッセージが表示されたら、すべてのパーティションのサイズ変更後にコンピュータを再起動して、パーティションテーブルの更新を強制する必要があります。
11.1.2項 「RAIDアレイのサイズの増加」に進みます。
11.1.2 RAIDアレイのサイズの増加 #
RAID内の各コンポーネントパーティションのサイズ変更後(11.1.1項 「コンポーネントパーティションのサイズの増加」参照)も、新しい使用可能スペースの認識を強制するまで、RAIDアレイの設定では、元のアレイサイズが使用され続けます。RAIDアレイのサイズを指定したり、使用可能な最大スペースを使用できます。
本項の手順では、RAIDデバイスのデバイス名として /dev/md0
を使用しています。この名前は変更して、必ずご使用のデバイスの名前を使用してください。
端末コンソールを開きます。
次のように入力して、RAIDアレイが一貫性を保っており、同期されていることを確認します。
cat /proc/mdstat
このコマンドの出力によって、RAIDアレイがまだ同期中とわかる場合は、同期化の完了まで待って、続行してください。
次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズをチェックします。
sudo mdadm -D /dev/md0 | grep -e "Array Size" -e "Dev Size"
次のいずれかの操作を行います。
次のように入力して、アレイサイズを使用可能な最大サイズまで増加します。
sudo mdadm --grow /dev/md0 -z max
次のように入力して、アレイサイズを使用可能な最大サイズまで増加します。
sudo mdadm --grow /dev/md0 -z max --assume-clean
アレイは、デバイスに追加された領域を使用しますが、この領域は同期されません。これがRAID 1に推奨される理由は、同期が不要だからです。メンバーデバイスに追加されたスペースが事前にゼロ化されていれば、他のRAIDレベルに有用なことがあります。
次のように入力して、アレイサイズを指定の値まで増加します。
sudo mdadm --grow /dev/md0 -z SIZE
SIZEを、キロバイト(1キロバイトは1024バイト)単位で目的のサイズを表す整数値で置き換えます。
次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズを再チェックします。
sudo mdadm -D /dev/md0 | grep -e "Array Size" -e "Dev Size"
次のいずれかの操作を行います。
アレイのサイズ変更が成功していたら、11.1.3項 「ファイルシステムのサイズの増加」を続行します。
アレイが予期どおりにサイズ変更されていない場合は、いったん再起動してから、このプロシージャを再試行する必要があります。
11.1.3 ファイルシステムのサイズの増加 #
アレイサイズの増加後は (11.1.2項 「RAIDアレイのサイズの増加」参照)、ファイルシステムのサイズ変更ができます。
ファイルシステムのサイズを使用可能な最大スペースまで増加したり、正確なサイズを指定できます。ファイルシステムに正確なサイズを指定する場合は、その新しいサイズが次の条件を満たすかどうかを必ず確認してください。
新しいサイズは、既存データのサイズより大きくなければなりません。さもないと、データが失われます。
ファイルシステムのサイズは使用可能なスペースより大きくできないので、新しいサイズは、現在のRAIDサイズ以下でなければなりません。
詳しい手順については、第2章 「ファイルシステムのサイズ変更」を参照してください。
11.2 ソフトウェアRAIDのサイズの削減 #
ソフトウェアRAIDのサイズを減らすには、複数のタスクを所定の順序で実行する必要があります。まずファイルシステムのサイズを縮小し、次にRAIDを構成するすべてのパーティションのサイズを縮小します。そして最後に、RAID自体のサイズを縮小します。
RAIDに、ディスクの耐障害性がないか、単に一貫性がない場合、パーティションのどれかを削除すると、データが失われます。パーティションの削除は注意深く行い、必ず、データのバックアップをとってください。
XFSでフォーマットされたファイルシステムのサイズを縮小することはできません。XFSではそのような機能がサポートされていないためです。そのため、XFSファイルシステムを使用するRAIDのサイズを縮小することはできません。
11.2.1 ファイルシステムのサイズの削減 #
RAIDデバイス上のファイルシステムのサイズを削減する際には、新しいサイズが次の条件を満たすかどうかを必ず確認してください。
新しいサイズは、既存データのサイズより大きくなければなりません。さもないと、データが失われます。
ファイルシステムのサイズは使用可能なスペースより大きくできないので、新しいサイズは、現在のRAIDサイズ以下でなければなりません。
詳しい手順については、第2章 「ファイルシステムのサイズ変更」を参照してください。
11.2.2 RAIDアレイサイズの削減 #
ファイルシステムのサイズ変更後(11.2.1項 「ファイルシステムのサイズの削減」を参照)、RAIDアレイ設定では、利用可能スペースを縮小するよう強制するまで、元のアレイサイズを使い続けます。RAIDが、削減したセグメントサイズを使用するようにするには、mdadm --grow
モードを使用します。それを行うには、-zオプションを使用して、RAID内の各デバイスが使用するスペースの量を、キロバイトで指定する必要があります。このサイズは、チャンクサイズの倍数である必要があり、RAIDのスーパーブロックをデバイスに書き込むためのスペースとして、約128KBを残しておかなければなりません。
本項の手順では、RAIDデバイスのデバイス名として /dev/md0
を使用しています。コマンドを変更して、必ずご使用のデバイスの名前を使用してください。
端末コンソールを開きます。
次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズをチェックします。
sudo mdadm -D /dev/md0 | grep -e "Array Size" -e "Dev Size"
次のコマンドで、アレイのデバイスサイズを指定の値まで減少させます。
sudo mdadm --grow /dev/md0 -z SIZE
SIZEを、キロバイト単位で目的のサイズを表す整数値で置き換えます。(1キロバイトは1024バイト)。
たとえば、次のコマンドでは、各RAIDデバイスのセグメントサイズを約40 GBに設定し、チャンクサイズは64 KBです。これには、RAIDのスーパーブロック用の128 KBが含まれます。
sudo mdadm --grow /dev/md2 -z 41943168
次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズを再チェックします。
sudo mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
次のいずれかの操作を行います。
アレイのサイズ変更が成功していたら、11.2.3項 「コンポーネントパーティションのサイズの削減」を続行します。
アレイが予期どおりにサイズ変更されていない場合は、いったん再起動してから、このプロシージャを再試行する必要があります。
11.2.3 コンポーネントパーティションのサイズの削減 #
RAID内の各デバイスで使用されるセグメントサイズの縮小後(11.2.2項 「RAIDアレイサイズの削減」を参照)、各コンポーネントパーティション内の残りのスペースは、そのRAIDでは使われません。パーティションを現在のサイズのまま残して将来のRAIDの拡大に備えることも、今は使用しないそのスペースを利用することもできます。
そのスペースを利用するには、コンポーネントパーティションを1つずつ削減します。コンポーネントパーティションごとに、そのパーティションをRAIDから削除し、パーティションサイズを縮小し、パーティションをRAIDに戻したら、RAIDが安定するまで待機します。メタデータに備えるには、11.2.2項 「RAIDアレイサイズの削減」でRAIDに対して指定したサイズより、若干大きなサイズを指定する必要があります。
パーティションが削除されている間、RAIDはディグレードモードで動作し、ディスクの 耐障害性がまったくないか、または低下しています。複数の同時ディスクエラーに耐えるRAIDの場合でも、一度に2つ以上のコンポーネントパーティションを削除しないでください。RAID用コンポーネントパーティションのサイズを縮小するには、次の手順に従います。
端末コンソールを開きます。
次のように入力して、RAIDアレイが一貫性を保っており、同期されていることを確認します。
cat /proc/mdstat
このコマンドの出力によって、RAIDアレイがまだ同期中とわかる場合は、同期化の完了まで待って、続行してください。
コンポーネントパーティションの1つをRAIDアレイから削除します。たとえば、次のように入力して、
/dev/sda1
を削除します。sudo mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1
成功するためには、failとremoveの両方のアクションを指定する必要があります。
前の手順で削除したパーティションのサイズを、セグメントサイズに設定したサイズより若干小さいサイズに減らします。このサイズは、チャンクサイズの倍数であり、RAIDのスーパーブロック用に128 KBを確保する必要があります。YaSTパーティショナやコマンドラインツールpartedなどを使用して、パーティションのサイズを縮小します。
パーティションをRAIDアレイに再追加します。たとえば、次のように入力して、
/dev/sda1
を追加します。sudo mdadm -a /dev/md0 /dev/sda1
RAIDが同期され、一貫性をもつまで待機してから、次のパーティションの処理に進みます。
アレイ内の残りのコンポーネントデバイスごとに、これらの手順を繰り返します。正しいコンポーネントパーティションに対して、必ずコマンドを変更してください。
カーネルがRAIDのパーティションテーブルを再読み込みできないというメッセージが表示されたら、すべてのパーティションのサイズ変更後にコンピュータを再起動する必要があります。
(オプション)RAIDとファイルシステムのサイズを拡大して、現在は小さめのコンポーネントパーティション内のスペースの最大量を利用し、後でファイルシステムのサイズを増やします。手順については、11.1.2項 「RAIDアレイのサイズの増加」を参照してください。