メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Linux の EBS ボリュームのサイズ、IOPS、またはタイプの変更

Amazon EBS ボリュームが現行世代の EC2 インスタンスタイプにアタッチされている場合は、それをデタッチすることなく、ボリュームサイズの増加、ボリュームタイプの変更、または (io1 ボリュームの場合) IOPS パフォーマンスの調整を行うことができます。これらの変更は、デタッチしたボリュームにも適用できます。現行世代のインスタンスタイプの詳細については、「現行世代のインスタンス」を参照してください。

前の世代のインスタンスタイプを使用している場合や、ボリュームの変更を試みているときにエラーが発生した場合は、「付録: EBS ボリュームを変更するためのインスタンスの起動と停止」の手順に従います。

一般的に、ボリュームの変更には以下のステップが必要です。

  1. 変更コマンドを発行します。詳細については、コンソールからの EBS ボリュームの変更 および コマンドラインからの EBS ボリュームの変更 を参照してください。

  2. 変更の進行状況をモニタリングします。詳細については、「ボリューム変更の進行状況のモニタリング」を参照してください。

  3. ボリュームのサイズが変更された場合、増加されたストレージ容量を利用するには、ボリュームのファイルシステムを拡張します。詳細については、「ボリュームサイズ変更後の Linux ファイルシステムの拡張」を参照してください。

さらに、Amazon CloudWatch EventsAWS CloudFormation を使用して、ボリュームの変更に関連付けられたアクションを自動化できます。

ボリュームの設定を変更するための料金は発生しません。変更を起動すると新しいボリューム設定料金が課金されます。詳細については、「Amazon EBS 料金表」ページの「Amazon Elastic Block Store」セクションを参照してください。

詳細については、「EBS ボリュームの変更に関する考慮事項」を参照してください。

重要

重要なデータを含むボリュームを変更する前に、変更をロールバックする必要がある場合に備えて、ボリュームのスナップショットを作成するのがベストプラクティスです。EBS スナップショットの詳細については、「Amazon EBS スナップショットの作成」を参照してください。

コンソールからの EBS ボリュームの変更

次の手順では、Amazon EC2 コンソールから利用可能なボリュームの変更を適用する方法を示します。

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. Choose Volumes, select the volume to modify and then choose Actions, Modify Volume.

  3. The Modify Volume window displays the volume ID and the volume's current configuration, including type, size, and IOPS. You can change any or all of these settings in a single action. Set new configuration values as follows:

    • To modify the type, choose a value for Volume Type.

    • To modify the size, enter an allowed integer value for Size.

    • If you chose Provisioned IOPS (IO1) as your volume type, enter an allowed integer value for IOPS.

  4. After you have specified all of the modifications to apply, choose Modify, Yes.

注記

ボリュームサイズを変更しても、ボリュームのファイルシステムを拡張して新しいストレージ容量を利用するまでは、実際の効果はありません。詳細については、「ボリュームサイズ変更後の Linux ファイルシステムの拡張」を参照してください。

コマンドラインからの EBS ボリュームの変更

次の例では、AWS CLI を使用してコマンドラインから EBS ボリュームを変更する方法を示します。デフォルト設定によっては、リージョンやアベイラビリティーゾーンなどの情報を指定する必要があります。変更対象のソースボリュームの ID と、アクションを実行するための適切なアクセス許可が必要です。io1 ボリュームが変更対象である場合は、プロビジョンド IOPS のレベルを指定する必要があります。複数の変更アクション (容量、IOPS、タイプの変更) を 1 つのコマンドで実行できます。

たとえば、EBS ボリュームを次のように設定します。

  • ボリューム ID: vol-11111111111111111

  • ボリュームサイズ: 100 GiB

  • ボリュームタイプ: gp2

ボリューム設定を以下のように変更できます。

  • ボリュームサイズ: 200 GiB

  • ボリュームタイプ: io1

  • プロビジョニングレベル: 10,000 IOPS

上記の変更を次のコマンドで適用します。

Copy
aws ec2 modify-volume --region us-east-1 --volume-id vol-11111111111111111 --size 200 --volume-type io1 --iops 10000

このコマンドにより、以下のような出力が返されます。

{
    "VolumeModification": {
        "TargetSize": 200,
        "TargetVolumeType": "io1",
        "ModificationState": "modifying",
        "VolumeId": "vol-11111111111111111",
        "TargetIops": 10000,
        "StartTime": "2017-01-19T22:21:02.959Z",
        "Progress": 0,
        "OriginalVolumeType": "gp2",
        "OriginalIops": 300,
        "OriginalSize": 100
    }
}

注記

ボリュームサイズを変更しても、ボリュームのファイルシステムを拡張して新しいストレージ容量を利用するまでは、実際の効果はありません。詳細については、「ボリュームサイズ変更後の Linux ファイルシステムの拡張」を参照してください。

ボリューム変更の進行状況のモニタリング

変更対象の EBS ボリュームは以下の状態を経過します。コンソール、CLI、API、SDK を問わず、ModifyVolume ディレクティブを発行すると、ボリュームは最初に Modifying 状態になり、次に Optimizing 状態になって、最後は Complete 状態になります。この時点で、ボリュームは追加の変更を適用できる状態になります。まれに、一時的な AWS エラーのために Failed 状態になる場合があります。この場合は、変更を再試行します。

通常、ボリュームが Optimizing 状態になってから、サイズの変更が完了して反映されるまでには数秒かかります。

パフォーマンス (IOPS) の変更は、設定の変更内容に応じて、完了するまでに数分から数時間かかる場合があります。

新しい設定が反映されるまでには最大 24時間かかる場合があります。通常、完全に使用された 1 TiB ボリュームが新しいパフォーマンス設定に移行するまでには約 6 時間かかります。

ボリュームが optimizing 状態である場合、ボリュームのパフォーマンスはソースとターゲットの設定仕様の中間にあります。過渡的なボリュームのパフォーマンスは、ソースボリュームのパフォーマンスより劣ることはありません。IOPS をダウングレードする場合、過渡的なボリュームのパフォーマンスは、ターゲットボリュームのパフォーマンス以上になります。

変更の進行状況をモニタリングするには、AWS マネジメントコンソール を確認するか、AWS EC2 API/CLI でボリュームの状態をクエリするか、Amazon CloudWatch Events に送信されるメトリクスにアクセスします。以下の手順で、これらのアプローチを示します。

To monitor progress of a modification from the console

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. Choose Volumes, and select the volume to inspect. The volume's status is displayed in the State column. In the example below, the modification state is completed. This state information is also displayed in the State field of the details pane.

  3. Open the information icon next to the State field to display complete before and after information about the most recent modification action, as illustrated below.

To monitor progress of a modification from the command line

  • Use describe-volumes-modifications to view the progress of the modifications. In this example, volume vol-11111111111111111 from above and another volume, vol-22222222222222222, are called.

    Copy
    aws ec2 describe-volumes-modifications --region us-east-1 --volume-id vol-11111111111111111 vol-22222222222222222

    This command yields output similar to the following:

    {
        "VolumesModifications": [
            {
                "TargetSize": 200,
                "TargetVolumeType": "io1",
                "ModificationState": "modifying",
                "VolumeId": "vol-11111111111111111",
                "TargetIops": 10000,
                "StartTime": "2017-01-19T22:21:02.959Z",
                "Progress": 0,
                "OriginalVolumeType": "gp2",
                "OriginalIops": 300,
                "OriginalSize": 100
            },
            {
                "TargetSize": 2000,
                "TargetVolumeType": "sc1",
                "ModificationState": "modifying",
                "VolumeId": "vol-22222222222222222",
                "StartTime": "2017-01-19T22:23:22.158Z",
                "Progress": 0,
                "OriginalVolumeType": "gp2",
                "OriginalIops": 300,
                "OriginalSize": 1000
            }
        ]
    }

describe-volumes-modificationsコマンドは、1 つ以上の VolumesModification オブジェクトを返します。この例で示す 2 つのうち最初の 1 つは、上に示した最初の modify-volume コマンドとほぼ同じです。ただし、追加の変更は適用されていません。

次の例では、リージョン内で変更の状態が optimizing または completed であるすべてのボリュームをクエリし、その結果をフィルタリングおよびフォーマットして 2017 年 2 月 1 日以降に開始された変更のみを表示します。

Copy
aws ec2 describe-volumes-modifications --filters Name=modification-state,Values="optimizing","completed" --region us-east-1 --query "VolumesModifications[?StartTime>='2017-02-01'].{ID:VolumeId,STATE:ModificationState}"

この場合、クエリは 2 つのボリュームに関する情報を返します。

[
    {
        "STATE": "optimizing",
        "ID": "vol-06397e7a0eEXAMPLE"
    },
    {
        "STATE": "completed",
        "ID": "vol-bEXAMPLE"
    }
]

To monitor progress of a modification with CloudWatch イベント

With CloudWatch イベント, you can create a notification rule for volume modification events to send a text message or execute a Lambda function.

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. Choose Events, Create rule.

  3. For Build event pattern to match events by service, choose Custom event pattern.

  4. For Build custom event pattern , replace the contents with the following code:

    Copy
    { "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ], "detail": { "event": [ "modifyVolume" ] } }

    Choose Save when done.

    Typical event output should look like the following:

    Body:
    {
       "version": "0",
       "id": "1ea2ace2-7790-46ed-99ab-d07a8bd68685",
       "detail-type": "EBS Volume Notification",
       "source": "aws.ec2",
       "account": "065441870323",
       "time": "2017-01-12T21:09:07Z",
       "region": "us-east-1",
       "resources": [
          "arn:aws:ec2:us-east-1:065441870323:volume/vol-03a55cf56513fa1b6"
       ],
       "detail": {
          "result": "optimizing",
          "cause": "",
          "event": "modifyVolume",
          "request-id": "auto-58c08bad-d90b-11e6-a309-b51ed35473f8"
       }
    }

ルールを使用して Amazon SNS で通知メッセージを生成するか、一致したイベントに応答して AWS Lambda 関数を呼び出します。

ボリュームサイズ変更後の Linux ファイルシステムの拡張

ファイルシステム固有のコマンドを使用して、ファイルシステムのサイズを、新しいボリュームの拡大したサイズに変更します。これらのコマンドは、拡張するボリュームがルートボリュームである場合にも機能します。ext2ext3、および ext4 ファイルシステムの場合、このコマンドは resize2fs です。XFS ファイルシステムの場合、このコマンドは xfs_growfs です。その他のファイルシステムの場合、ファイルシステムの拡張については、これらのファイルシステムに関する特定のドキュメントを参照してください。

使用しているファイルシステムが不明の場合は、file -s コマンドを使用して、デバイスのファイルシステムデータをリストできます。次の例は、Linux ext4 ファイルシステムと SGI XFS ファイルシステムを示しています。

Copy
[ec2-user ~]$ sudo file -s /dev/xvd* /dev/xvda1: Linux rev 1.0 ext4 filesystem data ... /dev/xvdf: SGI XFS filesystem data ...

注記

拡張するボリュームがパーティション分割されている場合は、ファイルシステムのサイズを変更する前に、パーティションのサイズを拡大する必要があります。この時点で追加のパーティションを割り当てることもできます。詳細については、「Linux パーティションを拡張する」を参照してください。

ボリュームが Optimizing 状態になり次第、ファイルシステムのサイズ変更を開始できます。

重要

重要なデータを含むファイルシステムを拡張する前に、変更をロールバックする必要がある場合に備えて、ファイルシステムを含むボリュームのスナップショットを作成するのがベストプラクティスです。EBS スナップショットの詳細については、「Amazon EBS スナップショットの作成」を参照してください。

To check if your volume partition needs resizing

  • Use the lsblk command to list the block devices attached to your instance. The example below shows three volumes: /dev/xvda, /dev/xvdb, and /dev/xvdf.

    Copy
    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 30G 0 part / xvdb 202:16 0 30G 0 disk /mnt xvdf 202:80 0 35G 0 disk └─xvdf1 202:81 0 8G 0 part

    The root volume, /dev/xvda1, is a partition on /dev/xvda. Notice that they are both 30 GiB in size. In this case, the partition occupies all of the room on the device, so it does not need resizing.

    The volume /dev/xvdb is not partitioned at all, so it does not need resizing.

    However, /dev/xvdf1 is an 8 GiB partition on a 35 GiB device and there are no other partitions on the volume. In this case, the partition must be resized in order to use the remaining space on the volume. For more information, see Linux パーティションを拡張する. After you resize the partition, you can follow the next procedure to extend the file system to occupy all of the space on the partition.

To extend a Linux file system

  1. Log in to your Linux instance using an SSH client. For more information about connecting to a Linux instance, see SSH を使用した Linux インスタンスへの接続.

  2. Use the df -h command to report the existing file system disk space usage. In this example, /dev/xvda1 device has already been expanded to 70 GiB, but the operating system still sees only the original 7.9 GiB ext4 file system. Similarly, the /dev/xvdf device has been expanded to 100 GiB, but the operating system still only sees the original 1.0 GiB XFS file system.

    Copy
    [ec2-user ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 8.0G 943M 6.9G 12% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdf 1014M 33M 982M 4% /mnt
  3. Use a file system-specific command to resize each file system to the new volume capacity.

    For a Linux ext2, ext3, or ext4 file system, use the following command, substituting the device name to extend:

    Copy
    [ec2-user ~]$ sudo resize2fs /dev/xvda1 resize2fs 1.42.3 (14-May-2012) Filesystem at /dev/xvda1 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 5 Performing an on-line resize of /dev/xvda1 to 18350080 (4k) blocks. The filesystem on /dev/xvda1 is now 18350080 blocks long.

    For an XFS file system, first install the XFS userspace tools:

    Copy
    [ec2-user ~]$ sudo yum install xfsprogs

    Then use the following command, substituting the mount point of the file system (XFS file systems must be mounted to resize them):

    Copy
    [ec2-user ~]$ sudo xfs_growfs -d /mnt meta-data=/dev/xvdf isize=256 agcount=4, agsize=65536 blks = sectsz=512 attr=2 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 262144 to 26214400

    注記

    If you receive an xfsctl failed: Cannot allocate memory error, you may need to update the Linux kernel on your instance. For more information, refer to your specific operating system documentation.

    If you receive a The filesystem is already nnnnnnn blocks long. Nothing to do! error, see Linux パーティションを拡張する.

  4. Use the df -h command to report the existing file system disk space usage, which should now show the full 70 GiB on the ext4 file system and 100 GiB on the XFS file system:

    Copy
    # df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 70G 951M 69G 2% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdf 100G 45M 100G 1% /mnt

ヒント

ボリュームで増えた利用可能な領域がシステムに表示されない場合は、「Amazon EBS ボリュームの初期化」の説明に従ってボリュームを再初期化してみてください。

付録: EBS ボリュームを変更するためのインスタンスの起動と停止

前世代の Amazon EC2 を使用していて、ルート (ブート) ボリュームの変更が必要になった場合は、インスタンスを停止して変更を適用し、その後でインスタンスを再起動する必要があります。次に示す手順に従って、すべてのインスタンスタイプのすべての EBS ボリュームを変更できます。

インスタンスを停止して再度起動するときは、以下に注意してください:

  • インスタンスが VPC で実行されていてパブリック IPv4 アドレスがある場合には、このアドレスは解放されて、新しいパブリック IPv4 アドレスになります。インスタンスのプライベート IPv4 アドレスと Elastic IP アドレスは保持されます。

  • インスタンスを EC2-Classic で実行している場合、新しいパブリック IP アドレスとプライベート IPv4 アドレスが与えられ、インスタンスに関連付けられている Elastic IP アドレスの関連付けが解除されます。インスタンスを再起動したら、Elastic IP アドレスを再度関連付ける必要があります。

  • インスタンスが Auto Scaling グループにある場合、Auto Scaling はインスタンスを異常と判断して停止し、場合によってはそれを終了して代わりのインスタンスを起動します。これを防止するには、一時的にグループの Auto Scaling プロセスを停止できます。詳細については、Auto Scaling ユーザーガイド の「Auto Scaling プロセスの停止と再開」を参照してください。

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. In the navigation pane, choose Instances and select the instance with the volume to expand.

  3. Verify that Shutdown Behavior is set to Stop and not Terminate.

    1. Select the instance.

    2. From the context (right-click) menu, choose Instance Settings, Change Shutdown Behavior.

    3. If Shutdown behavior is set to Terminate, choose Stop, Apply.

      If Shutdown behavior is already set to Stop, choose Cancel.

  4. Stop the instance. For more information, see インスタンスの停止と起動.

    警告

    インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。したがって、インスタンスストアボリューム上に維持したいデータがある場合は、必ず永続的ストレージにバックアップしてください。

  5. Modify your EBS volume as described in コンソールからの EBS ボリュームの変更 or コマンドラインからの EBS ボリュームの変更.

  6. Restart the instance.

    1. In the navigation pane, choose Instances and then select the instance to restart.

    2. From the context (right-click) menu, choose Instance State, Start.

    3. In the Start Instances dialog box, choose Yes, Start. If the instance fails to start, and the volume being expanded is a root volume, verify that you attached the expanded volume using the same device name as the original volume, for example /dev/sda1.

インスタンスが起動したら、ファイルシステムのサイズを確認して、拡大したボリュームスペースをインスタンスが認識しているかどうか表示できます。Linux では、df -h コマンドを使用してファイルシステムのサイズを確認します。

Copy
[ec2-user ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.9G 943M 6.9G 12% / tmpfs 1.9G 0 1.9G 0% /dev/shm

新しく拡張したボリュームがサイズに反映されていない場合は、デバイスのファイルシステムを拡張して、インスタンスで新しいスペースを使えるようにします。詳細については、「ボリュームサイズ変更後の Linux ファイルシステムの拡張」を参照してください。