在我之前的服务器出现故障后,我正在重建一个家庭服务器(我的 Odroid C1 有 1GB RAM,运行 Ubuntu 14.04,但由于 RAM 和其他原因导致它挂起;我的 mdadm-lvm RAID1 存储系统完全出现故障,两个磁盘都出现了大量坏块,可能部分原因是初始系统处于不良状态,而且我在尝试恢复任何数据时经历了糟糕的体验...)。
我现在有一台配备 4GB RAM 和 Ubuntu 18.04 的 UDOO x86,用于处理:
- Web 服务器 (nginx + mysql)
- 邮件服务器(dovecot + postfix)
- Nextcloud 及其不同的应用程序(文件存储/共享、cardDAV、calDAV、IMAP 客户端)
也就是说,它仅供“家庭”使用,除非我突然出名,否则我不会期待大量流量。一切都很顺利,只是我的 eMMC 限制为 32GB,我需要存储空间。我的愿望是:
- 备份
- 数据必须存储在我物理控制的地方
- 从多个本地源(eMMC + 我的服务器的存储,还有备份我的笔记本电脑的能力)到相同的目标进行简单的设置
- 轻松从备份恢复文件(如果我的存储系统完全故障/烧毁/被盗)。
- 贮存
- 2TB 存储空间,用于存储 dovecot 邮件文件夹、nextcloud 存储文件、其他临时存储(例如图片)和一些网站文件
- 如果可能的话:尽量减少备份错误的风险,并尽量减少出现问题时从备份中恢复的需要
- 尽可能降低维护成本并提高灵活性
- 过度考虑我的数据:我没有保存战略数据,也许我会尽可能长期保存图片和文档。如果我需要从最新的月度数据恢复,我会很生气,但只要很容易,我就不会因为不得不重写我的最新文章或丢失我上次旅行的照片而感到沮丧。当然,如果可以轻松避免这种情况,我会非常乐意考虑这个选项。但是备份数据必须是无误的。
通过阅读数十篇博客或论坛帖子,我了解到备份是最重要的。理想情况下,备份应该在另一台机器上进行(以避免与我们要备份的系统关联的级联风险),在另一个物理地址进行(以应对火灾、盗窃等风险),最好在多个位置进行。我会冒险将东西存储在另一个驱动器上,对我来说,使用 restic 和 systemd 调度听起来不错。如果您认为有更好的方法,请举手示意,否则我们可以继续。
为了贮存部分,我必须承认我对我读过的论坛和博客文章的范围感到很困惑,它们涵盖了广泛的范围:
- 有人认为最重要的是备份,而你的系统可能会出现故障。(需要 1 个带有 ext4 的驱动器)
- 其他人鼓励合并多个驱动器但使用非实时快照:JBOD(MergerFS)+ snapRAID(至少需要 2 个驱动器)
- 其余的人似乎都同意最好的文件系统是 ZFS,尽管它使用大量 RAM,是刚性的(相同的磁盘卷)并且扩展成本高昂(需要:镜像 >= 2 个驱动器 RAIDZ >= 3 个驱动器 RAIDZ2 >= 4 个驱动器)
- 是否还值得考虑使用 mdadm + lvm 的 Linux 软件 RAID?我对 RAID1 的体验很糟糕...
鉴于以上所有情况,您的建议是什么?
答案1
KISS 如果没有充分的理由,就没有必要把事情复杂化。
RAID 不是备份系统,它无法防止意外删除/更改。
“快照”的一个问题是它们不具有选择性,并且并不总是能够轻易地从中恢复少量文件。
如果更新率较低,云备份可能没问题。通常写入成本低,读取成本高,因此如果您认为只需要偶尔恢复几个文件,但恢复整个 2TB 的成本会很高(而且很慢),那么这是一个很好的解决方案。
本地磁盘是一个很好的开始,但如果发生火灾或盗窃,您可能会失去一切。您可以做的是准备两个备份磁盘,并定期交换它们,将第二个磁盘放在其他地方(办公室/父母/兄弟姐妹/朋友)。
每月备份到本地磁盘(保存在室外)并频繁备份到云端的混合解决方案可以更快、更便宜地恢复系统,因为您可以从每月备份中恢复大部分内容。
PS:我不确定 eMMC 是否设计用于支持实时 Linux 系统的更新率。