使用这些备份保护你的 Home Assistant

在本系列的第七篇文章中,确保你能通过可靠的备份和硬件计划,从家庭自动化故障中快速恢复。
74 位读者喜欢这篇文章。
A rack of servers, blue background

opensource.com

在本系列关于使用 Home Assistant (HA) 进行家庭自动化的前两篇文章中,我介绍了如何设置一些与 Zigbee Bridge 和一些用于自动化的集成以及一些自定义 ESP8266设备。本系列的前四篇文章讨论了 Home Assistant 是什么,你可能需要本地控制的原因,智能家居组件的一些通信协议,以及如何在 libvirt 中使用虚拟机 (VM) 安装 Home Assistant

既然你已经有了一个基本的家庭自动化设置,现在是时候对你的系统做一个基线了。在这第七篇文章中,我将讨论快照、备份和备份策略。让我们直接进入正题。

备份 vs. 副本

我将首先澄清一些含糊不清的概念:某物的副本与备份不同。以下是副本和备份之间差异的简要概述。请记住,这来自 IT 专业的角度。我日复一日地处理客户数据。我已经看到了许多备份可能会出错的方式,因此以下描述对于家庭使用来说可能有点过头。你必须决定你的 Home Assistant 数据到底有多重要。

  • 副本: 副本就是它的字面意思。即当你突出显示计算机上的某些内容并点击 Ctrl+C,然后使用 Ctrl+V 将其粘贴到其他位置时。许多人可能会将此视为备份源,在某种程度上,这是正确的。但是,副本仅仅是某个时间点的表示。如果采取不正确,新创建的文件可能会损坏,从而导致错误的安全性。此外,源可能存在问题——这意味着副本也将存在问题。如果你只有一个文件副本,通常与什么都没有一样。在备份方面,“一即无”的说法绝对正确。如果你没有随时间推移的文件,你就无法很好地了解创建备份的系统是否存在问题。
  • 备份和快照: 在 Home Assistant 中,区分副本和备份有点棘手。首先,Home Assistant 使用术语“快照”来指代我们传统上认为的备份。在这种情况下,备份非常类似于副本,因为你不使用任何类型的备份软件,至少不是传统意义上的。通常,备份软件专门设计用于获取所有隐藏或以其他方式受保护的文件。例如,用于计算机的备份软件(例如 CloneZilla)会创建硬盘驱动器的精确副本(在某些情况下),以确保不会遗漏任何文件。 Home Assistant 知道如何创建快照并为你创建。你只需要担心将文件存储在某个地方。

设置一个好的备份策略

在我开始讨论如何在 Home Assistant 中处理快照之前,我想分享一个来自最近客户的简短故事。还记得我提到简单地拥有单个文件副本并不能让你知道是否发生过问题吗?我的客户在备份方面做得非常正确。团队使用了正确的备份方法,保留了过去一段时间的多个文件,确保每个备份都有两个以上的副本,并且特别注意备份没有存储在被备份的机器上。听起来不错,不是吗?他们做的一切都正确。好吧,几乎。他们忽略的一件事是测试备份。大多数人会推迟或完全无视这一点。我承认我没有经常测试我的备份。我只会在想起的时候进行测试,通常是每隔几个月一次。

在我的客户的案例中,软件升级对备份程序提出了新的要求。这一点被忽略了。备份继续嗡嗡作响,自动化检查也通过了。每次备份运行后都有文件,它们大于一定的数量,并且 magic 文件检查报告的文件类型正确。问题是由于软件更改,文件大小显着缩小。这意味着客户没有备份他们认为的数据。

这个故事有一个快乐的结局,这引出了我的观点:因为客户做的一切都正确,所以我们可以查看备份并确定发生变化的准确时刻。由此,我们将其与几周前的升级日期联系起来。幸运的是,没有紧急情况促使这次调查。我碰巧在进行标准审计时发现了这种差异。

这个故事的寓意是什么?如果没有适当的备份策略,我们将很难追踪到这个问题。此外,如果发生故障,我们将没有恢复点。

一个好的备份策略通常需要每日、每周和每月备份。例如,你可能会决定将所有每日备份保留两周,每周备份四次,每月备份四次。在我看来,在你有了一个稳定的设置后,这对于 Home Assistant 来说有点过头了。你必须选择你需要的精度级别。我会在对系统进行任何更改之前进行备份。这让我有一个已知的良好状态可以恢复。

创建快照

太好了,那么如何在 Home Assistant 中创建快照呢? “快照”菜单位于左侧面板的“Supervisor”选项卡中。

你有两个创建快照的选项:完整快照部分快照。完整快照是不言自明的。你有一些使用部分快照的选项。

你在 Home Assistant 中安装的任何组件都将在此菜单中填充。为你的备份选择一个名称,然后单击“创建”。这将需要一些时间,具体取决于磁盘的速度和备份的大小。如果你的空间足够,我建议在你的机器上至少保留四个备份。

如果你设置了 Samba 共享扩展,你可以使用文件浏览器从 Home Assistant 检索这些文件。

将这些文件保存在安全的地方。你给备份的名称包含在 Home Assistant 内部的元数据中,并且文件名是随机生成的。将它们复制到不同的位置后,我通常会重命名它们,因为当我在不同的机器上测试恢复过程时,新文件名并不重要。

我的家庭实验室策略

我在 Linux 主机上的 KVM 之上运行我的 Home Assistant 实例。我收到了一些关于更详细地介绍这一点的请求,因此请随意跳过本节,因为它与 HA 没有直接关系。

由于我的工作性质,我拥有相当多的硬件,我将这些硬件用于家庭实验室。有时这是因为对于某些集群软件,物理主机比虚拟机更容易使用。其他时候,这是因为我将工作负载隔离到特定硬件。无论哪种方式,这意味着我已经积累了关于管理和处理 KVM 的一定量的知识。更不用说我几乎完全运行开源软件(有一些例外)。这是我的家庭实验室的基本布局

网络附加存储 (NAS) 具有双 10GB 网卡,可馈入上行链路端口。两个 KVM 主机具有 10GB 网络接口卡 (NIC),而右侧的主机具有常规 1GB 网卡。

对于 Home Assistant 来说,这已经远远超出了杀伤范围。但是,此基础设施并非专为 HA 设计。 HA 在我父母家的 Raspberry Pi 4(4GB 版本)上运行良好。

托管 Home Assistant 的虚拟机具有 Broadwell Core I5 CPU(大约 2015 年)的三个 vCPU 内核和 8GB 的 RAM。 CPU 往往保持在 25% 左右的使用率,我很少使用超过 2.2GB 的 RAM。这是在有 11 个附加组件的情况下,包括 InfluxDB 和 Grafana,它们是更重的应用程序。

虽然我确实有共享存储,但我不会将其用于实时迁移或类似用途。相反,我将其用作 VM 中特定挂载点的后端存储。例如,我将 Nextcloud 中的 data 目录存储在 NAS 上,从而将数据与服务分离。

无论如何,对于此设置,我有几种备份方法。自然,我使用 Home Assistant 快照功能来提供第一层保护。我倾向于仅在 VM 上存储四个星期的数据。我如何处理文件本身?这是一个图表,说明了我如何努力保持备份安全

使用 Samba 附加组件,我将快照的副本提取到我的 GNOME 桌面。我使用 GNOME 的“在线帐户”设置配置 Nextcloud。

Nextcloud 获取副本并将其放在我的 NAS 上。我的桌面和 NAS 都使用 SpiderOak One 备份客户端来确保备份链接到多个主机。万一我从我的 SpiderOak 帐户中删除一个设备,该文件仍然链接到另一个设备。我选择 SpiderOak 是因为它支持 Linux 客户端,并且它以隐私为中心,并且不了解它存储的文件。文件在上传之前会被加密,并且只有所有者才能解密它们。缺点是,如果你丢失或忘记了密码,你就会丢失备份。

最后,我在外部硬盘驱动器上保留一个冷拷贝。我有一个 14TB 的外部驱动器,除了在运行备份时,它仍然处于关闭状态并与 NAS 断开连接。它不在图表中,但我偶尔也会复制到我岳父母家的电脑上。

我也可以在关键操作期间拍摄 VM 的快照(例如 Home Assistant 最近从使用编号的点版本升级到基于月份的编号系统)。

我使用类似的流水线来备份大多数东西,但我承认这有点过头了。此外,整个过程的缺陷在于它依赖于我。除了 SpiderOak 和 Nextcloud 之外,我还没有自动化此过程。我有我运行的脚本,但我不以 cron 或任何类似的方式运行它们。事后看来,也许我应该在这方面努力。

这种设置可能被认为是极端的,但是 Nextcloud 和 SpiderOak 中的内置版本控制,以及在多个位置制作副本,意味着我不太可能遭受无法从中恢复的故障。至少,我应该能够挖掘出一个接近的参考。

作为最后的预防措施,我确保将关于如何设置我的私人 Wiki 的重要信息保存在 Wiki.js 上。 我专门设置了一个关于家庭自动化的版块。

当您开始创建 Node-RED 自动化程序时(在下一篇文章中),我建议您自己做笔记。我会截取流程的屏幕截图,写一个简短的描述,这样我就知道我试图实现什么,并将流程转储为 JSON 格式(为了简洁起见,我从这张屏幕截图中省略了 JSON)

总结

当您使用 Home Assistant 时,备份至关重要,因为它始终需要正常运行,是您基础设施的关键组件。 短时间的停机是可以接受的,但快速从故障中恢复的能力至关重要。 诚然,我发现 Home Assistant 非常稳定。 它从未自行发生故障;我遇到的任何问题都与 HA 外部因素有关。 尽管如此,如果您打算将 HA 作为您房屋的中心部分,我强烈建议您制定一个良好的备份策略。

在下一篇文章中,我将介绍如何使用 Node-RED 设置一些简单的自动化。 与往常一样,如果您有任何问题、想法或想要涵盖的主题建议,请在下面发表评论。

User profile image.
Steve 是一位敬业的 IT 专业人士和 Linux 倡导者。 在加入 Red Hat 之前,他曾在金融、汽车和电影行业工作多年。 Steve 目前在 Red Hat 担任解决方案和技术实践部门的架构师。 他拥有从 RHCA(DevOps 领域)到 Ansible,再到容器化应用程序等各种认证。

评论已关闭。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.