はじめに
2024年12月からI7ieインスタンスが提供開始されています。
EC2 I7ieインスタンスはストレージ最適化インスタンスの1つであり、インスタンスストレージ(インスタンスストア)としてNitroSSDを有しています。
インスタンスストアであるゆえに、このSSDに保存したデータはインスタンスを停止するとデータが消失します。
今回、Linuxのインスタンスにて、データが消失する際の挙動を確認してみたので、参考としてメモします。
また、EC2インスタンス内からみて、どのデバイスがインスタンスストレージまたはEBSであるかを確認する方法も残しています。
いずれも基本的な操作、確認手順ですし、すでに同様の記事もあるかと思いますが、実施した一例として、どなたかの参考になれば幸いです。
結論
- インスタンスストレージのデータは、個々のファイルが消えるだけでなく、ファイルシステムごと消える!
- EC2内のデバイスについて、インスタンスストレージとEBSの特定は、nvmeコマンドで確認可能
I7ieインスタンスとは
詳細は以下を参照ください。
- 提供を開始: ストレージ最適化 Amazon EC2 I7ie インスタンス
-
Amazon EC2 I7ie インスタンス
Amazon Elastic Compute Cloud (EC2) I7ie インスタンスは、最大 120 TB のローカル NVMe ストレージを提供する第 3 世代 AWS Nitro SSD を搭載しています。I7ie インスタンスは、クラウドで最高のローカル NVMe ストレージ密度を提供します
インスタンスサイズは i7ie.large(vCPU 2, Memory 16GiB, InstanceStorage 1,250GB) からi7ie.48xlarge(vCPU 192, Memory 1,536GiB,InstanceStorage 120,000GB )まであります。
Nitro SSDについて
関連して、AWS Nitro SSDについては、以下を参照ください
- AWS Nitro SSD – I/O 集約型アプリケーション向けのハイパフォーマンスストレージ
- Amazon EBS ボリュームと NVMe
- EC2 インスタンスの SSD インスタンスストアボリューム
環境
インスタンスは以下の通り。
- インスタンスタイプ: i7ie.large
- AMI: al2023-ami-2023.6.20250303.0-kernel-6.1-x86_64
- OS: Amaazon Linux 2023
ストレージについては以下の通り。
- EC2インスタンスのルートデバイス(EBS)のサイズ: 8GB (EC2インスタンス作成時に指定)
- インスタンスストレージのサイズ:1,250GB(largeなので)
準備
起動直後の状態
以下の手順に沿って、EC2インスタンスのストレージの様子を見ていきます。
lsblkコマンドでみると、ルートデバイスのnvme0n1
の8GBは、マウントされていますが、インスタンスストレージのnvme1n1
の1.1TB(≒1,250GB)はマウントされていません。
[ec2-user@ip-10-0-138-182 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme1n1 259:0 0 1.1T 0 disk
nvme0n1 259:1 0 8G 0 disk
├─nvme0n1p1 259:2 0 8G 0 part /
├─nvme0n1p127 259:3 0 1M 0 part
└─nvme0n1p128 259:4 0 10M 0 part /boot/efi
[ec2-user@ip-10-0-138-182 ~]$
fileコマンド、lsblkコマンドでみても、まだファイルシステムが存在していないことが確認できます。
[ec2-user@ip-10-0-138-182 ~]$ sudo file -s /dev/nvme1n1
/dev/nvme1n1: data
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ sudo lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme1n1
nvme0n1
├─nvme0n1p1 xfs / f3225129-f7e3-4da4-90f7-5035c457993d 6.4G 20% /
├─nvme0n1p127
└─nvme0n1p128 vfat FAT16 9AA3-6C3B 8.7M 13% /boot/efi
[ec2-user@ip-10-0-138-182 ~]$
ファイルシステムの作成
xfsでファイルシステムを作成します
[ec2-user@ip-10-0-138-182 ~]$ sudo mkfs -t xfs /dev/nvme1n1
meta-data=/dev/nvme1n1 isize=512 agcount=4, agsize=76293946 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=305175781, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=149011, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
[ec2-user@ip-10-0-138-182 ~]$
以下の通り、lsblkコマンドおよびblkidコマンドの結果から、nvme1n1
がxfsでファイルシステムを作成できていることが確認できました。
[ec2-user@ip-10-0-138-182 ~]$ sudo lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme1n1 xfs 3eb024c4-3288-4535-91cf-4bee232af40f 1.1T 1% /data
nvme0n1
├─nvme0n1p1 xfs / f3225129-f7e3-4da4-90f7-5035c457993d 6.4G 20% /
├─nvme0n1p127
└─nvme0n1p128 vfat FAT16 9AA3-6C3B 8.7M 13% /boot/efi
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ sudo blkid
/dev/nvme0n1p1: LABEL="/" UUID="f3225129-f7e3-4da4-90f7-5035c457993d" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux" PARTUUID="7198aae6-3d36-4761-a593-b74880056701"
/dev/nvme0n1p128: SEC_TYPE="msdos" UUID="9AA3-6C3B" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="32beaf50-f049-4a2e-9404-fb52dce87853"
/dev/nvme0n1p127: PARTLABEL="BIOS Boot Partition" PARTUUID="f21c4b92-7bdc-4d4e-be64-fdb0cedf3e5a"
/dev/nvme1n1: UUID="3eb024c4-3288-4535-91cf-4bee232af40f" BLOCK_SIZE="512" TYPE="xfs"
[ec2-user@ip-10-0-138-182 ~]$
インスタンスストレージ上にファイルを作成
インスタンスストレージをマウントします。
[ec2-user@ip-10-0-138-182 ~]$ sudo mkdir /data
[ec2-user@ip-10-0-138-182 ~]$ sudo mount /dev/nvme1n1 /data/
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 620K 3.1G 1% /run
/dev/nvme0n1p1 8.0G 1.6G 6.4G 20% /
tmpfs 7.7G 0 7.7G 0% /tmp
/dev/nvme0n1p128 10M 1.3M 8.7M 13% /boot/efi
tmpfs 1.6G 0 1.6G 0% /run/user/1000
/dev/nvme1n1 1.2T 8.2G 1.2T 1% /data
[ec2-user@ip-10-0-138-182 ~]$
適当なファイルを置きます。
[ec2-user@ip-10-0-138-182 ~]$ cd /data
[ec2-user@ip-10-0-138-182 data]$ for i in {1..9}; do sudo dd if=/dev/zero of=/data/file$i bs=1M count=1; done
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.000597692 s, 1.8 GB/s
(中略)
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.000531044 s, 2.0 GB/s
[ec2-user@ip-10-0-138-182 data]$ ls /data
file1 file2 file3 file4 file5 file6 file7 file8 file9
[ec2-user@ip-10-0-138-182 data]$ ls -l /data
total 9216
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file1
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file2
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file3
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file4
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file5
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file6
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file7
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file8
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file9
[ec2-user@ip-10-0-138-182 data]$
[ec2-user@ip-10-0-138-182 data]$ du -h /data
9.0M /data
[ec2-user@ip-10-0-138-182 data]$
これで準備はできました。
インスタンス再起動した場合のストレージ
まずはインスタンスを再起動してみます。
以下、再起動直後の状態です。
fstabの設定をしていなかったので、マウントが外れていますが、再度マウントすればファイルは見れます。
[ec2-user@ip-10-0-138-182 ~]$ sudo lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1 xfs / f3225129-f7e3-4da4-90f7-5035c457993d 6.4G 20% /
├─nvme0n1p127
└─nvme0n1p128 vfat FAT16 9AA3-6C3B 8.7M 13% /boot/efi
nvme1n1 xfs 3eb024c4-3288-4535-91cf-4bee232af40f
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ mount | grep data
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ ls /data
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ sudo mount /dev/nvme1n1 /data/
[ec2-user@ip-10-0-138-182 ~]$ mount | grep data
/dev/nvme1n1 on /data type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
[ec2-user@ip-10-0-138-182 ~]$ ls /data
file1 file2 file3 file4 file5 file6 file7 file8 file9
[ec2-user@ip-10-0-138-182 ~]$ ls -l /data
total 9216
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file1
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file2
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file3
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file4
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file5
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file6
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file7
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file8
-rw-r--r--. 1 root root 1048576 Mar 20 13:41 file9
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ sudo lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme1n1 xfs 3eb024c4-3288-4535-91cf-4bee232af40f 1.1T 1% /data
nvme0n1
├─nvme0n1p1 xfs / f3225129-f7e3-4da4-90f7-5035c457993d 6.4G 20% /
├─nvme0n1p127
└─nvme0n1p128 vfat FAT16 9AA3-6C3B 8.7M 13% /boot/efi
[ec2-user@ip-10-0-138-182 ~]$
インスタンスを停止したあとに、起動した場合のストレージ
マネジメントコンソールで、インスタンスを停止&起動しました(not 再起動)。
lsblkコマンドや、fileコマンド、blkidコマンドの結果から、xfsで作成していたファイルシステムごとなくなっています!データは消失し、完全に初期状態に戻っています!
[ec2-user@ip-10-0-138-182 ~]$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1 xfs / f3225129-f7e3-4da4-90f7-5035c457993d 6.4G 20% /
├─nvme0n1p127
└─nvme0n1p128 vfat FAT16 9AA3-6C3B 8.7M 13% /boot/efi
nvme1n1
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ sudo file -s /dev/nvme1n1
/dev/nvme1n1: data
[ec2-user@ip-10-0-138-182 ~]$
[ec2-user@ip-10-0-138-182 ~]$ sudo blkid
/dev/nvme0n1p1: LABEL="/" UUID="f3225129-f7e3-4da4-90f7-5035c457993d" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux" PARTUUID="7198aae6-3d36-4761-a593-b74880056701"
/dev/nvme0n1p128: SEC_TYPE="msdos" UUID="9AA3-6C3B" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="32beaf50-f049-4a2e-9404-fb52dce87853"
/dev/nvme0n1p127: PARTLABEL="BIOS Boot Partition" PARTUUID="f21c4b92-7bdc-4d4e-be64-fdb0cedf3e5a"
[ec2-user@ip-10-0-138-182 ~]$
なお、ホームディレクトリ配下など、ルートデバイスに作成したデータは、停止&再起動をしても残っています。EBSなので当然ですね。
インスタンスストレージとEBSボリュームの確認方法
EC2インスタンスの内部から見ると、/dev/nvme0n1
や/dev/nvme1n1
など複数のデバイスがあります。そのため、そもそも、どれがインスタンスストレージなのか、どれがEBSボリュームなのかを確認したくなります。
その場合は、以下のre:Postの記事が参考になります
以下、今回の環境でやってみた結果です。
nvme-cliのインストール
まずは、nvme-cliをインストールします。
[ec2-user@ip-10-0-138-182 ~]$ sudo yum search nvme-cli
Last metadata expiration check: 2:21:20 ago on Thu Mar 20 12:20:41 2025.
========================================================================================= Name Exactly Matched: nvme-cli ==========================================================================================
nvme-cli.x86_64 : NVMe management command line interface
[ec2-user@ip-10-0-138-182 ~]$ sudo yum install nvme-cli
Last metadata expiration check: 2:21:27 ago on Thu Mar 20 12:20:41 2025.
Dependencies resolved.
===================================================================================================================================================================================================================
Package Architecture Version Repository Size
===================================================================================================================================================================================================================
Installing:
nvme-cli x86_64 1.11.1-3.amzn2023.0.5 amazonlinux 360 k
Transaction Summary
===================================================================================================================================================================================================================
Install 1 Package
Total download size: 360 k
Installed size: 699 k
Is this ok [y/N]: y
Downloading Packages:
nvme-cli-1.11.1-3.amzn2023.0.5.x86_64.rpm 3.6 MB/s | 360 kB 00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 2.4 MB/s | 360 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : nvme-cli-1.11.1-3.amzn2023.0.5.x86_64 1/1
Running scriptlet: nvme-cli-1.11.1-3.amzn2023.0.5.x86_64 1/1
Verifying : nvme-cli-1.11.1-3.amzn2023.0.5.x86_64 1/1
Installed:
nvme-cli-1.11.1-3.amzn2023.0.5.x86_64
Complete!
[ec2-user@ip-10-0-138-182 ~]$
nvmeコマンドで確認
以下の通り、nvmeコマンドの結果から、/dev/nvme0n1
がEBS、/dev/nvme1n1
がインスタンスストレージとわかります。
[ec2-user@ip-10-0-138-182 ~]$ sudo nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 vol002c7efadda3318d8 Amazon Elastic Block Store 1 8.59 GB / 8.59 GB 512 B + 0 B 2.0
/dev/nvme1n1 AWSE98939B6A2F33355E Amazon EC2 NVMe Instance Storage 1 1.25 TB / 1.25 TB 512 B + 0 B 0
[ec2-user@ip-10-0-138-182 ~]$
デバイス名とボリュームIDの紐づけ確認
EBSの場合、nvmeコマンドのSNの列に、EBSのVolumeIDが表示されています。
今回の例では、vol002c7efadda3318d8
が、EC2のルートボリュームのEBSでした。
このVolumeIDは、マネジメントコンソールからも確認できますし、CloudShellだと例えば以下のように確認できます。
EC2インスタンスi-0c145c8826c01d5d5
に、ボリュームvol-002c7efadda3318d8
がアタッチされており、デバイス名は/dev/xvda
であることが確認できます。
(/dev/xvda
は/dev/nvme0n1
へのシンボリックリンクになっていました。)
~ $ aws ec2 describe-instances --output=table --query 'Reservations[].Instances[].{InstanceId: InstanceId, State: State.Name, RootDeviceName: RootDeviceName, RootDeviceType: RootDeviceType, InstanceType: InstanceType, BlockDeviceMappings: BlockDeviceMappings[].{EbsVolumeId:Ebs.VolumeId,DeviceName:DeviceName}}'
----------------------------------------------------------------------------------------
| DescribeInstances |
+----------------------+---------------+-----------------+-----------------+-----------+
| InstanceId | InstanceType | RootDeviceName | RootDeviceType | State |
+----------------------+---------------+-----------------+-----------------+-----------+
| i-0c145c8826c01d5d5 | i7ie.large | /dev/xvda | ebs | running |
+----------------------+---------------+-----------------+-----------------+-----------+
|| BlockDeviceMappings ||
|+-----------------------------+------------------------------------------------------+|
|| DeviceName | EbsVolumeId ||
|+-----------------------------+------------------------------------------------------+|
|| /dev/xvda | vol-002c7efadda3318d8 ||
|+-----------------------------+------------------------------------------------------+|
~ $
おわりに
EC2 I7ieインスタンスを例に、インスタンスストレージとEBSボリュームとで、データが保持される様子を確認してきました。他のインスタンスタイプでも、同様かと思います。
この記事がどなたかの参考になれば幸いです。