将 EBS 添加到 Ubuntu EC2 实例

Posted

技术标签:

【中文标题】将 EBS 添加到 Ubuntu EC2 实例【英文标题】:Add EBS to Ubuntu EC2 Instance 【发布时间】:2012-07-17 03:34:15 【问题描述】:

我在将 EBS 卷连接到我的 Ubuntu EC2 实例时遇到问题。

这就是我所做的:

    通过 Amazon AWS 控制台,我创建了一个 EBS 150GB 卷并将其附加到一个 Ubuntu 11.10 EC2 实例。在 EBS 卷属性下,“Attachment”显示:“[my Ubuntu instance id]:/dev/sdf (attached)”

    尝试在 Ubuntu 机器上安装驱动器,它告诉我“安装:/dev/sdf 不是块设备”

    sudo mount /dev/sdf /vol

    所以我检查了 fdisk 并尝试从新位置挂载,它告诉我它不是正确的文件系统。

    sudo fdisk -l

    sudo mount -v -t ext4 /dev/xvdf /vol

    错误:

    mount: 错误的 fs 类型,错误的选项,/dev/xvdf 上的错误超级块,丢失 代码页或帮助程序,或其他错误 在某些情况下有用的信息 在 syslog 中找到 - 尝试 dmesg |尾巴左右

    “dmesg | tail”告诉我它给出了以下错误:

    EXT4-fs (sda1): VFS: 找不到 ext4 文件系统

我也尝试按照http://www.webmastersessions.com/how-to-attach-ebs-volume-to-amazon-ec2-instance 的说明将配置放入 /etc/fstab 文件,但仍然给出了相同的文件系统错误。

问题:

Q1:基于第 1 点(上),为什么卷在真正映射到“/dev/xvdf”时却映射到“dev/sdf”?

Q2:我还需要做什么才能加载 EBS 卷?我认为当我将它附加到实例时它会为我处理所有事情。

【问题讨论】:

这可能属于面向系统管理员的 StackExchange 站点。尽管如此,这正是我需要找到的。感谢您提出这个问题! 【参考方案1】:

由于这是一个新卷,因此您需要在步骤 1 和步骤 2 之间使用文件系统格式化 EBS 卷(块设备)。因此,使用示例挂载点的整个过程是:

    创建 EBS 卷。

    将 EBS 卷附加到 /dev/sdf(该特定设备号的 EC2 外部名称)。

    格式化文件系统/dev/xvdf(该特定设备号的Ubuntu内部名称):

    sudo mkfs.ext4 /dev/xvdf
    

    仅当这是一个没有数据的新卷时才格式化文件系统。格式化将导致难以或无法检索该卷上之前的任何数据。

    挂载文件系统(更新 /etc/fstab 使其在重启时保持挂载):

    sudo mkdir -m 000 /vol
    echo "/dev/xvdf /vol auto noatime 0 0" | sudo tee -a /etc/fstab
    sudo mount /vol
    

【讨论】:

明确地说,/dev/xvdf 在您挂载 /dev/sdf 之前并不存在。 非常感谢!我完全被 /mnt 目录弄糊涂了,并错误地认为我告诉 AWS 在创建实例时附加的额外 EBS 卷 (/dev/xvdf) 已经挂载。此外,AWS 显示的 (/dev/sdf) 和存在于 ubuntu 上的 (/dev/xvdf) 之间的映射让我大吃一惊。 @scrapcodes:幸运的是,对于原始发帖人的问题(新的、未格式化的 EBS 卷),这些绝对是正确的步骤。如果您遇到完全不同的情况(从包含现有文件系统的快照创建的 EBS 卷),它们当然可能不是正确的步骤。 为什么第四步要包含标志-m 000 @JosephMornin 关闭模式中的所有位是一个简单的指示,即在此处安装新文件系统之前,不应允许任何人在此目录中执行任何操作。这是一条消息,表明该目录已被创建为挂载点。它不是功能所必需的,但有时可以避免在未安装所需卷时创建文件的错误。【参考方案2】:

第 1 步:创建卷 第 2 步:附加到您的实例根卷 第 3 步:运行 sudo resize 2fs -p /dev/xvde 第 4 步:重启 apache2 sudo service apache2 restart 第 4 步:运行 df -h

您可以查看附加到您的实例的总卷。

【讨论】:

以上是关于将 EBS 添加到 Ubuntu EC2 实例的主要内容,如果未能解决你的问题,请参考以下文章

将多个 ebs 卷附加到每个 ec2 实例

在 EBS 卷上创建文件系统,将其挂载到 EC2 实例并在将实例替换为 CDK 时持久化数据

AWS 自动将 EBS 卷附加到 Elastic Beanstalk 后面的 EC2 实例

多个 EC2 实例(扩展)如何在一个 EBS 上进行数据存储?

Amazon EC2 - 将根实例存储设备与 EBS 设备交换

如何减少 EC2 实例的根 EBS 卷大小?