如何备份aws ec2实例/临时存储?

Smi*_*ita 17 amazon-ec2 amazon-web-services ec2-api-tools

我的数据库保存在/ mnt,使用ec2实例附带的临时存储.要使用ec2 api工具进行备份,我们需要一个卷标识,但在aws控制台中,我只能找到8gb根存储的卷标识.

如果想要临时存储的备份,我该怎么办?有备份实例存储的替代方法吗?

Ste*_*pel 30

首先,除非您确切知道自己在做什么并且准备好始终进行时间点备份等,否则您永远不应该在亚马逊EC2中存储任何具有持久价值的东西,但是您的问题似乎表明您可能是误解了短暂存储的概念,Amazon EC2实例存储Amazon EBS之间的差异以及对数据安全和备份要求的重大影响:

短暂存储将在停止/启动周期中丢失并且通常会消失,因此您绝对不希望在那里放置任何持久值,即只将临时数据放在那里,您可以承受丢失或轻松重建,如交换文件或严格在计算过程中使用的临时数据.当然,您可能会在那里存储大量索引,但必须准备好在因任何原因清除存储后重建这些索引(实例重新启动,硬件故障,......).

问题方案

这些解释应阐明您无法使用仅适用于EBS卷(即EBS快照)的机制备份临时存储卷的原因.因此,您可以通过您选择的常规操作系统级备份工具备份前者,Duplicity是一个受欢迎的选择,可选择促进Amazon S3,例如我最简单地使用备份软件用于实时Linux服务器的回答.


Dan*_*uus 6

临时存储或实例存储,就像一个/ tmp文件夹,其内容在重新启动后消失.当然,短暂的驱动器内容不会在软重启时被破坏,但是它们应该被视为它们,因为您无法实际控制或预测实例何时决定死亡.

已经指出了这一点.

我想指出的是,如果您正确地创建和配置AMI,您仍然可以使用短暂存储来大幅提高(读取)吞吐量,只要您还将EBS驱动器保留在实际存储中即可.

我目前使用的是带有bcache的Linux(Ubuntu Tahr)实例.这主要是因为bcache内核支持相对较新(IIRC,第一个bcache是​​3.10),你肯定想要尽可能最新的内核.此外,Tahr是Ubuntu的下一个LTS版本,当我的项目接近发布时它是最终的;)

Bcache的默认配置允许您从短暂存储的读取速度中受益,同时为您提供EBS的持久性:它需要一个快速缓存设备(临时SSD)并使用它来加速慢速设备(EBS),通过缓存设备写入(即同时写入短暂缓存和EBS).

这意味着如果实例崩溃或以其他方式停止,您仍然可以直接安装EBS卷而不使用缓存,并像访问仅使用EBS卷一样访问所有数据.您还可以重新配置现已擦除的临时设备,并将它们重新配置为EBS的缓存,以便重新享受非常快速的读取和搜索.

我的特殊设置是两个EBS设备,使用mdadm +两个短暂的SSD设备以条纹模式进行突袭,也以相同的方式进行搜索.然后我用bcache配置它们,使用短暂的数组作为缓存,将EBS数组作为"备份"设备.EBS驱动器可以是任何大小,您可以随时扩展它们(EC2有点棘手,因为您必须创建当前EBS卷的快照,然后根据该快照创建新的更大的 - 您无法调整大小现有的EBS卷).

当然,您必须创建一个在启动时在实例内运行的脚本,以配置临时存储并将其作为缓存设备附加到EBS支持的备份设备上.我鼓励阅读,并尝试使用mdadmbcache.

为了记录,使用Cassandra压力工具进行测试,我获得了更好的读取性能,其中EBS卷使用临时驱动器进行了bcached,而不是简单地剥离短暂驱动器.这是因为bcache中使用的算法非常聪明.

使用临时驱动器作为缓存还可以减少网络流量并且具有成本效益,因为它可以减少EBS上的I/O,从而减少每月帐单.

另请注意bcache提供的不同类型的缓存:

  1. 回写:使用SSD作为读/写设备,只有在需要从缓存中逐出页面时才写入备份设备.这对于EC2短暂设置没有用,因为它会使您的备份设备在崩溃或停止时无用.
  2. 直写:所有写入都同时进行缓存和备份.这可确保备份设备始终与高速缓存设备保持同步,并且始终可以在没有高速缓存设备的情况下使用.对EC2有用.
  3. 写入:所有写入都直接进入备份设备,并且在将来某个时间发生对该数据的读取请求之前,不会写入高速缓存设备.只有读取缓存在缓存设备上.这与直写一样安全,如果您知道在不久的将来不可能读取您的写入,则非常有用.这避免了填充不经常被请求的数据高速缓存设备,使有什么更多的空间请求的数据.一些示例可以是文件上载服务器,您可以编写大量日志记录数据的系统等.如果您知道整个数据集明显大于短暂存储大小,那么这很可能是最有效的大量用例中的选项.