はじめに
こんにちは、一番好きな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でした〜。