作者Todd Hoff是High Scalability创始人,为我们解读Google数据保密和数据安全负责人Raymond Blum的演讲。数据安全的一个重要工作就是备份,备份的容量扩展、存储备份的媒介、备份的效率......通过对互联网中庞大数据多样化、复杂的备份,使数据在任何情况下都能简单地还原、恢复。数据安全不仅仅是一个技术问题,它还受到现实的种种限制,做好数据安全,是任何一个企业都要考虑的问题。
以下为译文:
Raymond Blum带领Site ReliabilityEngineers团队负责谷歌的数据保密和数据安全。当然Google从来都不会如实说有多少数据,但从评论上看目前还没到yottabyte级(1YB=280B),不过也有很多exabyte级(1EB=260B)的数据了。仅Gmail就有接近exabyte的数据。
Blum先生在名为“谷歌如何备份互联网”的视频中解释,常见的备份策略对谷歌无效,原因听起来让人吃惊:它们大多是在努力用容量实现扩展。如果备份两倍多的数据,那时间、能源、空间也会消耗两倍,如果不这么做,就不能进行扩展。要让容量比支持容量的能力扩充更快,必须要有效率。从备份1exabyte数据转变到备份2exabyte数据,需要一个不同的计划。演讲的内容的主要关于Google是如何实现容量扩展的。
演讲的一些主要议题:
- 从无数据丢失。甚至影响颇为不好的GMail停电事件也没有丢失数据,这远比备份许多磁带要复杂的多。数据从整个堆栈检索,每一层都需要管理,包括对人的管理。
- 备份无用。还原你想要的部分,这是指还原系统而不是备份系统。备份是你要为还原付出的高昂代价。将工作转移到到备份上并使备份适当的复杂,是为了让还原尽可能的简单。
- 不可以线性扩展。不可能有100倍的数据,你就能得到100倍的人力和机器资源。你只能去寻找使能力倍增的方法。自动化是提高利用率和效率的主要途径。
- 冗余。谷歌的存储设备一直在老化。这当然不用说都知道,就像我们身体的细胞会死一样,Google并没有幻想着事物不会消亡,它只是为事物的消亡做好准备。
- 多样性。如果你担心某个站点的位置不安全,那就把数据放在多个站点。如果你是担心用户错误,那就将用户交互与数据隔离。如果你想要避免软件bug的损害,那就把数据放在不同的软件上。从不同的供应商获取存储设备,以减少供应商的bug影响存储的数据。
- 将人从繁琐的劳动中解放出来。通过GMail保留一封电子邮件有多少备份?这不应该是人关心的事情。通过GMail配置一些参数,系统会具体安排。这是不变的主题,高级别策略设置和系统实现了它。只有规范之外的事情发生才会需要人的参与。
- 证明。如果你不试用它,那它就不会起作用。备份和还原就是不断的测试,以验证它们的工作的过程。
无论组织大小,都有很多要学习的东西。Blum先生的演讲很风趣、信息量大、很值得一看。看起来他真的很喜欢工作中的挑战。
以下是我对这个演讲的注释,从中我们可以了解到许多不为人知的秘密:
- 统计学上,2GB文件中如果丢失了200K数据,似乎没什么大不了,但这个文件或许就不能用了,比如说可执行文件或报税表。
- 数据的可用性比可访问性更重要。如果系统关闭,后果并不特别严重。但如果数据丢失,那就不是小事了。
- 谷歌保证用以下所有可能组合保证数据安全:
- 想象一下移动滑块的情形。让软件像纵向滑块那样,让地址像横向滑块那样。如果你想要包含一切,你需要不同地址的软件层备份。你可以在不同的地址使用虚拟机。
- 制作多个备份不能保证数据不会丢失。
- 多个备份对某些种类的停机是有效的。例如一颗小行星击中一个数据中心,而在一个很远的地方,你有这个数据中心的备份。
- 如果你在存储堆栈中有一个bug,那把它复制到N个地方也没有用,因为bug破坏了所有备份。示例:请参阅GMail停机。
- 相比小行星,代码中的bug、用户错误或已损坏缓冲区的写入,这些故障发生要多得多了。
- 冗余对访问局部性有帮助。当你想要所有的数据引用与正在使用位置的数据尽可能接近时,备份是个不错的选择。
- 谷歌的设备一直在老化。这不用说也知道,我们身体的细胞也同样会死。我们并没有幻想事物不会消亡,我们只是在为消亡做准备。机器也一直在损耗。
- 冗余就是答案。合计一下,这要比单一的高质量机器更加可靠。单一机器可能会被一颗小行星摧毁。想要摧毁放在50个不同地点的机器就难说了。
- MapReduce在30000台机器上运行得很好,当然是在没有bug的前提下。一旦有bug出现,造成的影响也是成倍的。
- 如果你的服务器机房中发生灾难性的破坏,那RAID也帮不了你。
- Google文件系统(GFS),大约一年前,整个Google都在使用这个文件系统,它将RAID的概念又升级了一次。使用编码技术将数据写入不同城市的多个数据中心,只需要N-1个数据片段,即可还原完整的数据。所以即使3个数据中心中一个停机了,也不会影响数据可用性。
- 谷歌的工程师们,BigTable,GFS,Colossus都知道数据持久性和完整性是第一任务。很多系统需要检查并更正在数据可用性和完整性上的错误。
- 如果你担心某个站点的位置安全,那就把数据放在多个站点。
- 如果你担心用户错误,那就把用户交互和数据隔离。
- 如果你想要避免软件bug的破坏,那就把数据放在不同的软件上。从不同的供应商获取设备,以减少供应商的bug影响存储的数据。
- 磁带好是因为它不像磁盘那样。如果可能他们甚至会使用打孔卡。
- 想象一下假如你SATA磁盘的设备驱动程序里有一个bug。磁带就避免了这一问题。因为不同的媒介意味着不同的软件,这就增加多样性。
- 磁带容量遵循摩尔定律,所以他们对磁带作为备份介质都很满意,虽然他们还在寻找替代品,现在很难说这些替代品是什么。
- 磁带加密意味着有着不良企图的家伙们将很难从磁带中得到有用的东西。
|