AWS EBSボリュームの作成とEC2インスタンスへのアタッチ方法

AWS Elastic Block Store (EBS) は、Amazon EC2 インスタンスにアタッチ可能なブロックストレージサービスです。本記事では、未経験者向けにEBSボリュームの作成からEC2インスタンスへのアタッチ、さらにインスタンス内での設定手順までをステップバイステップで解説します。この記事を参考にしながら、実際に操作を行ってみましょう。

## 目次

1. [前提条件](#前提条件)
    - [EC2インスタンスの用意](#ec2インスタンスの用意)
    - [AWSマネジメントコンソールへのアクセス](#awsマネジメントコンソールへのアクセス)
2. [EBSボリュームの作成](#ebsボリュームの作成)
    - [EC2ダッシュボードへの移動](#ec2ダッシュボードへの移動)
    - [ボリュームのメニューに移動](#ボリュームのメニューに移動)
    - [新しいボリュームの作成](#新しいボリュームの作成)
    - [ボリュームの確認](#ボリュームの確認)
3. [ボリュームのEC2インスタンスへのアタッチ](#ボリュームのec2インスタンスへのアタッチ)
    - [ボリュームのアタッチ操作](#ボリュームのアタッチ操作)
    - [アタッチ先のインスタンスを指定](#アタッチ先のインスタンスを指定)
    - [アタッチの確認](#アタッチの確認)
4. [EC2インスタンスでのボリュームの設定](#ec2インスタンスでのボリュームの設定)
    - [インスタンスへのSSH接続](#インスタンスへのssh接続)
    - [新しいボリュームの認識確認](#新しいボリュームの認識確認)
    - [パーティションの作成（必要に応じて）](#パーティションの作成必要に応じて)
    - [ファイルシステムの作成](#ファイルシステムの作成)
    - [マウントポイントの作成](#マウントポイントの作成)
    - [ボリュームのマウント](#ボリュームのマウント)
    - [マウントの永続化設定（オプション）](#マウントの永続化設定オプション)
5. [ボリュームの使用確認](#ボリュームの使用確認)
    - [ファイルの作成](#ファイルの作成)
    - [ディスク使用状況の確認](#ディスク使用状況の確認)
6. [まとめ](#まとめ)

---

## 前提条件

### EC2インスタンスの用意

- **稼働中のEC2インスタンスが必要です**
  - 事前にEC2インスタンスを起動しておきます。
  - インスタンスはLinuxベースのものを使用します（例：Amazon Linux 2）。

### AWSマネジメントコンソールへのアクセス

- **IAMユーザーとしてAWSマネジメントコンソールにログイン**
  - 適切なアクセス権限（EBSボリュームの作成・アタッチが可能）を持つIAMユーザーを使用します。

---

## EBSボリュームの作成

### EC2ダッシュボードへの移動

1. **AWSマネジメントコンソールにログイン**します。
2. 上部メニューから「**サービス**」をクリックします。
3. 「**Compute（コンピューティング）**」カテゴリから「**EC2**」を選択します。
   - または、検索バーに「**EC2**」と入力して選択します。

### ボリュームのメニューに移動

1. EC2ダッシュボードの左側メニューから「**Elastic Block Store**」セクションを見つけます。
2. 「**ボリューム**」をクリックします。

### 新しいボリュームの作成

1. 「**ボリュームの作成**」ボタンをクリックします。
2. ボリュームの設定を行います。

#### ボリュームタイプ

- 「**汎用SSD (gp2)**」または「**汎用SSD (gp3)**」を選択します。
  - gp3は最新のタイプで、コスト効率と性能が向上しています。

#### サイズ

- 必要なサイズを入力します（例：`10 GiB`）。

#### アベイラビリティゾーン (AZ)

- EC2インスタンスと同じAZを選択する必要があります。
  - インスタンスが配置されているAZを確認し、それと同じものを選択します（例：`us-east-1a`）。

#### IOPSとスループット（gp3の場合）

- 必要に応じてIOPSとスループットを設定します。
- デフォルト設定で問題なければ、そのままにします。

#### 暗号化

- ボリュームの暗号化を有効化する場合はチェックを入れます。
  - デフォルトのAWS管理キー（`aws/ebs`）を使用できます。

3. 設定内容を確認し、「**ボリュームの作成**」ボタンをクリックします。

### ボリュームの確認

- 作成したボリュームが一覧に表示されます。
  - ボリュームの状態が「**使用可能（available）**」であることを確認します。

---

## ボリュームのEC2インスタンスへのアタッチ

### ボリュームのアタッチ操作

1. ボリューム一覧から、先ほど作成したボリュームを選択します。
2. 「**アクション**」メニューをクリックし、「**ボリュームのアタッチ**」を選択します。

### アタッチ先のインスタンスを指定

1. 「**インスタンス**」フィールドに、アタッチ先のEC2インスタンスを選択します。
   - インスタンスIDまたは名前で検索できます。
2. **デバイス名**が自動的に入力されます（例：`/dev/xvdf`）。
   - **注意**: Linuxでは、`/dev/sdf`や`/dev/xvdf`などのデバイス名が使用されます。
3. 「**アタッチ**」ボタンをクリックします。

### アタッチの確認

- ボリュームの状態が「**使用中（in-use）**」に変わります。
  - アタッチ先のインスタンスIDが表示されていることを確認します。

---

## EC2インスタンスでのボリュームの設定

### インスタンスへのSSH接続

1. ターミナルを開き、以下のコマンドでEC2インスタンスにSSH接続します。

    ```bash
    ssh -i /path/to/your/key.pem ec2-user@<インスタンスのパブリックIPアドレス>
    ```

    - `/path/to/your/key.pem`：秘密鍵のパス
    - `ec2-user`：Amazon Linuxの場合のデフォルトユーザー名
    - `<インスタンスのパブリックIPアドレス>`：EC2インスタンスのパブリックIP

### 新しいボリュームの認識確認

1. `lsblk`コマンドでブロックデバイスの一覧を表示します。

    ```bash
    lsblk
    ```

2. 出力例:

    ```plaintext
    NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0  8G  0 disk
    └─xvda1 202:1    0  8G  0 part /
    xvdf    202:80   0 10G  0 disk
    ```

    - `xvdf`という新しいデバイスが追加されていることを確認します。

### パーティションの作成（必要に応じて）

1. `fdisk`コマンドでパーティションを作成します。

    ```bash
    sudo fdisk /dev/xvdf
    ```

2. `fdisk`の操作:
    - `n` を入力して新しいパーティションを作成
    - パーティションタイプとサイズはデフォルトを使用（そのままEnterを押す）
    - `w` を入力して変更を保存して終了

    **簡略化のため、このステップは省略可能**
    - ボリューム全体を単一のパーティションとして使用する場合、直接ファイルシステムを作成できます。

### ファイルシステムの作成

1. `mkfs`コマンドでファイルシステムを作成します。

    ```bash
    sudo mkfs -t ext4 /dev/xvdf
    ```

    - `/dev/xvdf`：新しいボリュームのデバイス名
    - `-t ext4`：ext4ファイルシステムを指定

### マウントポイントの作成

1. マウント先のディレクトリを作成します。

    ```bash
    sudo mkdir /mnt/data
    ```

    - `/mnt/data`は任意のマウントポイントです。

### ボリュームのマウント

1. `mount`コマンドでボリュームをマウントします。

    ```bash
    sudo mount /dev/xvdf /mnt/data
    ```

2. マウントの確認:

    ```bash
    df -h
    ```

    - `/mnt/data`にボリュームがマウントされていることを確認します。

### マウントの永続化設定（オプション）

1. 再起動後もマウントが維持されるように設定します。
2. `/etc/fstab`ファイルを編集します。

    ```bash
    sudo vim /etc/fstab
    ```

3. 以下の行を追加します。

    ```plaintext
    /dev/xvdf   /mnt/data   ext4    defaults,nofail   0   2
    ```

    - `nofail`オプションにより、ボリュームが存在しない場合でも起動エラーを防止します。

4. 設定を保存して終了します。
    - **vimの操作**:
        - `i`キーで編集モードに入る
        - テキストを入力
        - `Esc`キーを押して編集モードを終了
        - `:wq`と入力して保存して終了

---

## ボリュームの使用確認

### ファイルの作成

1. マウントポイントに移動します。

    ```bash
    cd /mnt/data
    ```

2. テスト用のファイルを作成します。

    ```bash
    sudo touch testfile.txt
    ```

3. ファイルが作成されたことを確認します。

    ```bash
    ls -l
    ```

### ディスク使用状況の確認

1. `df -h`コマンドでディスク使用状況を確認します。

    ```bash
    df -h
    ```

2. 新しいボリュームが正しくマウントされていることを再確認します。

---

## まとめ

本記事では、AWS EBSボリュームの作成からEC2インスタンスへのアタッチ、そしてインスタンス内での設定手順を詳しく解説しました。以下のポイントを押さえましょう。

- **EBSボリュームの作成とアタッチ手順を習得**
  - AWSマネジメントコンソールでの操作方法を理解しました。
  
- **EC2インスタンスでのボリューム設定を理解**
  - ファイルシステムの作成やマウント方法を学びました。

- **次のステップ**
  - スナップショットの取得やボリュームのバックアップを試してみましょう。

### 追加リソース

- [Amazon EBS のボリュームを EC2 インスタンスに接続する](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-attaching-volume.html)
- [AWS公式チュートリアル](https://aws.amazon.com/jp/getting-started/hands-on/)