本文是MIT Missing Semester 2019 Lecture 9 Backups一讲的翻译和整理,原文见这里。
世界上只有两种人:
- 备份数据的人
- 将要备份数据的人
个人拥有的任何未备份的数据都有可能随时消失且永远无法恢复。本文介绍数据备份的基本原则,同时讨论某些数据备份方式存在的问题。
3-2-1原则
3-2-1原则是一种推荐的备份策略,它的内容是:
- 至少有3份数据副本
- 至少有2份数据副本存在不同的介质中
- 至少有1份数据副本是离场(offsite[1])的
这个原则的主要理念是不要在一棵树上吊死(ot to put all your eggs in one basket)。具体地:
- 3:在不考虑成本的前提下数据副本自然是多多益善,可惜这是不可能的。硬盘并不是免费的;即使对用上PCIE4.0的固态硬盘,大规模数据的对拷也很花时间;更重要地,数据具备结构,为大规模数据编制索引(指给你看的索引)简直是灾难
- 2:拥有两个(及以上)的硬件备份可以保证硬件单点故障不会把重要数据一波带走
- 1:有一些小概率的极端的情况,比如遭遇火灾或入室盗窃,会使得现场(onsite[1])数据/备份数据丢失,这是倘若有离场备份,很大程度上可以减少数据伤亡;现场数据强调即时可用性,离场数据则强调天灾人祸下的容错性
没有真正可靠的系统
在进一步讨论数据备份的细节之前必须强调的是,不存在真正可靠的系统。请不要盲目相信系统(无论是备份软件还是备份服务提供商,或用于备份的硬件系统)所说的,必须亲自测试确保备份确实可以正确地被用于还原。
版本管理
首先,RAID和备份并不等价,镜像同步同样不是备份。仅仅是将你的数据同步到某个地方对下述数据威胁基本没有抵抗力:
- 数据损坏
- 恶意软件
- 误删文件
包括RAID和镜像同步在内的大多数人可能认为的“数据备份”方案存在的问题是,母本(或者说“主本”?)的修改会被同步到副本(或者说“子本”?),如果这些修改来源于数据损坏(SSD掉盘?)或恶意软件(比如勒索病毒)或误删文件(经常发生的事情),而变化被原封不动地传递到副本上,那么原始的正确数据几乎没有被恢复的可能。相当多的云存储方案存在上述问题,或许它们能在短时间内保留已删除的数据(回收站),但相关接口对大量文件并不友好。
真正的合适的数据备份系统应该包含版本控制功能以防御上述故障模式的。通过备份系统提供的不同时间点的快照,用户可以轻松定位数据修改并理论上恢复任何丢失的内容。
备份数据去重
让我们继续版本管理的讨论。数据的不同版本快照可能差距并不大,但如果系统为每一个快照创建一个完整的、真正的数据副本,这对存储介质来说恐怕是非常昂贵的。因此,合适的数据备份系统应该有数据去重的功能,通过跟踪已经存储的内容实现增量备份,快照保存的不是真正的数据,而是版本的修改,从而显著释放存储介质的压力。
加密备份数据
考虑到现在使用云盘备份数据是被广泛采用的策略,那么如果直接上传原始数据,用户将面临将数据暴露在并不受欢迎的第三方眼前的风险(当然在国内这种情况不是风险而是必然发生的事)。为了防止上述情况的发生,部分备份解决方案提供了客户端的解密工具,数据在被上传到服务端前先被加密,密钥由用户持有。
多说一句,大部分用户给自己的电脑设置登录密码,但并不加密自己的硬盘(或硬盘分区),这样任何获取这些用户的电脑的人都可以轻易绕过用户访问控制并读取硬盘上数据。现代硬件支持对加密数据进行快速高效的读写,可以考虑启用全盘加密功能。
“追加模式”(Append only)
目前为止讨论的设备硬件故障或用户误操作导致的数据丢失,这一部分讨论针对数据恶意行为。假设有恶意用户入侵了我们的系统,他们是否能够删除我们的重要备份数据?
为了解决这种问题,通常引入带有“追加模式”的备份系统,它的模式通常是:备份服务器允许用户发送新数据但不允许用户删除,通常用户持有两把密钥,一把是追加模式密钥,用于创建新备份;一把完整权限密钥,用于删除不再需要的旧备份。完整权限密钥离线(offline)保存。
一些其他的考虑
其他备份系统用户可能要考虑的问题包括:
- 定期备份:我想这个不需要多说
- 差异备份:就是增量备份
- 追加模式备份:讨论过了
- 可引导备份:这个还没讨论过,可引导备份指的是将整块磁盘拷贝下来,包括其中的操作系统引导分区,这样做好的数据副本可以直接接上主板作为“系统盘”使用
网络服务和网页
某些数据并不存在硬盘里,它们像是网络服务的副产物。比如Google Docs中的文档,或者某些流媒体的播放列表,又或者是电子邮件。某些软件可以备份这些数据(比如各种邮件客户端),当然用户也可以使用服务提供商开放的API下载这些数据。
类似地,大量数据实际上是网页内容的一部分。要备份(或许应该是保存)这些数据,可以使用Wayback Machine,这是一个由非营利性组织Internet Archive管理的大规模世界各网页的数字存档,该组织致力于保护各种媒体,Wayback Machine允许您捕获和存档网页,以便以后检索该网站已存档的所有快照。当然也可以自己爬取数据,但在使用爬虫前请注意目标网站的许可证。
资源
这里列举了一些用于备份的软件或服务:
- Tarsnap
- Borg Backup
- rsync
- rclone
这些软件本文作者我全都没用过。
练习
- 看看你的备份工作流是否存在问题(或者是否有这个备份工作流),若有(或压根没有工作流),修复它
- 试着备份你的邮箱账户
- 选一个你蝉蛹的网络服务,看看有多少种进行数据备份的方式
- 选一个你经常访问的网站,看看它在archive.org中有多少个版本
- 实现备份去重的一种高效方案是使用硬链接[2],尝试用
ln
创建硬链接,并比较硬链接和软链接的区别
附录
Missing Semester 2020课程中关于数据备份的内容不再单独讨论。
- 1.本文涉及的
onsite
和offsite
限于数据存储和数据备份范畴内。onsite(现场/本地)指将数据备份存储在与原始数据位于同一地点或物理位置的地方,例如本地硬盘、服务器或存储设备。这种备份方式提供了方便的访问和快速恢复的优势。offsite(离场/远程)指将数据备份存储在原始数据所在地点之外的地方,通常是远程位置或者云存储服务提供商的服务器上。离线备份的目的是保护数据免受物理灾害、盗窃或其他灾难的损害。即使本地发生损失,通过离线备份可以确保数据的安全性和可恢复性。 ↩ - 2.符号链接(也称为软链接)是一个指向另一个文件或文件夹的文件,而硬链接是指针的精确副本(它使用相同的inode并指向磁盘上的相同位置)。因此,如果删除了原始文件,符号链接就无法工作,而硬链接则不会受影响。然而,硬链接仅适用于文件。 ↩