次の方法で共有


Linux でソフトウェア RAID を構成する

Azure の Linux 仮想マシンでソフトウェア RAID を使用して、複数の接続されたデータ ディスクを 1 つの RAID デバイスとして表示するのが一般的なシナリオです。 通常、これは、単一のディスクを使用する場合と比較して、パフォーマンスを向上させ、スループットを向上させるために使用できます。

データ ディスクの接続

RAID デバイスを構成するには、2 つ以上の空のデータ ディスクが必要です。 RAID デバイスを作成する主な理由は、ディスク IO のパフォーマンスを向上するためです。 IO のニーズに基づいて、Standard Storage に格納されているディスクを接続できます。ディスクあたり最大 500 IO/ps、またはディスクあたり最大 5000 IO/ps の Premium ストレージを使用できます。 この記事では、Linux 仮想マシンにデータ ディスクをプロビジョニングしてアタッチする方法については詳しく説明しません。 空のデータ ディスクを Azure 上の Linux 仮想マシンに接続する方法の詳細については、Microsoft Azure の記事「ディスクを接続する」を参照してください。

重要

異なるサイズのディスクを混在させないでください。そうすると、raidset のパフォーマンスが最も低速なディスクのパフォーマンスに制限されます。

mdadm ユーティリティをインストールする

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS と Oracle Linux

    sudo yum install mdadm
    
  • SLES と openSUSE

    zypper install mdadm
    

ディスク パーティションを作成する

この例では、/dev/sdc に 1 つのディスク パーティションを作成します。 新しいディスク パーティションは /dev/sdc1 と呼ばれます。

  1. fdiskを開始してパーティションの作成を開始する

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. プロンプトで 'n' を押して n個のパーティションを作成します。

    Command (m for help): n
    
  3. 次に、'p' キーを押して primary パーティションを作成します。

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. '1' キーを押してパーティション番号 1 を選択します。

    Partition number (1-4): 1
    
  5. 新しいパーティションの開始点を選択するか、 <enter> を押して、ドライブの空き領域の先頭にパーティションを配置する既定値をそのまま使用します。

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. パーティションのサイズを選択します (たとえば、"+10G" と入力して 10 ギガバイトのパーティションを作成します)。 または、 <enter> 押して、ドライブ全体にまたがる単一のパーティションを作成します。

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. 次に、パーティションの ID とype を既定の ID '83' (Linux) から ID 'fd' (Linux raid auto) に変更します。

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. 最後に、パーティション テーブルをドライブに書き込み、fdisk を終了します。

    Command (m for help): w
    The partition table has been altered!
    

RAID アレイを作成する

  1. 次の例では、3 つの独立したデータ ディスク (sdc1、sdd1、sde1) にある 3 つのパーティションを "ストライプ" (RAID レベル 0) します。 このコマンドを実行すると、 /dev/md127 という名前の新しい RAID デバイスが作成されます。 また、これらのデータ ディスクが以前に別の機能していない RAID アレイの一部である場合は、mdadm コマンドに --force パラメーターを追加する必要がある場合があることにも注意してください。

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. 新しい RAID デバイスにファイル システムを作成する

    CentOS、Oracle Linux、SLES 12、openSUSE、Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 - boot.md を有効にして mdadm.conf を作成する

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    SUSE システムでこれらの変更を行った後、再起動が必要になる場合があります。 SLES 12 では、この手順は必要 ありません

新しいファイル システムを /etc/fstab に追加する

重要

/etc/fstab ファイルを不適切に編集すると、システムが起動できなくなる可能性があります。 編集方法がはっきりわからない場合は、このファイルを適切に編集する方法について、ディストリビューションのドキュメントを参照してください。 編集する前に、/etc/fstab ファイルのバックアップを作成することもお勧めします。

  1. 新しいファイル システムに必要なマウント ポイントを作成します。次に例を示します。

    sudo mkdir /data
    
  2. /etc/fstab を編集するときは、 UUID を使用して、デバイス名ではなくファイル システムを参照する必要があります。 blkid ユーティリティを使用して、新しいファイル システムの UUID を確認します。

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. テキスト エディターで /etc/fstab を開き、新しいファイル システムのエントリを追加します。次に例を示します。

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    または SLES 11 の場合:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    次に、/etc/fstab を保存して閉じます。

  4. /etc/fstab エントリが正しいことをテストします。

    sudo mount -a
    

    このコマンドによってエラー メッセージが表示される場合は、/etc/fstab ファイルの構文を確認してください。

    次に、 mount コマンドを実行して、ファイル システムがマウントされていることを確認します。

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (省略可能)フェールセーフ ブート パラメーター

    fstab の構成

    多くのディストリビューションには、/etc/fstab ファイルに追加できる nobootwait または nofail マウント パラメーターが含まれます。 これらのパラメーターを使用すると、特定のファイル システムをマウントするときにエラーが発生し、RAID ファイル システムを適切にマウントできない場合でも Linux システムを起動し続けることができます。 これらのパラメーターの詳細については、ディストリビューションのドキュメントを参照してください。

    例 (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Linux ブート パラメーター

    上記のパラメーターに加えて、カーネル パラメーター "bootdegraded=true" を使用すると、データ ドライブが仮想マシンから誤って削除された場合など、RAID が破損または低下していると認識された場合でも、システムを起動できます。 既定では、起動できないシステムが発生する可能性もあります。

    カーネル パラメーターを適切に編集する方法については、ディストリビューションのドキュメントを参照してください。 たとえば、多くのディストリビューション (CentOS、Oracle Linux、SLES 11) では、これらのパラメーターを "/boot/grub/menu.lst" ファイルに手動で追加できます。 Ubuntu では、このパラメーターを "/etc/default/grub" の GRUB_CMDLINE_LINUX_DEFAULT 変数に追加できます。

TRIM/UNMAP のサポート

一部の Linux カーネルでは、ディスク上の未使用ブロックを破棄するために TRIM/UNMAP 操作がサポートされます。 これらの操作は、削除されたページが無効になり、破棄できることを Azure に通知するために、主に Standard Storage で役立ちます。 大きなファイルを作成してから削除するときにページを破棄することで、コストを節約できます。

配列のチャンク サイズが既定値 (512 KB) 未満に設定されている場合、RAID は破棄コマンドを発行できません。 これは、ホストでのマップ解除の粒度も 512 KB であるためです。 mdadm の --chunk= パラメーターを使用して配列のチャンク サイズを変更した場合、TRIM/unmap 要求はカーネルによって無視される可能性があります。

Linux VM で TRIM のサポートを有効にする方法は 2 通りあります。 通常どおり、ご使用のディストリビューションで推奨される方法をお問い合わせください。

  • 次のように、discard/etc/fstab マウント オプションを使用します。

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • 場合によっては、discard オプションがパフォーマンスに影響を与える場合があります。 または、 fstrim コマンドを手動でコマンド ラインから実行するか、crontab に追加して定期的に実行することができます。

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data