はじめに

こんにちは、一番好きなAWSサービスは「Amazon Athena」のMitsuoです。
過去に経験があっても「どうやるんだっけ」みたいな事よくありませんか。私はしょっちゅうです。
こういった簡易的なメモでも需要があったりするのかな?と言うので記事にしてみます。

タイトルの通り、EC2インスタンスに新しいEBSボリュームをアタッチし、マウントするまでの手順をご紹介します。

実行環境

  • リージョン:バージニア北部 (us-east-1)
  • キーペアは作成せず、Systems Manager の Session Manager 機能でOSにログインします。
  • EC2インスタンスはプライベートサブネットに配置し、アウトバウンド通信のみ許可します。
    • 検証のため、セキュリティグループのアウトバウンドルールで「すべてのトラフィックに 0.0.0.0/0 を許可」する設定にしています。
    • EC2インスタンスへのインバウンドアクセスは不要です。
  • AmazonSSMManagedInstanceCore ポリシーをアタッチしたIAMロールをEC2インスタンスに付与します。
  • AMI:Red Hat Enterprise Linux 9 (HVM), SSD Volume Type
    • Red Hat Enterprise Linux 9 には、デフォルトでSSM Agentがインストールされていないため、以下のユーザーデータを設定します。
#!/bin/bash -v

sudo dnf install -y https://s3.us-east-1.amazonaws.com/amazon-ssm-us-east-1/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent
  • AmazonSSMManagedInstanceCoreポリシーをアタッチしたIAMロールを付与する

イメージ図

簡単な構成図です。

実行手順

  • EBSボリュームを新規作成・アタッチ
  • OSにログイン
  • ファイルシステムの作成
  • ファイルシステムのマウント

EBSを新規作成、アタッチ

EC2コンソールの [ボリューム] > [ボリュームの作成] からEBSボリュームを作成します。
アベイラビリティゾーンは、アタッチ対象のEC2インスタンスと同じものを選択してください。

作成したEBSボリュームを選択し、[アクション] から [ボリュームのアタッチ] をクリックします。

ボリュームのアタッチ画面で、作成したEC2インスタンスと、デバイス名(例:/dev/sdf)を選択し、[ボリュームのアタッチ] をクリックします。

EC2インスタンス詳細の [ストレージ] タブで、EBSボリュームが追加でアタッチされていることを確認できます。

OSログイン

EC2コンソールで対象インスタンスを選択し、[接続] > [セッションマネージャー] タブを開き、[接続] ボタンをクリックするとOSの操作画面が表示されます。
これで、SSM Agentが正常に起動し、Session Managerが利用できることが確認できました。

ファイルシステム作成

まず、現在のディスクの状態を確認します。FSTYPEはファイルシステムの種類、MOUNTPOINTSはマウント先(マウントポイント)を表します。

sh-5.1$ sudo lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1
├─nvme0n1p2 vfat   FAT16       7B77-95E7                             192.7M     4% /boot/efi
├─nvme0n1p3 xfs          boot  0bc2a52f-8bf9-4acf-bd54-af6dca335659  781.7M    19% /boot
└─nvme0n1p4 xfs          root  d87a096f-24f5-42ca-b8de-66538d74eccd    6.9G    21% /
nvme1n1

FSTYPEはファイルシステムの種類、MOUNTPOINTSはマウント先(マウントポイント)を表します。
nvme0n1がルートボリュームでデフォルト値でxfs、vfatになっています。
nvme0n1がOSのルートボリュームで、各パーティションが xfs や vfat でフォーマットされています。
一方、追加でアタッチしたEBSボリュームである nvme1n1 には、まだファイルシステムが作成されておらず、マウントもされていないことがわかります。

新規作成したEBSディスクはファイルシステムがない 事がわかります。
では、ファイルシステムを作成しましょう。
ここでは、/dev/nvme1n1 デバイスに ext4 という種類のファイルシステムを作成します。

sh-5.1$ sudo mkfs -t ext4 /dev/nvme1n1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: 728553f9-672a-48ad-bfc0-92c88b15fb1a
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

もう一度 lsblk コマンドを実行すると、nvme1n1 の FSTYPE に ext4 が表示され、ファイルシステムが作成されたことが確認できます。

NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1
├─nvme0n1p2 vfat   FAT16       7B77-95E7                             192.7M     4% /boot/efi
├─nvme0n1p3 xfs          boot  0bc2a52f-8bf9-4acf-bd54-af6dca335659  781.7M    19% /boot
└─nvme0n1p4 xfs          root  d87a096f-24f5-42ca-b8de-66538d74eccd    6.9G    21% /
nvme1n1     ext4   1.0         728553f9-672a-48ad-bfc0-92c88b15fb1a

ファイルシステムのマウント

続いてマウント作業を行います。
まず、mkdir コマンドでマウントポイントとなるディレクトリ(例:/mnt/nvme1n1)を作成し、mount コマンドでデバイス (/dev/nvme1n1) と紐付けます。
df -h コマンドからファイルシステムがマウントされた事がわかります。

sh-5.1$ sudo mkdir /mnt/nvme1n1
sh-5.1$ sudo mount /dev/nvme1n1 /mnt/nvme1n1
sh-5.1$
sh-5.1$ df -h /mnt/nvme1n1
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme1n1    9.8G   24K  9.3G   1% /mnt/nvme1n1

lsblkコマンドを実行してもマウントポイントが追加されている事がわかりますね!

sh-5.1$ sudo lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1
├─nvme0n1p2 vfat   FAT16       7B77-95E7                             192.7M     4% /boot/efi
├─nvme0n1p3 xfs          boot  0bc2a52f-8bf9-4acf-bd54-af6dca335659  781.7M    19% /boot
└─nvme0n1p4 xfs          root  d87a096f-24f5-42ca-b8de-66538d74eccd    6.9G    21% /
nvme1n1     ext4   1.0         728553f9-672a-48ad-bfc0-92c88b15fb1a    9.2G     0% /mnt/nvme1n1

補足

このままではOSを再起動するとマウントが解除されてしまいます。
サーバー再起動時、自動的にマウントされるようにするには、/etc/fstabファイルに設定を追記する必要があります。

まずは blkid コマンドで、作成したファイルシステムのUUIDを調べて控えておきます。

sh-5.1$ sudo blkid | grep ext4
/dev/nvme1n1: UUID="728553f9-672a-48ad-bfc0-92c88b15fb1a" TYPE="ext4"

sudo vi /etc/fstabコマンドを実行し、「UUID=728553f9-672a-48ad-bfc0-92c88b15fb1a /mnt/nvme1n1 ext4 defaults,nofail 0 2」を追記します。
以下は追記後の確認コマンドです。

sh-5.1$ sudo cat /etc/fstab | grep ext4
UUID=728553f9-672a-48ad-bfc0-92c88b15fb1a /mnt/nvme1n1 ext4  defaults,nofail  0  2

追記後、EC2インスタンスを再起動します。

再起動後も自動でマウントされていますね!

sh-5.1$ sudo lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme1n1
├─nvme1n1p1
├─nvme1n1p2 vfat   FAT16       7B77-95E7                             192.7M     4% /boot/efi
├─nvme1n1p3 xfs          boot  0bc2a52f-8bf9-4acf-bd54-af6dca335659  781.7M    19% /boot
└─nvme1n1p4 xfs          root  d87a096f-24f5-42ca-b8de-66538d74eccd    6.9G    21% /
nvme0n1     ext4   1.0         728553f9-672a-48ad-bfc0-92c88b15fb1a    9.2G     0% /mnt/nvme1n1

最後に

初心者向けの手順ですが、誰かの勉強になる記事であれば幸いです。
Mitsuoでした〜。