EBSボリュームを追加して利用できるようにしてみた

AWS,Linux

EBSアタッチアイキャッチ画像
ブログ運営者
さいとう

閲覧いただきありがとうございます!"さいとう"と申します。わたしは異業種・未経験からIT業界に転職し、現在インフラエンジニアとしてクラウド環境の設計や構築・運用の支援を行っています。


amazon EC2インスタンスを利用している際に、ルートボリュームとは別に、追加のEBSボリュームをアタッチすることがあります。しかし、EBSボリュームをアタッチするだけでは、OS上にはファイルシステムが作成されておらず、そのままでは利用できません。


新しくアタッチしたEBSボリュームを利用可能にするためには、いくつかの手順を踏む必要があります。具体的には、EBSボリュームを認識させ、パーティションを作成し、ファイルシステムをフォーマットし、最後にマウントするという作業が必要です


今回の記事では、EC2インスタンスにEBSボリュームをアタッチし、実際に利用できるようにするための具体的な手順を詳しく紹介します。


まず、AWSマネジメントコンソールからEBSボリュームをアタッチする方法を説明し、その後、Linux環境におけるボリュームの認識、パーティションの作成、ファイルシステムのフォーマット、そしてマウントの手順を順を追って解説します。これにより、EBSボリュームを活用して、データストレージを柔軟に拡張し、アプリケーションのデータ管理を効率的に行うことができるようになります。

ディスクを追加して利用できるようにしてみた

EBS作成・アタッチ

AWSマネージメントコンソールでAmazon EBSボリュームを作成します。


↓左ペインの[ボリューム]をクリックします。

EBSアタッチEBSボリューム作成1


↓[ボリューム作成]をクリックします。

EBSアタッチEBSボリューム作2


↓必要事項を入力します。今回はすべてデフォルトのまま進めます。

EBSアタッチEBSボリューム作成4


↓入力が完了しましたら、[ボリュームの作成]をクリックします。

EBSアタッチEBSボリューム作成5


↓作成したボリュームにチェックをして、[アクション]をクリックします。

EBSアタッチEBSボリューム作成2


↓[ボリュームのアタッチ]をクリックします。

EBSアタッチEBSボリュームアタッチ1


↓アタッチするインスタンスやデバイス名を選択し、[ボリュームのアタッチ]をクリックします。今回はデバイス名は[/dev/sdb]を選択しています。

EBSアタッチEBSボリュームアタッチ2


ボリューム作成は以上です。

パーティション作成

ファイルシステムを追加するEC2インスタンスにログインし、lsblk コマンドを使用して、新しいボリュームがどのデバイスとして認識されているかを確認します。

lsblk -f


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ lsblk -f
NAME          FSTYPE LABEL UUID                                 MOUNTPOINT
nvme0n1
├─nvme0n1p1   xfs    /     54607323-c925-4060-a545-55cde0ae4a71 /
└─nvme0n1p128
nvme1n1
[ec2-user@ip-10-0-1-227 ~]$ 


パーティションがまだ作成されていない NVMe SSD デバイスの"nvme1n1″が認識されていますね。nvme1n1上にパーティションを作成していきます。


fdisk を起動し、"nvme1n1″デバイスの fdisk メニューに入ります。

sudo fdisk /dev/nvme1n1


①メニューで n を押して新しいパーティション作成を選択します。
②パーティションタイプについて尋ねられた場合、p (プライマリ) を選択することが一般的です(4つまで可能)。
③パーティション番号、最初のセクター、最後のセクター(サイズ指定)について尋ねられます。デフォルト設定を使用するか、特定のサイズを指定することができます。
④パーティションの設定が完了したら、w を押して変更をディスクに書き込みます。これで、新しいパーティションが作成されます。


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ sudo fdisk /dev/nvme1n1

Welcome to fdisk (util-linux 2.30.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x7bd0e9e8.

Command (m for help): n ←①
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p ←②
Partition number (1-4, default 1): 
First sector (2048-33554431, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-33554431, default 33554431): +8G ←③

Created a new partition 1 of type 'Linux' and of size 8 GiB.

Command (m for help): w ←④
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.


パーティションが作成されたか確認しましょう。

lsblk -f



【実行結果】

[ec2-user@ip-10-0-1-106 ~]$ lsblk -f
NAME          FSTYPE LABEL UUID                                 MOUNTPOINT
nvme0n1
├─nvme0n1p1   xfs    /     54607323-c925-4060-a545-55cde0ae4a71 /
└─nvme0n1p128
nvme1n1
└─nvme1n1p1


↓変更を反映します。

sudo partprobe


パーティション作成は以上です。

xfsファイルシステム作成

パーティションを作成したら、XFSファイルシステムを作成します。

sudo mkfs.xfs -f /dev/nvme1n1p1


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ sudo mkfs.xfs -f /dev/nvme1n1p1
meta-data=/dev/nvme1n1p1         isize=512    agcount=8, agsize=262144 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=2097152, imaxpct=25
         =                       sunit=1      swidth=1 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


xfsファイルシステムは以上です。

マウントポイント作成

新しいファイルシステムをマウントするためのマウントポイントとなるディレクトリを作成します。

sudo mkdir /testdir


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ sudo mkdir /testdir


マウント

作成したディレクトリをマウントポイントとして、ファイルシステムをマウントします。

sudo mount /dev/nvme1n1p1 /testdir


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ sudo mount /dev/nvme1n1p1 /testdir



マウントされたか確認します。

df -h


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           3.8G  500K  3.8G   1% /run
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1   30G  1.8G   29G   6% /
tmpfs           765M     0  765M   0% /run/user/1000
tmpfs           765M     0  765M   0% /run/user/0
/dev/nvme1n1p1  8.0G   90M  8.0G   2% /testdir


[/dev/nvme1n1p1 8.0G 90M 8.0G 2% /testdir]とマウントされていることを確認できました。

マウント永続化

新しく作成したファイルシステムをマウントポイントとマウントしましたが、再起動するとマウントされた状態では起動されません。再起動した際に自動でマウントされるように設定していきます。


再起動すると、

[ec2-user@ip-10-0-1-227 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           3.8G  408K  3.8G   1% /run
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1   30G  1.8G   29G   6% /
tmpfs           765M     0  765M   0% /run/user/1000


さきほどの[/dev/nvme1n1p1 8.0G 90M 8.0G 2% /testdir]は消えていますね。

再起動した場合、自動マウントされる設定は[/etc/fstab]ファイルに記述されています。

cat /etc/fstab


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ cat /etc/fstab 
#
UUID=54607323-c925-4060-a545-55cde0ae4a71     /           xfs    defaults,noatime  1   1


ルートディレクトリのマウント設定が記述されていますので、追加で記述していきます。ルートディレクトリで使用しているデバイスは、UUIDで指定しています。ほかにもデバイスを特定するためにデバイスファイル名(例: /dev/sda1)、ファイルシステムラベル(例: LABEL=rootdisk)を使用することができます。安定性と確宜性を最優先する場合は UUID を使用することが推奨されますので、追加したデバイスもUUIDで指定するようにします。まずはUUIDを調べます。

sudo su -
blkid


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ sudo su -
[root@ip-10-0-1-227 ~]# blkid
/dev/nvme1n1: PTUUID="7bd0e9e8" PTTYPE="dos"
/dev/nvme1n1p1: UUID="0fdf408d-6484-4cf0-a446-6610a722becd" TYPE="xfs" PARTUUID="7bd0e9e8-01"
/dev/nvme0n1: PTUUID="b83865f5-c868-4aed-854c-0a249fd23673" PTTYPE="gpt"
/dev/nvme0n1p1: LABEL="/" UUID="54607323-c925-4060-a545-55cde0ae4a71" TYPE="xfs" PARTLABEL="Linux" PARTUUID="eb2a045f-1b55-4b51-85dd-4969f85d875d"
/dev/nvme0n1p128: PARTLABEL="BIOS Boot Partition" PARTUUID="fea66d8f-182e-4ac0-bf69-c03555b4cadf"


つぎのコマンドに、/dev/nvme0n1p1のUUIDを<YOUR UUID>に貼り付けて実行してください。

echo "UUID=\"<YOUR UUID>\" /taskdir xfs defaults 1 2" | sudo tee -a /etc/fstab


/etc/fstab ファイルにおける最後の二つの数字(この場合は 0 2)は、それぞれダンプ(バックアップ)用の設定と fsck(ファイルシステムの整合性チェック)の順序を指定します。

【fsckの順序値の説明】

  • 0: fsck はこのファイルシステムをチェックしない
  • 1: fsck はこのファイルシステムを最優先でチェックする(通常、ルートファイルシステム / に設定されます)
  • 2 以上: fsck はこれらのファイルシステムをチェックするが、ルートファイルシステムよりも後になる


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ echo "UUID=\"0fdf408d-6484-4cf0-a446-6610a722becd\" /taskdir xfs defaults 1 2" | sudo tee -a /etc/fstab
UUID="0fdf408d-6484-4cf0-a446-6610a722becd" /taskdir xfs defaults 1 2
[ec2-user@ip-10-0-1-227 ~]$ cat /etc/fstab
#
UUID=54607323-c925-4060-a545-55cde0ae4a71     /           xfs    defaults,noatime  1   1
UUID="0fdf408d-6484-4cf0-a446-6610a722becd" /testdir xfs defaults 1 2
[ec2-user@ip-10-0-1-227 ~]$


↓以下のコマンドで構文エラーがないかチェックします

mount -a


以上ですべての設定が完了しました。

システムの再起動

動作確認をしていきましょう。

sudo reboot
df -h


【実行結果】

[ec2-user@ip-10-0-1-227 ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           3.8G  412K  3.8G   1% /run
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1   30G  1.8G   29G   6% /
/dev/nvme1n1p1  8.0G   90M  8.0G   2% /testdir
tmpfs           765M     0  765M   0% /run/user/1000


問題なくマウントされていますね。

まとめ

EBSボリュームの追加は、設計・構築段階だけでなく、運用保守フェーズでも頻繁に発生する重要な作業です。インフラエンジニアとして、ディスクの追加方法を知っておくことは必須のスキルと言えるでしょう。


今回の記事では、EBSボリュームのアタッチから、パーティションの作成、ファイルシステムのフォーマット、そしてマウントに至るまでの手順を詳しく解説しました。これらの作業は一見複雑に思えるかもしれませんが、各ステップを順を追ってしっかりと実行すれば、確実に進めることができます。パーティションの作成やファイルシステムのフォーマットといった操作は、一度理解してしまえばそれほど難しいものではありません。むしろ、これらの手順をマスターすることで、システムの柔軟なストレージ管理が可能となり、運用効率が大幅に向上します。


運用保守の現場では、突然のディスク容量不足やデータストレージの拡張が必要になる場面が多々あります。その際に、EBSボリュームを迅速かつ正確に追加し、適切に設定できるスキルは大きな強みとなるでしょう。作業時は、慌てずに一つ一つの手順を丁寧にこなすことが重要です。正確な作業はシステムの安定運用に直結しますし、ミスを防ぐことにも繋がります。


今回の記事を参考に、EBSボリュームの追加と設定をスムーズに行い、AWS環境でのシステム運用をさらに効率的に進めてください。この記事が、EBSボリュームの管理に関する知識を深め、実際の運用に役立つことを願っています。これからも、インフラエンジニアとしてのスキルを磨き、安定したシステム運用を目指していきましょう。

参考リンク: インスタンスへの Amazon EBS ボリュームのアタッチ