在服务器启动并运行时,是否可以使用 Linux 上的 dd 命令克隆 HDD。服务器正在运行,Apache、MySql、NGINX。我问这个是因为不会停机。
答案1
不,至少在源磁盘/分区正在使用时克隆不可用且不一致。原因是磁盘内容将在dd
运行过程中被更改,并且dd
不会注意到。最终您将得到一个损坏且不一致的文件系统。
有很多更好的方法来备份正在运行的服务器。
答案2
不是零停机时间,但也许可以接近于零停机时间取决于您的设置和你想克隆什么(请向您的问题添加更多细节,以准确描述您想要实现的目标)。
如果您直接从活动分区复制,您将得到不一致的损坏响应,因为在复制过程中,当前读取点之前和之后都可能发生变化:您将获得该点之后的较新信息,但之前的信息则不会。事实上,服务可能会将更新保存在内存中,但这些更新dd
永远不会被看到,因为它们尚未将其写入磁盘。
如果您的系统使用 LVM 来管理文件系统的块设备,并且卷组中有足够的可用空间来创建快照,那么您可以执行以下操作:
- 停止所有服务。
- 为每个相关文件系统创建 LVM 快照。
- 重新启动服务(因此您会有一些停机时间,但只需要停止服务、创建快照(几乎是即时的)并重新启动服务)。
- 使用 dd 或其他方法备份快照而不是原始卷。
- 完成后删除快照。
当然,通过这种方式,您不会获得在此过程中所做的任何更新,并且只有当您已经配置为使用 LVM 时它才会起作用(转换为那样需要相当长的停机时间)。