linux - 您可以将 Amazon EBS 附加到多个实例吗?

标签 linux file amazon-ec2 amazon-web-services

我们目前使用多个网络服务器访问一个 mysql 服务器和文件服务器。考虑迁移到云端,我是否可以使用相同的设置并将 EBS 附加到多个机器实例,或者其他解决方案是什么?

最佳答案

更新(2015 年 4 月):对于这个用例,您应该开始查看新的 Amazon Elastic File System (EFS) ,它旨在以您想要的方式进行多重连接。 EFS 和 EBS 之间的主要区别在于它们提供了不同的抽象:EFS 公开 NFSv4 协议(protocol),而 EBS 提供原始 block IO 访问。

您将在下面找到我对为什么无法在多台机器上安全地挂载原始 block 设备的原始解释。


原帖(2011 年):

即使您能够将 EBS 卷附加到多个实例,它也将是一个_REALLY_BAD_IDEA_。引用 Kekoa 的话,“这就像同时在两台计算机上使用硬盘一样”

为什么这是个坏主意? ... 不能将卷附加到多个实例的原因是 EBS 提供了一种“ block 存储”抽象,客户在该抽象上运行 ext2/ext3/等文件系统。大多数这些文件系统(例如,ext2/3、FAT、NTFS 等)都是在假设它们对 block 设备具有独占访问权限的情况下编写的。访问同一个文件系统的两个实例几乎肯定会以撕裂和数据损坏而告终。

换句话说,只有在您运行旨在在多台机器之间共享 block 设备的集群文件系统时,双重挂载 EBS 卷才有效。此外,即使这样也不够。 EBS 需要针对这种情况进行测试,并确保它提供与其他共享 block 设备解决方案相同的一致性保证……即, block 不会缓存在中间非共享级别,如 Dom0 内核、Xen 层、和 DomU 内核。然后是在多个客户端之间同步块(synchronized block)的性能考虑 - 大多数集群文件系统设计用于高速专用 SAN,而不是尽力而为的商品以太网。听起来很简单,但你要求的却是一件很不平凡的事情。

或者,查看您的数据共享方案是否可以是 NFS、SMB/CIFS、SimpleDB 或 S3。这些解决方案都使用旨在共享文件而无需共享 block 设备子系统的更高层协议(protocol)。很多时候,这样的解决方案实际上更有效。

在您的情况下,您仍然可以拥有一个由多个 Web 前端访问的 MySql 实例/文件服务器。然后,该文件服务器可以将其数据存储在 EBS 卷上,允许您进行夜间快照备份。如果运行文件服务器的实例丢失,您可以分离 EBS 卷并将其重新附加到新的文件服务器实例,并在几分钟内备份并运行。

“有没有像 S3 这样的文件系统?” - 有也没有。是的,有第 3 方解决方案,例如 s3fs这工作“好”,但在幕后,他们仍然必须为每次读/写进行相对昂贵的 Web 服务调用。对于共享工具目录,效果很好。对于您在 HPC 世界中看到的那种集群 FS 使用,这不是一个机会。为了做得更好,您需要一个提供二进制面向连接协议(protocol)的新服务,例如 NFS。提供这样一个具有合理性能和行为的多挂载文件系统将是 EC2 的一个很棒的功能插件。长期以来,我一直倡导亚马逊构建类似的东西。

关于linux - 您可以将 Amazon EBS 附加到多个实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/841240/

相关文章:

linux - 允许特定 IP 的 MongoDB 远程访问

java - Boggle 求解器的实现

python-3.x - 如何对部署在 AWS 上的 Flask 应用程序进行 50 次并发调用?

amazon-web-services - 将 Docker-Machine 与 Amazon EC2 集成

php - 如何在现有 CMS 旁边安装 Wordpress?

linux - 流水线化 stderr 时如何使行缓冲工作?

linux - FC12下的Pulseaudio头文件

iphone - 在 iPhone 应用程序中下载文件

linux - 使用 awk 从文件中提取信息并使用 bash 将其存储到变量中

amazon-web-services - IPV4 流量不适用于仅 AWS 导出互联网网关