Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Amazon EC2 Linux インスタンスにアタッチされているどのボリュームがインスタンスストア (エフェメラル) ボリュームであるかを確認する方法を教えてください。
Amazon Elastic Block Store (Amazon EBS) ボリュームとインスタンスストアボリュームがアタッチされた Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスがあります。インスタンスストアボリュームであるアタッチされたボリュームを特定したいと考えています。
簡単な説明
Amazon EC2 Linux インスタンスのインスタンスストアボリュームを識別するには、まずインスタンスタイプがインスタンスストアボリュームをサポートしているかどうかを確認します。インスタンスがインスタンスストアボリュームをサポートしている場合は、サポートされているインスタンスストアボリュームのタイプを確認し、次にオペレーティングシステム (OS) からのボリュームの情報を確認します。
解決策
- インスタンスがサポートしているインスタンスストアボリュームのタイプ (HDD、SSD、または NVMe SSD) を確認します。サポートされている各インスタンスタイプで利用できるインスタンスストアボリュームの数量、サイズ、タイプ、パフォーマンスの最適化を確認します。
- インスタンスにアタッチされているボリュームのどれがインスタンスストアボリュームであるかを判断します。識別方法は、NVMe SSD と HDD/SSD のインスタンスストアボリュームのどちらを使用しているかによって異なります。
NVMe SSD インスタンスストアボリューム
-
NVMe コマンドラインパッケージ nvme-cli をインストールします。これには、お使いの Linux ディストリビューションのパッケージ管理ツールを使用してください。Amazon Linux インスタンスの場合は、yum コマンドを使用して nvme-cli パッケージをインストールします。他のディストリビューションのダウンロードとインストールの手順については、nvme-cli の GitHub ドキュメントを参照するか、ご使用のディストリビューション固有のドキュメントを参照してください。
-
[nvme list] コマンドを特権ユーザーとして実行します。
$ sudo nvme list次の出力例の [Model] 列には、接続されている各デバイスが [Amazon Elastic Block Store] か [Amazon 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 インスタンスストアボリュームの場合は、接続されているブロックデバイスのリストをオペレーティングシステムから取得します。次に、インスタンスメタデータに含まれるブロックデバイスマッピングセクションを取得します。
-
lsblk コマンドを実行します。lsblk コマンドがない場合は、Linux ディストリビューションのパッケージ管理ツールを使用して util-linux パッケージをインストールします。Amazon Linux インスタンスの場合は、yum install コマンドを使用して 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 -
前の出力例の**[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] のブロックデバイスマッピングは**[sdb]**向けであり、これは [xvdb] へのシンボリックリンクです。したがって、この例では [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
