Amazon EC2 Linux インスタンスに添付されているボリュームのうち、どれがインスタンスストア (エフェメラル) ボリュームなのか識別する方法を教えてください。

最終更新日: 2019 年 12 月 19 日

Amazon Elastic Block Store (Amazon EBS) ボリュームとインスタンスストア (エフェメラル) ボリュームの両方が添付された Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスがあります。添付されたボリュームのうち、どれがインスタンスストアボリュームかを識別する方法を教えてください。

簡単な説明

Amazon EC2 Linux インスタンスのインスタンスストアボリュームを特定するには、まず、インスタンスタイプがインスタンスストアボリュームをサポートしているかどうかを確認します。インスタンスがインスタンスストアボリュームをサポートしている場合は、サポートされているインスタンスストアボリュームのタイプを確認し、オペレーティングシステム (OS) からボリュームの情報を確認します。

解決方法

1.    インスタンスがサポートするインスタンスストアボリュームのタイプ (HDD、SSD、NVMe SSD) を確認します。サポートされている各インスタンスタイプで使用できるインスタンスストアボリュームの数量、サイズ、タイプ、およびパフォーマンスの最適化については、Amazon EC2 インスタンスストア - インスタンスストアボリュームを参照してください。

2.    インスタンスに添付されたボリュームのうち、どれがインスタンスストアボリュームであるかを決定します。使用される識別方法は、NVMe SSD または HDD/SSD インスタンスストアボリュームがあるかどうかによって異なります。

NVMe SSD インスタンスストアボリューム

1.    インスタンスに接続します

2.    Linux ディストリビューションのパッケージ管理ツールを使用して、NVMe コマンドラインパッケージ nvme-cli をインストールします。Amazon Linux インスタンスの場合は、yum インストールコマンドを使用して nvme-cli パッケージをインストールします。他のディストリビューションのダウンロードおよびインストールの手順については、nvme-cli の GitHub ドキュメント、またはディストリビューション固有のドキュメントをご覧ください。

3.    特権ユーザーとして nvme 表示コマンドを実行します。

$ sudo nvme list

次の出力例のモデル列には、添付された各デバイスが Amazon Elastic Block StoreAmazon EC2 NVMe インスタンスストレージかが表示されます。出力例は、1 つの NVMe SSD デバイスをサポートするインスタンスタイプからのものです。

$ sudo nvme list
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     vol0923757ba05df9515 Amazon Elastic Block Store               1           0.00   B /   8.59  GB    512   B +  0 B   1.0
/dev/nvme1n1     AWS1A4FC25FB16B79F76 Amazon EC2 NVMe Instance Storage         1          50.00  GB /  50.00  GB    512   B +  0 B   0

HDD または SSD インスタンスストアボリューム

HDD または SSD インスタンスストアボリュームの場合、OS から添付されたブロックデバイスのリストを取得し、インスタンスメタデータに含まれるブロックデバイスのマッピングセクションを取得します。

1.    インスタンスに接続します

2.    lsblk コマンドを実行します。lsblk コマンドが存在しない場合は、Linux ディストリビューションのパッケージ管理ツールを使用して util-linux パッケージをインストールします。Amazon Linux インスタンスの場合は、yum インストールコマンドを使用して util-linux パッケージをインストールします。他のディストリビューションのダウンロードおよびインストールの手順については、ディストリビューション固有のドキュメントをご覧ください。

$ sudo lsblk

次の出力例は、多くのドライブがあり、SSD インスタンスストアボリュームをサポートするインスタンスタイプで実行されているインスタンスから取得されたブロックデバイスのリストを示しています。

$ sudo lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
xvda    202:0    0     8G  0 disk
└─xvda1 202:1    0     8G  0 part /
xvdb    202:16   0 745.2G  0 disk
xvdc    202:32   0 745.2G  0 disk
xvdd    202:48   0 745.2G  0 disk
xvde    202:64   0 745.2G  0 disk

3.    以前の出力例から xvdb がエフェメラルドライブであるかどうかを確認するには、すべてのインスタンスメタデータリクエストのベース URL (http://169.254.169.254/latest/meta-data/block-device-mapping) を使用してブロックデバイスにマッピングされたメタデータを取得します。

$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
sdb
$ ls -l /dev/sdb
lrwxrwxrwx 1 root root 4 Aug 27 13:07 /dev/sdb -> xvdb

前の例では、ephemeral0 のブロックデバイスマッピングが、xvdb へのシンボリックリンクである sdb へのマッピングです。したがって、この例では xvdb はエフェメラルデバイスです。

または、次のコマンドセットを使用して、インスタンスに添付されたエフェメラルデバイスを表示するチェックを自動化できます。

OS ブロックデバイスを特定します。

OSDEVICE=$(sudo lsblk -o NAME -n | grep -v '[[:digit:]]' | sed "s/^sd/xvd/g")

ブロックデバイスマッピング URL を設定します。

BDMURL="http://169.254.169.254/latest/meta-data/block-device-mapping/"

OS デバイスをループし、ブロックデバイスマッピングでマッピングを見つけます。

for bd in $(curl -s ${BDMURL}); do MAPDEVICE=$(curl -s ${BDMURL}/${bd}/ | sed "s/^sd/xvd/g"); if grep -wq ${MAPDEVICE} <<< "${OSDEVICE}"; then echo "${bd} is ${MAPDEVICE}"; fi; done | grep ephemeral

前述の 3 つのコマンドの例と、出力例を以下に示します。

$ OSDEVICE=$(sudo lsblk -o NAME -n | grep -v '[[:digit:]]' | sed "s/^sd/xvd/g")
$ BDMURL="http://169.254.169.254/latest/meta-data/block-device-mapping/"
$ for bd in $(curl -s ${BDMURL}); do MAPDEVICE=$(curl -s ${BDMURL}/${bd}/ | sed "s/^sd/xvd/g"); if grep -wq ${MAPDEVICE} <<< "${OSDEVICE}"; then echo "${bd} is ${MAPDEVICE}"; fi; done | grep ephemeral
ephemeral0 is xvdb
ephemeral1 is xvdc
ephemeral2 is xvdd
ephemeral3 is xvde

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合