【问题标题】:Mounting Old EBS Volume to the new Instance - Amazon EC2将旧 EBS 卷挂载到新实例 - Amazon EC2
【发布时间】:2012-03-10 03:35:40
【问题描述】:

1) 我有一个实例,但 sudo 命令无法解决此实例上的一些错误 所以我不得不创建一个新实例。

2) 我想将旧 EBS 卷与新实例一起使用并停止旧实例。

3) 我创建了一个新实例(新 EBS 卷是使用新实例自动创建的)

4) 我创建了旧卷的快照并附加了新实例。

5) 所以两个 EBS 卷都附加了新实例。

6) 当我使用 SSH 登录新实例时,我在任何地方都看不到旧数据。

7) 我想要新实例上的所有旧数据。


我的问题是...... 如何将旧卷与新实例一起使用?

请帮帮我..我从过去 10 小时开始连续尝试:(..

【问题讨论】:

  • 我们需要更多信息才能回答这个问题。您之前的实例是 Micro 实例吗?如果是,您是停止了它,还是终止了它?旧数据是在您创建第一个实例时自动创建的 EBS 卷上,还是在单独的 EBS 卷上?您是否使用 mount 在新实例上挂载了旧的 EBS 卷?您可以通过在 SSH shell 中运行 df 来检查。你能告诉我们df 命令的输出吗?
  • 1) 是的,它们都是同一区域的微型实例,2) 我停止了旧的实例,3) 它在单独的卷上,第二个实例也创建了一个新卷,但我将两者都附加到了新实例上, 4) 我不知道如何将旧 EBS 卷挂载到新实例,但我已通过亚马逊控制面板附加它,5) DF 输出是 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 8256952 961696 7211384 12% /tmpfs 305624 0 305624 0% /dev/shm

标签: amazon-ec2


【解决方案1】:

您需要做的是将旧卷挂载到新实例上。转到 Amazon EC2 控制面板,然后单击“卷”(在 Elastic Block Store 下)。查看旧 EBS 卷的附件信息。这将类似于<instance id> (<instance name>):/dev/sdg

记下此处给出的路径,以便在上面的示例中为 /dev/sdg。然后使用 SSH 连接到您的新实例,输入 mkdir /mnt/oldvolume,然后输入 mount /dev/sdg /mnt/oldvolume(或控制面板中给出的任何路径)。您的文件现在应该在/mnt/oldvolume 下可用。如果这不能解决您的问题,请在完成所有这些操作后再次发布您的df 命令的输出。

因此,回顾一下,要在实例上使用 EBS 卷,您需要使用控制面板(或 API 工具)将其附加到该实例,然后然后将其挂载到实例本身.

【讨论】:

  • 这是一个精确的解决方案...谢谢 daan :) 是否有任何快速的方法可以使用“/mnt/oldvolume”中可用的新实例来使用所有 apache、mysql 配置?基本上我想运行服务器(apache,mysql),因为它们在旧实例上运行,包括所有旧配置
  • 是的,用旧卷中的替换新卷上的 httpd.confmy.cnf(使用 whereis httpd.confwhereis my.cnf 找到它们)。如果您也想使用旧卷上 wwwmysql 目录中的数据,最简单的方法是创建如下符号链接:rm -rf /var/wwwln -s /mnt/oldvolume/var/www /var/wwwrm -rf /var/lib/mysqlln -s /mnt/oldvolume/var/lib/mysql /var/lib这将删除您可能在新卷上的这些目录中放置的所有数据,因此您可能需要稍微更改一下,但这是一个粗略的想法。
  • 在执行此操作之前不要忘记执行 service httpd stopservice mysqld stop - 然后使用 service httpd startservice mysqld start 使用新设置重新启动它们
  • 非常好的和准确的答案 daan :) ... 还有一件事为什么要使用命令“ln -s”?它是否用于从旧卷移动/复制到新卷?我们可以用“mv”代替吗?
  • 您可以使用mv,但这是不同的:mv 会将数据从旧卷移动到新卷,但ln -s 只是创建一个指向数据的符号链接(快捷方式)旧卷,因此分离旧卷也意味着新实例无法访问您的数据。这取决于你想要做的用例:)