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

Amazon EBS ボリュームを使用できるようにする

Amazon EBS ボリュームをインスタンスにアタッチすると、それはブロックデバイスとして表示されます。任意のファイルシステムでボリュームをフォーマットし、マウントできます。EBS ボリュームを使用できるようにすると、他のボリュームと同じようにアクセスできます。このファイルシステムに書き込まれるデータはすべて EBS ボリュームに書き込まれますが、デバイスを使用するアプリケーションには透過的になります。

EBS ボリュームのスナップショットは、バックアップ目的で作成したり、別のボリュームを作成する際のベースラインとして使用したりすることもできます。詳細については、「Amazon EBS スナップショット」を参照してください。

Linux でボリュームを使用できるようにする

ボリュームを使用できるようにするには、次の手順を使用します。Windows インスタンスのボリュームに関する手順は、Windows インスタンスの Amazon EC2 ユーザーガイド の「Windows でボリュームを使用できるようにする」で参照できます。

Linux で EBS ボリュームを使用できるようにするには

  1. SSH を使用してインスタンスに接続します。詳細については、「ステップ 2: インスタンスに接続」を参照してください。

  2. カーネルのブロックデバイスドライバによっては、デバイスが指定した名前とは異なる名前でアタッチされる可能性があります。たとえば、/dev/sdh というデバイス名を指定した場合、/dev/xvdh/dev/hdh のような名前に変更されることがあります。ほとんどの場合、末尾の文字は変更されません。Red Hat Enterprise Linux (および CentOS などのバリエーション) の一部バージョンでは、末尾の文字も変更されることがあります (/dev/sda/dev/xvde などになります)。このような場合、各デバイス名の末尾の文字は同じ規則で変更されます。たとえば、/dev/sdb/dev/xvdf になり、/dev/sdc/dev/xvdg に変更されます。Amazon Linux AMI は、そのポイントの起動時に指定した名前で、名前を変更されたデバイスのパスへのシンボリックリンクを作成しますが、その他の AMI は動作が異なることがあります。

    lsblk コマンドを使用して、使用可能なディスクデバイスとマウントポイント (該当する場合) を表示し、使用する正しいデバイス名を決定します。

    Copy
    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdf 202:80 0 100G 0 disk xvda1 202:1 0 8G 0 disk /
    lsblk の出力は、フルデバイスパスから /dev/ を削除します。この例では、/dev/xvda1 はルートデバイスとしてマウントされ (MOUNTPOINT は、Linux ファイルシステム階層のルートである / として表示されている点に注意してください)、/dev/xvdf がアタッチされますが、マウントはまだ実行されていません。

  3. ボリュームにファイルシステムを作成する必要があるかどうかを確認します。新しいボリュームは未加工のブロックデバイスで、マウントして使用する前に、ボリュームにファイルシステムを作成する必要があります。スナップショットから復元されたボリュームは、ファイルシステムを備えている可能性が高くなります。既存のファイルシステムの上に新しいファイルシステムを作成すると、データが上書きされます。特殊な情報 (ファイルシステムの種類など) を一覧表示するには、sudo file -s device コマンドを使用します。

    Copy
    [ec2-user ~]$ sudo file -s /dev/xvdf /dev/xvdf: data

    前のコマンドの出力にデバイスの data だけが表示された場合、デバイスにはファイルシステムが存在していないので、ファイルシステムを作成する必要があります。ステップ 4 に移動できます。ファイルシステムを搭載しているデバイスでこのコマンドを実行すると、出力が異なります。

    Copy
    [ec2-user ~]$ sudo file -s /dev/xvda1 /dev/xvda1: Linux rev 1.0 ext4 filesystem data, UUID=1701d228-e1bd-4094-a14c-8c64d6819362 (needs journal recovery) (extents) (large files) (huge files)

    前の例では、デバイスに Linux rev 1.0 ext4 filesystem data が含まれているため、このボリュームにファイルシステムを作成する必要はありません (出力にファイルシステムデータが表示される場合、「ステップ 4」をスキップできます)。

  4. (条件付き) 次のコマンドを使用して、ボリュームに ext4 ファイルシステムを作成します。device_name をデバイス名 (/dev/xvdf など) に置き換えます。アプリケーションの要件またはオペレーティングシステムの制限に応じて、ext3、XFS など、異なるファイルシステムの種類を選択できます。

    警告

    この手順では、空のボリュームをマウントすることを前提としています。既にデータが含まれるボリューム (スナップショットから復元したボリュームなど) をマウントする場合は、ボリュームのマウント前に mkfs を使用しないでください (代わりに、次の手順に移動します)。ステップ 1 を実行した場合、ボリュームがフォーマットされ、既存のデータが削除されます。

    Copy
    [ec2-user ~]$ sudo mkfs -t ext4 device_name
  5. 次のコマンドを使用して、ボリュームのマウントポイントディレクトリを作成します。マウントポイントとは、ボリュームをマウントした後、ファイルシステムツリー内でボリュームが配置され、ファイルの読み書きが実行される場所です。mount_point を場所 (/data など) に置き換えます。

    Copy
    [ec2-user ~]$ sudo mkdir mount_point
  6. 次のコマンドを使用して、作成した場所にボリュームをマウントします。

    Copy
    [ec2-user ~]$ sudo mount device_name mount_point
  7. (オプション) システムブート時に常に、この EBS ボリュームをマウントするには、/etc/fstab ファイルにデバイス用のエントリを追加します。

    1. /etc/fstab ファイルのバックアップコピーを作成すると、編集中に誤って破壊/削除してしまった場合にこのコピーを使用できます。

      Copy
      [ec2-user ~]$ sudo cp /etc/fstab /etc/fstab.orig

    2. 任意のテキストエディタ (nanovim など) を使って /etc/fstab ファイルを開きます。

      注記

      ファイルを root として、または sudo コマンドを使って開く必要があります。

    3. 次の形式でボリュームのファイルの最後に新しい行を追加します。

      Copy
      device_name mount_point file_system_type fs_mntops fs_freq fs_passno
      この行の最後の 3 つのフィールドは、ファイルシステムのマウントオプション、ファイルシステムのダンプ頻度、起動時に実行されるファイルシステムチェックの順番です。これらの値がわからない場合は、例の値 (defaults,nofail 0 2) を使用してください。/etc/fstab エントリの詳細については、fstab マニュアルページを参照してください (コマンドラインで man fstab と入力します)。

      システムの現在のデバイス名 (/dev/sda1/dev/xvda1 など) を使用できます。/etc/fstab で、代わりにデバイスの 128 ビット汎用一意識別子 (UUID) を使用することをお勧めします。システム宣言のブロックデバイス名は、さまざまな状況下で変更される可能性がありますが、UUID はボリュームパーティションにフォーマット時に割り当てられており、パーティションの有効期間を通じて保持されます。UUID を使用することで、/etc/fstab でのブロックデバイスマッピングにより、ハードウェアの再設定後にシステムが起動不能になる可能性が低くなります。

      デバイスの UUID を見つけるには、まず使用可能なデバイスを表示します。

      Copy
      [ec2-user ~]$ df

      これにより、以下のようなリストが得られます。

      Copy
      Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 8123812 1876888 6146676 24% / devtmpfs 500712 56 500656 1% /dev tmpfs 509724 0 509724 0% /dev/shm

      次に、引き続きこの例で、2 つのコマンドのいずれかの出力を調べて、/dev/xvda1 の UUID を見つけます。

      • sudo file -s /dev/xvda1

      • ls -al /dev/disk/by-uuid/

      /dev/xvda1 で UUID として de9a1ccd-a2dd-44f1-8be8-0123456abcdef が見つかったとすると、/etc/fstab に以下のエントリを追加して、ext4 ファイルシステムを /data にマウントします。

      Copy
      UUID=de9a1ccd-a2dd-44f1-8be8-0123456abcdef /data ext4 defaults,nofail 0 2

      注記

      このボリュームをアタッチしないでインスタンスを起動することを目的としている場合 (たとえば、このボリュームが異なるインスタンス間で移動される可能性がある場合)、nofail マウントオプションを追加し、ボリュームのマウントでエラーが発生してもインスタンスが起動できるようにしてください。また、Debian から派生した OS (16.04 より前の Ubuntu バージョンなど) では、nobootwait マウントオプションを追加する必要があります。

    4. 新しいエントリを /etc/fstab に追加した後、エントリが正しく動作するかを確認する必要があります。sudo mount -a コマンドを実行すると、/etc/fstab にすべてのファイルシステムがマウントされます。

      Copy
      [ec2-user ~]$ sudo mount -a

      前のコマンドを実行してもエラーが発生しない場合、/etc/fstab ファイルに問題はありません。次回ブート時にファイルシステムは自動的にマウントされます。このコマンドを実行してエラーが発生した場合、エラーを調べて、/etc/fstab を修正してください。

      警告

      /etc/fstab ファイルにエラーがあると、システムがブート不能になる可能性があります。/etc/fstab ファイルにエラーがあるシステムをシャットダウンしないでください。

    5. (オプション) /etc/fstab のエラーの修正方法が不明な場合、次のコマンドを使って、いつでもバックアップの /etc/fstab ファイルを復元することができます。

      Copy
      [ec2-user ~]$ sudo mv /etc/fstab.orig /etc/fstab
  8. 新しいボリュームマウントのファイルのアクセス許可をプレビューして、ユーザーとアプリケーションがボリュームに書き込みできることを確認します。ファイルのアクセス許可の詳細については、Linux Documentation Project の「ファイルセキュリティ」を参照してください。