我们在远程位置有一台 Ubuntu 服务器,该服务器可能有或没有互联网访问。它将运行多个应用程序,我们希望确保如果操作系统或应用程序级别出现问题,我们可以自动恢复到以前的工作版本。
我们首先考虑使用 Timeshift,但经过一些测试后感觉它不够强大。
现在,我们正在考虑创建一个额外的分区,我们将在其中存储主分区的副本,使用日命令。如果出现问题,我们将从那里恢复。
对于这种情况,有没有更好的替代方案或已知的最佳实践?
答案1
我的第一个想法是在另一个 ubuntu 虚拟机管理程序上运行 ubuntu 服务器。保持虚拟机的克隆离线,并在需要时启动它。
所有这些都是现成的,甚至编写脚本也非常简单。如果您有办法检查服务是否正常工作,您可以简单地使用 virsh 接口关闭并启动备用 VM。
如果您需要更多的冗余,您可以将这台备用虚拟机放在另一台服务器上(以防出现磁盘故障等)
Virt 管理器比 CLI 界面更友好,并且也可以远程使用! https://virt-manager.org/
CLI 界面也相当简单,启动名为 guest1 的虚拟机
virsh start guest1
免费、简单、可靠。而且没有可怕的 dd 黑客 :)
可能有百万种方法可以实现这一点,但这就是我要追求的。
答案2
考虑到我在服务器上安装或重新安装 Linux 的次数,下次创建服务器时我可能会选择 Ansible 路线。
那是:
首先制作一个包含可通过 Ansible 远程配置的最小服务器的图像。
然后制作一个包含您需要的所有服务(又名“ansible 角色”)和设置的 Ansible 剧本。
从这里开始,您基本上只需要备份任何用户生成的文件,如网站、邮件、数据库等。
并且备份和恢复过程也可以作为 Ansible playbook 来完成。
不言而喻:备份你的 Ansible 剧本!:-)
使用 Ansible 的优势在于,除了使用它来备份和恢复服务器之外,如果需要额外容量,它还可以用于启动额外的服务器。
在 Ansible 中维护一台或多台服务器相对简单,因为您可以将适合库存列表中相同角色的服务器分组在一起。
对组应用的任何更改都将推广到组中的所有服务器。
答案3
评论太长:
一般来说,在以下故障场景(无特定顺序)后,将需要执行备份和还原过程、恢复和/或回滚:
- 升级/更改失败
- 操作员错误
- 硬件故障
- 服务器入侵(恶意行为、恶意软件、病毒等)
当您的(唯一)备份与原始数据存储在同一台服务器上时,它们将无法防范大多数故障情况,并且无法依赖它们。
一种常见的方法是,通过安排完整备份和增量备份来保护唯一数据(例如,请参阅https://en.wikipedia.org/wiki/Backup和https://en.wikipedia.org/wiki/List_of_backup_software) 并具有自动部署和集中配置管理的功能,以便快速重新部署故障的服务器。