Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 SUSE Linux Enterprise Server 11 SP4

11 mdadmによるソフトウェアRAIDアレイのサイズ変更

本項では、ソフトウェアRAID 1、4、5、または6のデバイスのサイズを複数デバイス管理(mdadm(8))ツールで増減する方法について説明します。

警告
警告

このセクションに示されたタスクを開始する前に、すべてのデータに有効なバックアップがあることを確認してください。

11.1 サイズ変更プロセスの理解

既存のソフトウェアRAIDデバイスのサイズ変更には、各コンポーネントパーティションが提供するスペースの増減が必要です。

11.1.1 ソフトウェアRAIDサイズ変更のガイドライン

mdadm(8)ツールは、ソフトウェアRAIDレベル1、4、5、および6に対してだけサイズ変更をサポートします。これらのRAIDレベルには耐障害性があるので、一度に1つづつ、サイズ変更するコンポーネントパーティションを削除できます。原則として、RAIDパーティションのホットリサイズが可能ですが、その場合は、データの保全に特に注意する必要があります。

デバイス上の使用可能スペースで変更内容を利用するために、RAIDに常駐するファイルシステムもサイズ変更できる必要があります。SUSE® Linux Enterprise Server 11では、ファイルシステムExt2、Ext3、およびReiserFSに対して、ファイルシステムのサイズ変更ユーティリティを使用できます。このユーティリティは、次のようにサイズの増減をサポートします。

表 11.1: ファイルシステムサイズ変更のサポート

ファイルシステム

ユーティリティ

サイズを増加

サイズを減少

Ext2またはExt3

resize2fs

はい(ただし、オフラインのみ)

はい(ただし、オフラインのみ)

ReiserFS

resize_reiserfs

はい(オンラインまたはオフライン)

はい(ただし、オフラインのみ)

パーティションまたはファイルシステムのサイズ変更には、データを失う可能性をはらむリスクが伴います。

警告
警告

データの喪失を避けるには、データを必ずバックアップしてから、サイズ変更タスクを開始します。

11.1.2 タスクの概要

RAIDのサイズ変更には、次のようなタスクがあります。タスクの実行順序は、サイズを増加するか、減少するかによって異なります。

表 11.2: RAIDのサイズ変更に必要なタスク

仕事

説明

サイズを増大させる場合の順序

サイズを減少させる場合の順序

各コンポーネントパーティションのサイズを変更します。

各コンポーネントパーティションのアクティブなサイズを増加または減少します。一度に1つのコンポーネントパーティションだけを削除し、そのサイズを変更してから、パーティションをRAIDに戻します。

1

2

ソフトウェアRAID自体をサイズ変更します。

RAIDは、ベースのコンポーネントパーティションの増減を自動的には認識しません。したがって、RAIDに新しいサイズを知らせる必要があります。

2

3

ファイルシステムのサイズを変更します。

RAIDに常駐するファイルシステムをサイズ変更する必要があります。これは、サイズ変更のツールを提供するファイルシステムの場合のみ可能です(Ext2、Ext3、ReiserFSなど)。

3

1

11.2 ソフトウェアRAIDのサイズの増加

始める前に、11.1項 「サイズ変更プロセスの理解」のガイドラインをレビューしてください。

11.2.1 コンポーネントパーティションのサイズの増加

RAID 1、4、5、または6のサイズを増加するには、本項の手順を適用します。RAID内のコンポーネントパーティションごとに、RAIDからパーティションを削除し、そのサイズを変更し、パーティションをRAIDに戻し、RAIDが安定するまで待機してから続行します。パーティションが削除されている間、RAIDはディグレードモードで動作し、ディスクの 耐障害性がまったくないか、または低下しています。複数の同時ディスク障害を許容できるRAIDの場合でも、一度に2つ以上のパーティションを削除しないでください。

警告
警告

RAIDに、ディスクの耐障害性がないか、単に一貫性がない場合、パーティションのどれかを削除すると、データが失われます。パーティションの削除は注意深く行い、必ず、データのバックアップをとってください。

このセクションのプロシージャでは、次のテーブルに示すデバイス名を使用します。これらの名前は変更して、必ずご使用のデバイスの名前を使用してください。

表 11.3: コンポーネントパーティションのサイズを増加するシナリオ

RAIDデバイス

コンポーネントパーティション

/dev/md0

/dev/sda1

/dev/sdb1

/dev/sdc1

RAID用コンポーネントパーティションのサイズを増加するには:

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. 次のように入力して、RAIDアレイが一貫性を保っており、同期されていることを確認します。

    cat /proc/mdstat

    このコマンドの出力によって、RAIDアレイがまだ同期中とわかる場合は、同期化の完了まで待って、続行してください。

  3. コンポーネントパーティションの1つをRAIDアレイから削除します。たとえば、次のように入力して、/dev/sda1を削除します。

    mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1

    成功するためには、failとremoveの両方のアクションが行われる必要があります。

  4. 次のオプションの1つを実行して、ステップ 3で削除したパーティションのサイズを増加します。

    • fdisk(8)cfdisk(8)parted(8)などのディスクパーティショナを使用して、パーティションのサイズを増加します。通常は、このオプションが選択されます。

    • パーティションの常駐ディスクを、容量のより大きいデバイスに置き換えます。

      このオプションは、元ディスクの他のファイルシステムがシステムによりアクセスされない場合だけ選択できます。置き換え用デバイスをRAIDに追加すると、元のデバイスにあったデータをすべて再構築しなければならないので、データの同期にはるかに長い時間がかかります。

  5. パーティションをRAIDアレイに再追加します。たとえば、次のように入力して、/dev/sda1を追加します。

    mdadm -a /dev/md0 /dev/sda1

    RAIDが同期され、一貫性をもつまで待機してから、次のパーティションの処理に進みます。

  6. アレイ内の残りのコンポーネントデバイスごとに、ステップ 2からステップ 5まで繰り返します。正しいコンポーネントパーティションに対して、必ずコマンドを変更してください。

  7. カーネルがRAIDのパーティションテーブルを再読み込みできないというメッセージが表示されたら、すべてのパーティションのサイズ変更後にコンピュータを再起動して、パーティションテーブルの更新を強制する必要があります。

  8. 11.2.2項 「RAIDアレイのサイズの増加」に進みます。

11.2.2 RAIDアレイのサイズの増加

RAID内の各コンポーネントパーティションのサイズ変更後(11.2.1項 「コンポーネントパーティションのサイズの増加」参照)も、新しい使用可能スペースの認識を強制するまで、RAIDアレイの設定では、元のアレイサイズが使用され続けます。RAIDアレイのサイズを指定したり、使用可能な最大スペースを使用できます。

本項の手順では、RAIDデバイスのデバイス名として //dev/md0を使用しています。この名前は変更して、必ずご使用のデバイスの名前を使用してください。

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. 次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズをチェックします。

    mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
  3. 次のいずれかの操作を行います。

    • 次のように入力して、アレイサイズを使用可能な最大サイズまで増加します。

      mdadm --grow /dev/md0 -z max
    • 次のように入力して、アレイサイズを使用可能な最大サイズまで増加します。

      mdadm --grow /dev/md0 -z max --assume-clean

      アレイは、デバイスに追加されたスペースを利用しますが、このスペースは同期されません。これがRAID1に推奨される理由は、同期が不要だからです。メンバーデバイスに追加されたスペースが事前にゼロ化されていれば、他のRAIDレベルに有用なことがあります。

    • 次のように入力して、アレイサイズを指定の値まで増加します。

      mdadm --grow /dev/md0 -z size

      sizeを、キロバイト(1キロバイトは1024バイト)単位で目的のサイズを表す整数値で置き換えます。

  4. 次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズを再チェックします。

    mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
  5. 次のいずれかの操作を行います。

    • アレイのサイズ変更が成功していたら、11.2.3項 「ファイルシステムのサイズの増加」を続行します。

    • アレイが予期どおりにサイズ変更されていない場合は、いったん再起動してから、このプロシージャを再試行する必要があります。

11.2.3 ファイルシステムのサイズの増加

アレイサイズの増加後は (11.2.2項 「RAIDアレイのサイズの増加」参照)、ファイルシステムのサイズ変更ができます。

ファイルシステムのサイズを使用可能な最大スペースまで増加したり、正確なサイズを指定できます。ファイルシステムに正確なサイズを指定する場合は、その新しいサイズが次の条件を満たすかどうかを必ず確認してください。

  • 新しいサイズは、既存データのサイズより大きくなければなりません。さもないと、データが失われます。

  • ファイルシステムのサイズは使用可能なスペースより大きくできないので、新しいサイズは、現在のRAIDサイズ以下でなければなりません。

11.2.3.1 Ext2またはExt3

Ext2とExt3のファイルシステムは、resize2fsコマンドでマウントまたはアンマウントする際にサイズ変更できます。

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. 次の方法の1つで、ファイルシステムのサイズを増加します。

    • ファイルシステムのサイズを、/dev/md0と呼ばれるソフトウェアRAIDデバイスの最大使用可能サイズまで拡張するには、次のコマンドを入力します。

      resize2fs /dev/md0

      sizeパラメータを指定しない場合、サイズはパーティションのサイズにデフォルト設定されます。

    • ファイルシステムを特定のサイズに拡張するには、次のコマンドを入力します。

      resize2fs /dev/md0 size

      sizeパラメータは、要求されたファイルシステムの新サイズを指定します。単位を指定しない場合のsizeパラメータの単位は、ファイルシステムのブロックサイズです。オプションとして、sizeパラメータの後ろに、次の単位指定子の1つを付けることができます。sは512バイトのセクタ、Kはキロバイト(1キロバイトは1024バイト)、Mはメガバイト、Gはギガバイトを表します。

    サイズ変更が完了するまで待って、続行します。

  3. ファイルシステムがマウントされていない場合は、この時点で、ファイルシステムをマウントします。

    たとえば、Ext2ファイルシステムを、/dev/md0という名前のRAIDに、マウントポイント/raidでマウントするには、次のように入力します。

    mount -t ext2 /dev/md0 /raid
  4. 次のように入力して、マウントされたファイルシステムに対するサイズ変更の効果をチェックします。

    df -h

    ディスクフリー(df)コマンドは、ディスクの合計サイズ、使用されたブロック数、およびファイルシステムで使用可能なブロック数を表示します。-hオプションは、読みやすい形式でサイズを出力します(1K、234M、2Gなど)。

11.2.3.2 ReiserFS

Ext2およびExt3と同様に、ReiserFSファイルシステムは、マウントまたはアンマウント時にサイズを増加できます。サイズ変更は、RAIDアレイのブロックデバイス上で行われます。

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. /dev/md0と呼ばれるソフトウェアRAIDデバイスのファイルシステムのサイズを、次の方法の1つを使用して変更します。

    • ファイルシステムのサイズをデバイスの使用可能な最大サイズまで拡張するには、次のように入力します。

      resize_reiserfs /dev/md0

      サイズを指定しないと、ボリュームはパーティションのフルサイズまで拡張されます。

    • ファイルシステムを特定のサイズに拡張するには、次のコマンドを入力します。

      resize_reiserfs -s size /dev/md0

      sizeを目的のサイズ(バイト単位)で置き換えます。50000K(キロバイト)、250M(メガバイト)、2G (ギガバイト)など、値の単位を指定することもできます。代わりに、プラス(+)記号を値の前に付けることにより、現在のサイズに対する増加を指定することもできます。たとえば、次のコマンドは、/dev/md0上のファイルシステムのサイズを500 MB分増加します。

      resize_reiserfs -s +500M /dev/md0

    サイズ変更が完了するまで待って、続行します。

  3. ファイルシステムがマウントされていない場合は、この時点で、ファイルシステムをマウントします。

    たとえば、ReiserFSファイルシステムを、/dev/md0というRAIDに、マウントポイント/raidでマウントするには、次のように入力します。

    mount -t reiserfs /dev/md0 /raid
  4. 次のように入力して、マウントされたファイルシステムに対するサイズ変更の効果をチェックします。

    df -h

    ディスクフリー(df)コマンドは、ディスクの合計サイズ、使用されたブロック数、およびファイルシステムで使用可能なブロック数を表示します。-hオプションは、読みやすい形式でサイズを出力します(1K、234M、2Gなど)。

11.3 ソフトウェアRAIDのサイズの削減

始める前に、11.1項 「サイズ変更プロセスの理解」のガイドラインをレビューしてください。

11.3.1 ファイルシステムのサイズの削減

RAIDデバイス上のファイルシステムのサイズを削減する際には、新しいサイズが次の条件を満たすかどうかを必ず確認してください。

  • 新しいサイズは、既存データのサイズより大きくなければなりません。さもないと、データが失われます。

  • ファイルシステムのサイズは使用可能なスペースより大きくできないので、新しいサイズは、現在のRAIDサイズ以下でなければなりません。

SUSE Linux Enterprise Serverでは、Ext2、Ext3、およびReiserFSが、ファイルシステムのサイズを縮小するユーティリティを提供します。以降の該当するプロシージャを使用して、ファイルシステムのサイズを減少させてください。

このセクションのプロシージャでは、RAIDデバイスのデバイス名として //dev/md0を使用しています。コマンドを変更して、必ずご使用のデバイスの名前を使用してください。

11.3.1.1 Ext2またはExt3

Ext2とExt3のファイルシステムは、マウントまたはアンマウント時にサイズ変更できます。

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. RAID上のファイルシステムのサイズを減少させるには、次のコマンドを入力します。

    resize2fs /dev/md0 <size>

    sizeを、目的のサイズを表す整数値(キロバイト単位)で置き換えます(1キロバイトは1024バイト)。

    サイズ変更が完了するまで待って、続行します。

  3. ファイルシステムがマウントされていない場合は、この時点で、ファイルシステムをマウントします。たとえば、Ext2ファイルシステムを、/dev/md0という名前のRAIDに、マウントポイント/raidでマウントするには、次のように入力します。

    mount -t ext2 /dev/md0 /raid
  4. 次のように入力して、マウントされたファイルシステムに対するサイズ変更の効果をチェックします。

    df -h

    ディスクフリー(df)コマンドは、ディスクの合計サイズ、使用されたブロック数、およびファイルシステムで使用可能なブロック数を表示します。-hオプションは、読みやすい形式でサイズを出力します(1K、234M、2Gなど)。

  5. 11.3.2項 「RAIDアレイサイズの削減」に進みます。

11.3.1.2 ReiserFS

ReiserFSファイルシステムのサイズは、ボリュームがアンマウントされる場合のみ、減少させることができます。

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. 次のコマンドを入力して、デバイスをアンマウントします。

    umount /mnt/point

    サイズを削減するパーティションにシステムファイル(ルート/ボリュームなど)が含まれていると、ブート可能なCDまたはフロッピーからブートする場合のみ、アンマウントが可能です。

  3. /dev/md0と呼ばれるソフトウェアRAIDデバイス上のファイルシステムのサイズを減らすには、次のように入力します。

    resize_reiserfs -s size /dev/md0

    sizeを目的のサイズ(バイト単位)で置き換えます。50000K(キロバイト)、250M(メガバイト)、2G (ギガバイト)など、値の単位を指定することもできます。代わりに、マイナス(-)記号を値の前に付けて、現在のサイズに対する削減分を指定することもできます。たとえば、次のコマンドは、/dev/md0上のファイルシステムのサイズを 500 MB分減少させます。

    resize_reiserfs -s -500M /dev/md0

    サイズ変更が完了するまで待って、続行します。

  4. 次のコマンドで、ファイルシステムをマウントします。

    mount -t reiserfs /dev/md0 /mnt/point
  5. 次のように入力して、マウントされたファイルシステムに対するサイズ変更の効果をチェックします。

    df -h

    ディスクフリー(df)コマンドは、ディスクの合計サイズ、使用されたブロック数、およびファイルシステムで使用可能なブロック数を表示します。-hオプションは、読みやすい形式でサイズを出力します(1K、234M、2Gなど)。

  6. 11.3.2項 「RAIDアレイサイズの削減」に進みます。

11.3.2 RAIDアレイサイズの削減

ファイルシステムのサイズ変更後、RAIDアレイ設定では、利用可能スペースを縮小するよう強制するまで、元のアレイサイズを使い続けます。RAIDが、削減したセグメントサイズを使用するようにするには、mdadm --growモードを使用します。それを行うには、-zオプションを使用して、RAID内の各デバイスが使用するスペースの量を、キロバイトで指定する必要があります。このサイズは、チャンクサイズの倍数である必要があり、RAIDのスーパーブロックをデバイスに書き込むためのスペースとして、約128KBを残しておかなければなりません。

このセクションのプロシージャでは、RAIDデバイスのデバイス名として //dev/md0を使用しています。コマンドを変更して、必ずご使用のデバイスの名前を使用してください。

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. 次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズをチェックします。

    mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
  3. 次のコマンドで、アレイのデバイスサイズを指定の値まで減少させます。

    mdadm --grow /dev/md0 -z <size>

    sizeを、目的のサイズを表す整数値(キロバイト単位)で置き換えます(1キロバイトは1024バイト)。

    たとえば、次のコマンドでは、各RAIDデバイスのセグメントサイズを約40 GBに設定し、チャンクサイズは64 KBです。これには、RAIDのスーパーブロック用の128 KBが含まれます。

    mdadm --grow /dev/md2 -z 41943168
  4. 次のように入力して、アレイのサイズとアレイに認識されるデバイスサイズを再チェックします。

    mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
  5. 次のいずれかの操作を行います。

11.3.3 コンポーネントパーティションのサイズの削減

RAID内の各デバイスで使用されるセグメントサイズの削減後、各コンポーネントパーティション内の残りのスペースは、そのRAIDでは使われません。パーティションを現在のサイズのまま残して将来のRAIDの拡大に備えることも、今は使用しないそのスペースを利用することもできます。

そのスペースを利用するには、コンポーネントパーティションを1つずつ削減します。コンポーネントパーティションごとに、そのパーティションをRAIDから削除し、パーティションサイズを縮小し、パーティションをRAIDに戻したら、RAIDが安定するまで待機します。メタデータに備えるには、11.3.2項 「RAIDアレイサイズの削減」でRAIDに対して指定したサイズより、若干大きなサイズを指定する必要があります。

パーティションが削除されている間、RAIDはディグレードモードで動作し、ディスクの 耐障害性がまったくないか、または低下しています。複数の同時ディスクエラーに耐えるRAIDの場合でも、一度に2つ以上のコンポーネントパーティションを削除しないでください。

警告
警告

RAIDに、ディスクの耐障害性がないか、単に一貫性がない場合、パーティションのどれかを削除すると、データが失われます。パーティションの削除は注意深く行い、必ず、データのバックアップをとってください。

このセクションのプロシージャでは、次のテーブルに示すデバイス名を使用します。これらのコマンドは変更して、必ずご使用のデバイスの名前を使用してください。

表 11.4: コンポーネントパーティションのサイズを増加するシナリオ

RAIDデバイス

コンポーネントパーティション

/dev/md0

/dev/sda1

/dev/sdb1

/dev/sdc1

RAID用コンポーネントパーティションのサイズを削減するには:

  1. 端末コンソールを開いて、rootユーザまたは同等の権限でログインします。

  2. 次のように入力して、RAIDアレイが一貫性を保っており、同期されていることを確認します。

    cat /proc/mdstat

    このコマンドの出力によって、RAIDアレイがまだ同期中とわかる場合は、同期化の完了まで待って、続行してください。

  3. コンポーネントパーティションの1つをRAIDアレイから削除します。たとえば、次のように入力して、/dev/sda1を削除します。

    mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1

    成功するためには、failとremoveの両方のアクションが行われる必要があります。

  4. ステップ 3で削除したパーティションのサイズを、セグメントサイズに設定したサイズより若干小さいサイズに減らします。このサイズは、チャンクサイズの倍数であり、RAIDのスーパーブロック用に128 KBを確保する必要があります。fdiskcfdiskpartedなどのディスクパーティショナを使用して、パーティションのサイズを縮小します。

  5. パーティションをRAIDアレイに再追加します。たとえば、次のように入力して、/dev/sda1を追加します。

    mdadm -a /dev/md0 /dev/sda1

    RAIDが同期され、一貫性をもつまで待機してから、次のパーティションの処理に進みます。

  6. アレイ内の残りのコンポーネントデバイスごとに、ステップ 2からステップ 5まで繰り返します。正しいコンポーネントパーティションに対して、必ずコマンドを変更してください。

  7. カーネルがRAIDのパーティションテーブルを再読み込みできないというメッセージが表示されたら、すべてのパーティションのサイズ変更後にコンピュータを再起動する必要があります。

  8. (オプション) RAIDとファイルシステムのサイズを拡大して、現在は小さめのコンポーネントパーティション内のスペースの最大量を利用するには、次のようにします。

    1. RAIDのサイズを拡大して、縮小したサイズのコンポーネントパーティション内で現在利用可能なスペースの最大量を利用します。

      mdadm --grow /dev/md0 -z max
    2. ファイルシステムのサイズを拡大して、新たにサイズ変更したRAID内の利用可能なスペースをすべて利用します。詳細については、11.2.3項 「ファイルシステムのサイズの増加」を参照してください。