AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 952863
Accepted
Brendan Long
Brendan Long
Asked: 2019-02-08 13:40:36 +0800 CST2019-02-08 13:40:36 +0800 CST 2019-02-08 13:40:36 +0800 CST

可以用m5d的本地SSD做根设备吗?

  • 772

我一直在 m5 EC2 实例上使用Amazon ECS AMI,我注意到有一个类似的新 m5d 实例类型,但带有 70 GB 本地 SSD。由于这些都是一次性实例,更快的半便宜 SSD 似乎是完美的,但我无法弄清楚如何实际使用这个本地存储。

我最初尝试在块设备映射中用 ephemeral0 替换 /dev/xvda 或 /dev/xvdcz 设备:

BlockDeviceMappings:
  - DeviceName: /dev/xvdcz
    VirtualName: ephemeral0

..但这似乎没有做任何事情(盒子上的日志说 ephemeral0 不存在),我在文档中发现:

[NVMe 实例存储卷] 这些卷被自动枚举并分配一个设备名称;将它们包含在您的块设备映射中没有任何效果。

由于 ECS AMI 使用 LVM 分区,我可能会为 /dev/xvdcz 创建一个小的 EBS 卷,然后将本地分区(在 中可见lsblk)添加到 LVM 存储,但 NVMe 分区具有任意名称的事实使得这很难以安全的方式进行。

所以这就是我坚持的重点。如果您不能在块设备映射中使用本地存储并且设备名称是半随机的,那么您如何实际使用本地存储?亚马逊是否希望您在每次启动这些实例之一时手动登录并编辑 fstab?我觉得我一定是错过了什么。

我意识到可能有特殊规则阻止我用临时设备替换根设备,但如果它甚至不能替换数据量,我不知道我应该如何使用这个东西。

amazon-web-services
  • 1 1 个回答
  • 1162 Views

1 个回答

  • Voted
  1. Best Answer
    MLu
    2019-02-08T13:59:37+08:002019-02-08T13:59:37+08:00

    您不能将实例存储用作您的根设备。这在多年前曾经是可能的,但据我所知,新的 AMI 不再支持它。因此,您的根必须在 EBS 上,并且您必须在启动期间格式化和挂载临时设备,并将其仅用于您的临时数据、缓存文件夹、tmp 等。

    不,您不应该通过 SSH 连接到实例并手动进行。而是将所需的命令放入UserData实例首次启动时执行的脚本中。要了解更多信息,UserData请参阅启动时在您的 Linux 实例上运行命令

    更新:问题之一是实例存储设备名称不太可预测。它可能是/dev/nvme1n1或/dev/nvme2n1谁知道。幸运的是,所有磁盘设备在下面也有更多描述性的别名/dev/disk/by-id/,我们可以将它们用于我们的目的:

    [ec2-user@ip-172-31-10-228 ~]$ ls -l /dev/disk/by-id/
    nvme-Amazon_EC2_NVMe_Instance_Storage_AWS12B74F473B3456789       << instance storage
    nvme-Amazon_EC2_NVMe_Instance_Storage_AWS12B74F473B3456789-ns-1  << instance storage
    nvme-Amazon_Elastic_Block_Store_vol0199d8c18d345678a
    nvme-Amazon_Elastic_Block_Store_vol0199d8c18d345678a-...
    ...
    

    前两行是实例存储。我不确定 the/dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS12B74F473B3456789和...-ns-1别名之间有什么区别,它们指的是同一个块设备,因此我们可以使用它们中的任何一个。

    我们现在需要做的就是/dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_... 在启动过程中找到实际的设备名称,对其进行格式化、添加/etc/fstab并挂载它。注意:我们添加它/etc/fstab以便在重新启动后再次安装它。

    现在我们将所有部分组合成一个 Cloud Formation 模板。应该做的事情:

    Instance:
      Type: 'AWS::EC2::Instance'
      Properties:
        [...]
        UserData:
          Fn::Base64: |
            #!/bin/bash -x
            IDX=1
            for DEV in /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_*-ns-1; do
              mkfs.xfs ${DEV}
              mkdir -p /local${IDX}
              echo ${DEV} /local${IDX} xfs defaults,noatime 1 2 >> /etc/fstab
              IDX=$((${IDX} + 1))
            done
            mount -a
    

    创建并启动实例后,您应该将Instance / Ephemeral / SSD 存储安装在以下位置/local1:

    [ec2-user@ip-172-31-10-228 ~]$ mount | grep /local1
    /dev/nvme1n1 on /local1 type xfs (rw,noatime,attr2,inode64,noquota)
    

    此处显示的是规范设备名称/dev/nvme1n1,而不是/dev/disk/by-id/..设备别名。但它仍然是同一个磁盘。

    希望有帮助:)

    • 8

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve