Linux でのソフトウェア RAID の構成Configure Software RAID on Linux

一般的なシナリオは、Azure 内の Linux 仮想マシンでソフトウェア RAID を使用して、複数のデータ ディスクを 1 つの RAID デバイスとしてアタッチすることです。It's a common scenario to use software RAID on Linux virtual machines in Azure to present multiple attached data disks as a single RAID device. このシナリオを使用すると通常、1 つのみのディスクを使用するシナリオよりもパフォーマンスとスループットが向上します。Typically this can be used to improve performance and allow for improved throughput compared to using just a single disk.

データ ディスクをアタッチするAttaching data disks

RAID デバイスの構成には、2 つ以上の空のデータ ディスクが必要です。Two or more empty data disks are needed to configure a RAID device. RAID デバイスを作成する主な目的は、ディスク I/O のパフォーマンスを向上させることです。The primary reason for creating a RAID device is to improve performance of your disk IO. IO ニーズに応じて、Standard Storage または Premium Storage に格納されているディスクをアタッチするように選択できます。Standard Storage ではディスクあたり最大 500 IO/ps が、Premium Storage ではディスクあたり最大 5000 IO/ps が実現します。Based on your IO needs, you can choose to attach disks that are stored in our Standard Storage, with up to 500 IO/ps per disk or our Premium storage with up to 5000 IO/ps per disk. この記事では、データ ディスクをプロビジョニングし、Linux 仮想マシンにアタッチする方法については詳しく説明しません。This article does not go into detail on how to provision and attach data disks to a Linux virtual machine. Azure 内の Linux 仮想マシンに空のデータ ディスクをアタッチする方法の詳細については、Microsoft Azure の記事 「Linux VM へのディスクの追加」を参照してください。See the Microsoft Azure article attach a disk for detailed instructions on how to attach an empty data disk to a Linux virtual machine on Azure.

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

  • UbuntuUbuntu

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

    sudo yum install mdadm
    
  • SLES と openSUSESLES and openSUSE

    zypper install mdadm
    

ディスク パーティションを作成するCreate the disk partitions

この例では、/dev/sdc に 1 つのディスク パーティションを作成します。In this example, we create a single disk partition on /dev/sdc. その後、新しいディスク パーティションに /dev/sdc1 という名前を付けます。The new disk partition will be called /dev/sdc1.

  1. fdisk を使用してパーティションの作成を開始するStart fdisk to begin creating partitions

    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 キーを押して、新しいパーティションを作成します。Press 'n' at the prompt to create a new partition:

    Command (m for help): n
    
  3. 次に、'p' キーを押して、プライマリ パーティションを作成します。Next, press 'p' to create a primary partition:

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

    Partition number (1-4): 1
    
  5. 新しいパーティションの開始位置を選択するか、<enter> キーを押して既定の設定をそのまま使用します。既定では、ドライブの空き領域の先頭にパーティションが配置されます。Select the starting point of the new partition, or press <enter> to accept the default to place the partition at the beginning of the free space on the drive:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. パーティションのサイズとして、たとえば「+10G」と入力して、10 GB のパーティションを作成します。Select the size of the partition, for example type '+10G' to create a 10 gigabyte partition. または、 <enter> キーを押して、ドライブ全体にまたがる 1 つのパーティションを作成します。Or, press <enter> create a single partition that spans the entire drive:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. 次に、パーティションの ID とタイプを変更します (コマンド 't')。既定の ID '83' (Linux) から ID 'fd' (Linux raid auto) に変更します。Next, change the ID and type of the partition from the default ID '83' (Linux) to ID 'fd' (Linux raid auto):

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

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

RAID アレイを作成するCreate the RAID array

  1. 次の例では、3 つの個別のデータ ディスク (sdc1、sdd1、sde1) にある 3 つのパーティションを "ストライピング" (RAID レベル 0) にします。The following example will "stripe" (RAID level 0) three partitions located on three separate data disks (sdc1, sdd1, sde1). このコマンドを実行した後、新しい RAID デバイスが /dev/md127 という名前で作成されます。After running this command a new RAID device called /dev/md127 is created. これらのデータ ディスクが前に別の無効 RAID アレイの一部となっていた場合は、必要に応じて --force パラメーターを mdadm コマンドに追加してください。Also note that if these data disks we previously part of another defunct RAID array it may be necessary to add the --force parameter to the mdadm command:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. 新しい RAID デバイスにファイル システムを作成します。Create the file system on the new RAID device

    a.a. CentOS、Oracle Linux、SLES 12、openSUSE、UbuntuCentOS, Oracle Linux, SLES 12, openSUSE, and Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    b.b. SLES 11SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    c.c. SLES 11 - boot.md を有効にし、mdadm.conf を作成します。SLES 11 - enable boot.md and create mdadm.conf

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

    注意

    SUSE システムでこれらの変更を行った後は再起動が必要になる場合があります。A reboot may be required after making these changes on SUSE systems. SLES 12 では、この手順は必須では ありませんThis step is not required on SLES 12.

新しいファイル システムを /etc/ fstab に追加するAdd the new file system to /etc/fstab

重要

/etc/fstab ファイルを不適切に編集すると、システムが起動できなくなる可能性があります。Improperly editing the /etc/fstab file could result in an unbootable system. 編集方法がはっきりわからない場合は、このファイルを適切に編集する方法について、ディストリビューションのドキュメントを参照してください。If unsure, refer to the distribution's documentation for information on how to properly edit this file. 編集する前に、/etc/fstab ファイルのバックアップを作成することもお勧めします。It is also recommended that a backup of the /etc/fstab file is created before editing.

  1. 新しいファイル システムに必要なマウント ポイントを作成します。たとえば、次のようになります。Create the desired mount point for your new file system, for example:

    sudo mkdir /data
    
  2. /etc/fstab を編集するとき、 UUID は、デバイス名ではなくファイル システムを参照するために使用する必要があります。When editing /etc/fstab, the UUID should be used to reference the file system rather than the device name. 新しいファイル システムの UUID を調べるには、 blkid ユーティリティを使用します。Use the blkid utility to determine the UUID for the new file system:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. テキスト エディターで /etc/fstab を開き、新しいファイル システムのエントリを追加します。たとえば、次のようになります。Open /etc/fstab in a text editor and add an entry for the new file system, for example:

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

    または、SLES 11 上で次のように指定します。Or on SLES 11:

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

    その後、/etc/fstab を保存して閉じます。Then, save and close /etc/fstab.

  4. /etc/fstab のエントリが正しいことをテストします。Test that the /etc/fstab entry is correct:

    sudo mount -a
    

    このコマンドによりエラー メッセージが表示された場合は、/etc/fstab ファイル内の構文を確認してください。If this command results in an error message, please check the syntax in the /etc/fstab file.

    次に、 mount コマンドを実行して、ファイル システムがマウントされていることを確認します。Next run the mount command to ensure the file system is mounted:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (オプション) フェールセーフ ブート パラメーター(Optional) Failsafe Boot Parameters

    fstab 構成fstab configuration

    多くのディストリビューションでは、nobootwait または nofail のいずれかのマウント パラメーターが /etc/fstab ファイルに追加されている場合があります。Many distributions include either the nobootwait or nofail mount parameters that may be added to the /etc/fstab file. これらのパラメーターにより、特定のファイル システムをマウントしているときのエラーが許容されます。RAID ファイル システムを適切にマウントできない場合でも、Linux システムの起動を続行できるようになります。These parameters allow for failures when mounting a particular file system and allow the Linux system to continue to boot even if it is unable to properly mount the RAID file system. これらのパラメーターの詳細については、使用しているディストリビューションのドキュメントを参照してください。Refer to your distribution's documentation for more information on these parameters.

    例 (Ubuntu):Example (Ubuntu):

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

    Linux ブート パラメーターLinux boot parameters

    これらのパラメーターの他にも、カーネル パラメーター "bootdegraded=true" では、RAID が破損または劣化として認識された場合、たとえばデータ ドライブが誤って仮想マシンから削除された場合でも、システムを起動できるようになります。In addition to the above parameters, the kernel parameter "bootdegraded=true" can allow the system to boot even if the RAID is perceived as damaged or degraded, for example if a data drive is inadvertently removed from the virtual machine. 既定では、この場合はシステムが起動できなくなる可能性があります。By default this could also result in a non-bootable system.

    カーネル パラメーターの適切な編集方法については、使用しているディストリビューションのドキュメントを参照してください。Please refer to your distribution's documentation on how to properly edit kernel parameters. たとえば、多くディストリビューション (CentOS、Oracle Linux、SLES 11) では、これらのパラメーターを "/boot/grub/menu.lst" ファイルに手動で追加することもできます。For example, in many distributions (CentOS, Oracle Linux, SLES 11) these parameters may be added manually to the "/boot/grub/menu.lst" file. Ubuntu では、このパラメーターを "/etc/default/ grub" の GRUB_CMDLINE_LINUX_DEFAULT 変数に追加できます。On Ubuntu this parameter can be added to the GRUB_CMDLINE_LINUX_DEFAULT variable on "/etc/default/grub".

TRIM/UNMAP のサポートTRIM/UNMAP support

一部の Linux カーネルでは、ディスク上の未使用ブロックを破棄するために TRIM/UNMAP 操作がサポートされます。Some Linux kernels support TRIM/UNMAP operations to discard unused blocks on the disk. これらの操作は主に、Standard Storage で、削除されたページが無効になり、破棄できるようになったことを Azure に通知するときに役立ちます。These operations are primarily useful in standard storage to inform Azure that deleted pages are no longer valid and can be discarded. ページを破棄すると、サイズの大きいファイルを作成して削除する場合のコストを節約できます。Discarding pages can save cost if you create large files and then delete them.

注意

配列のチャンク サイズが既定値 (512 KB) よりも小さく設定されている場合、RAID が破棄コマンドを発行しない可能性があります。RAID may not issue discard commands if the chunk size for the array is set to less than the default (512KB). これは、ホストでの UNMAP の粒度も 512 KB であるためです。This is because the unmap granularity on the Host is also 512KB. mdadm の --chunk= パラメーターを使用して配列のチャンク サイズを変更した場合、TRIM/UNMAP 要求がカーネルによって無視される可能性があります。If you modified the array's chunk size via mdadm's --chunk= parameter, then TRIM/unmap requests may be ignored by the kernel.

Linux VM で TRIM のサポートを有効にする方法は 2 通りあります。There are two ways to enable TRIM support in your Linux VM. 通常どおり、ご使用のディストリビューションで推奨される方法をお問い合わせください。As usual, consult your distribution for the recommended approach:

  • 次のように、/etc/fstabdiscard マウント オプションを使用します。Use the discard mount option in /etc/fstab, for example:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • 場合によっては、discard オプションがパフォーマンスに影響する可能性があります。In some cases the discard option may have performance implications. または、 fstrim コマンドを手動でコマンド ラインから実行するか、crontab に追加して定期的に実行することができます。Alternatively, you can run the fstrim command manually from the command line, or add it to your crontab to run regularly:

    UbuntuUbuntu

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

    RHEL/CentOSRHEL/CentOS

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