如何识别附加到我的 Amazon EC2 Linux 实例的哪些卷是实例存储(暂存)卷?
上次更新时间:2019 年 12 月 19 日
我有一个 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例,同时具有附加在其上的 Amazon Elastic Block Store (Amazon EBS) 卷和实例存储(暂存)卷。如何识别哪些附加卷是实例存储卷?
简短描述
要识别 Amazon EC2 Linux 实例上的实例存储卷,首先检查实例类型是否支持实例存储卷。如果实例支持实例存储卷,则检查支持的实例存储卷的类型,并从操作系统 (OS) 查看卷的信息。
解决方法
1. 验证实例支持的实例存储卷类型(HDD、SSD 或 NVMe SSD,如果有)。请参阅 Amazon EC2 实例存储 – 实例存储卷以查看实例存储卷的数量、大小、类型和性能优化,这些卷可用于每个支持的实例类型。
2. 确定附加到实例的哪些卷是实例存储卷。所用的识别方法取决于您是否具有 NVMe SSD 或 HDD/SSD 实例存储卷。
NVMe SSD 实例存储卷
2. 使用 Linux 发行版的软件包管理工具安装 NVMe 命令行软件包 nvme-cli。对于 Amazon Linux 实例,使用 yum install 命令安装 nvme-cli 软件包。有关其他版本的下载和安装说明,请参阅 nvme-cli 的 GitHub 文档或特定于您的发行版的文档。
3. 以特权用户身份运行 nvme list。
$ sudo nvme list
以下输出示例的模型列中列出了连接的每个设备是 Amazon Elastic Block Store 还是 Amazon EC2 NVMe 实例存储。示例输出来自支持一个 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 实例存储卷,从操作系统获取连接的块储存设备列表,然后检索包含在实例元数据中的块储存设备映射部分。
2. 运行 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
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 的块储存设备映射到 sdb,这是指向 xvdb 的符号链接。因此,在本示例中,xvdb 是一个临时设备。
或者,您可以使用以下命令集自动执行检查以显示附加到实例的临时设备。
识别操作系统块储存设备。
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/"
浏览操作系统设备并在块储存设备映射中查找映射。
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
以下是前面介绍的三个命令的示例以及示例输出。
$ 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
这篇文章对您有帮助吗?
我们可以改进什么?
需要更多帮助?