如何将Mdadm RAID驱动器(基于EBS)移动到不同的AWS实例

我们有一个托pipe在AWS上的富媒体Web应用程序。 我们有几个Web服务器,我们有一个NFS服务器。

在NFS服务器(Linux服务器)上,我们有几个已安装的EBS卷,我们已经使用mdadm将不同的assembly卷作为单个RAID卷来实现。 Web服务器只需通过挂载点访问NFS存储。

亚马逊现在让我们知道,他们将在几天的时间内在这台服务器上进行电源维护。 由于我们所有的媒体都在这里,这使得我们的网站在亚马逊的工作时间内无法使用。 我们想尝试和防止这种宕机。

我以为可以通过暂时build立一个新的服务器并将EBS驱动器(raid卷)连接到该服务器,并在维护过程中让我们的Web服务器指向那里来防止服务器停机。

这是一个非常高风险的操作,因为这涉及到数TB的生产数据。

将逻辑RAID驱动器(md0)移到新的amazon实例上的安全方式是什么? 我希望我可以先从构build新服务器,安装ebs卷,并使用mdadm –assemble –scan组装RAID分区,然后从现有实例卸载,以便我可以首先testing一切正常,从而使其安装在同一时间两个实例,但我不相信这是可能的文件系统的工作方式。

如何将Linux软件RAID移动到新机器上? 提出了一种移动驱动器的方法,但并不是真正的基于云的问题。 也许有更简单的方法来防止我们的解决scheme托pipe在云端系统停机? 我已经考虑过采用EBS快照,但是它试图复制所有的千兆兆字节的安装存储,所以这不是一个实际的解决scheme。

有任何想法吗?

您只能将EBS设备附加到单个实例,因此在移动时您将不得不分离它。 我假设你想要避免数据密集型的过程,比如创build一个EBS快照或者将数据同步到一个新的实例。 我还假设你正在使用RAID1。

最安全的select将需要几分钟的停机时间。 你将启动一个新的实例,并安装和configuration必要的软件(例如NFS服务器)。 然后在旧的实例上,卸载文件系统,停止arrays并分离两个EBS设备。 然后将EBS设备连接到新实例,启动arrays并挂载文件系统。 获取Web服务器从新实例挂载NFS。 启动数组应该只是运行您所描述的mdadm命令的一个例子,但是我一定会先testing一下。

第二个选项潜在地具有较低的停机时间(假设您可以在只读模式下运行一段时间),但是更危险。 你会像上面那样开始新的实例。 在旧实例上,以只读模式重新挂载文件系统。 然后,失败其中一个RAID设备,分离此EBS设备并将其附加到新实例。 在新实例上以降级模式启动arrays,装入文件系统,并使networking服务器从新实例装载NFS(该阶段在此阶段应该完全可用)。 然后停止旧实例上的arrays,分离EBS设备并将其附加到新实例,并将其添加到arrays。 这可能会触发完全同步,所以再次testing。

不pipe你做什么,都要确保首先testing这个过程,这样你就知道如何执行它,并确保你有备份,以防万一错误发生。 (另外,请考虑将媒体存储在S3上。)

我只是意识到:不得不手动创build一个新的实例,并手动移动RAID驱动器是不必要的。

由于该实例是基于EBS的,并且制作raid卷的驱动器也是基于EBS的,所以我可以简单地停止ebs映像然后重新启动它。 这将迁移到新的硬件。

这是迄今为止最简单的方法。 由于服务器现在将收到一个新的IP地址,我只需要更新Web服务器上的fstab指向正确的服务器。