从 EC2 实例存储恢复数据

从 EC2 实例存储恢复数据

所以上周,EC2 上的一个实例停止了响应,我仍然不知道具体原因,因为我无法再通过 SSH 登录,我怀疑由于某些未知原因,安装到另一个驱动器的 /tmp/ 目录不再可访问。

我有一些非常重要的文件需要从这个服务器上删除......

我仍然能够在 AWS 控制台中提取日志,这里有一些非常相关的行(我仍然能够重新启动服务器):

        Welcome to  CentOS release 5.4 (Final)
        Press 'I' to enter interactive startup.
Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
Setting clock : Thu Dec 29 13:52:43 EST 2011 [  OK  ]

Starting udev: [  OK  ]

Setting hostname localhost.localdomain:  [  OK  ]

No devices found
Setting up Logical Volume Management: File descriptor 7 (/sys/kernel/hotplug) leaked on lvm.static invocation. Parent PID 232: /bin/bash
[  OK  ]

Checking filesystems
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/sda1 
/dev/sda1: clean, 202786/1310720 files, 1428718/2621440 blocks
[  OK  ]

Remounting root filesystem in read-write mode:  [  OK  ]

Mounting local filesystems:  [  OK  ]

Enabling local filesystem quotas:  [  OK  ]

chown: cannot access `/tmp/.ICE-unix': No such file or directory
Enabling /etc/fstab swaps:  [  OK  ]

INIT: Entering runlevel: 4

Entering non-interactive startup
Starting background readahead: [  OK  ]

Bringing up loopback interface:  [  OK  ]

Bringing up interface eth0:  
Determining IP information for eth0...mktemp: cannot create temp file /tmp/wnt890: No such file or directory
/sbin/dhclient-script: line 57: $rscf: ambiguous redirect
/sbin/dhclient-script: line 62: $rscf: ambiguous redirect
/sbin/dhclient-script: line 69: $rscf: ambiguous redirect
 done.
[  OK  ]

Starting getsshkey:  /etc/rc4.d/S11getsshkey: line 12: /tmp/my-key: No such file or directory
getting ssh-key...
/etc/rc4.d/S11getsshkey: line 17: /tmp/my-key: No such file or directory
getting ssh-key...

我确信这不是防火墙问题。以下是 nmap 的输出

[root@ip-xxxxxxxxx ~]# nmap -sS -P0 xxxxxxxxxxx

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2011-12-29 16:32 EST
Interesting ports on xxxxxx (xxxxxxxxx):
Not shown: 1675 filtered ports
PORT     STATE  SERVICE
22/tcp   closed ssh
25/tcp   closed smtp
80/tcp   closed http
443/tcp  closed https
8000/tcp closed http-alt

答案1

我认为要求这里的任何人帮助您“侵入服务器”并不会特别有助于找到答案。

  1. 创建正在运行的 EC2 实例的快照
  2. 创建一个新实例。
  3. 将快照作为新的 EBS 卷挂载到实例上。
  4. 从快照复制数据
  5. 终止前一个和新的虚拟机实例。

太棒了!您刚刚恢复了数据,无需黑客攻击。

一些工具这里可能有帮助。

答案2

当您无法访问实例时,访问和修复 EBS 根卷(例如,编辑 /etc/fstab)的基本方法是:

  1. 停止原始实例A并分离卷。
  2. 启动临时实例B,将卷附加到该实例,并挂载该卷。
  3. 访问实例 B 并修复附加/安装卷上的文件。
  4. 卸载卷,将其与实例 B 分离,并终止临时实例 B。
  5. 将卷重新附加到原始实例 A,并启动实例 A。

这是我写的一篇文章,其中有更详细的信息,包括如何摆脱这种情况的示例命令行:

修复 EC2 实例的根 EBS 卷上的文件
http://alestic.com/2011/02/ec2-fix-ebs-root

这仅适用于 EBS 启动实例。我不建议运行 instance-store,因为它可能会让您陷入无法恢复数据的境地。

答案3

所以我的数据实际上存储在实例本身上,所以这两种方法都不起作用。实际的解决方案基本上是注册 AWS 支持,也许可以获取你的数据。以下是摘录自EC2 实例常见问题解答

“数据恢复 实例存储的数据恢复通常是不可能的,但如果实例尚未终止且不存在底层硬件问题,AWS Premium Support 可能能够恢复部分数据。不过,数据恢复并不是一个有保证的过程,可能需要几天才能完成,因此不要依赖 AWS Premium Support 的数据恢复可能性作为您唯一的备份策略。”

相关内容