暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

建议收藏!|关于【数据存储】的干货贴

领创集团Advance Group 2021-11-18
385
我们生活在数字化的信息时代,“存储”作为保存数字信息的手段,是信息技术的根基。我们也生活在一个幸运的时代,存储技术已经得到了极大的发展,再加上各个云服务商对存储技术做了各种高可用、高性能的封装,所以我们可以随心所欲的使用安全可靠的存储服务,并不需要担心硬件损坏等繁琐的问题。实际上,存储相关的技术实在太重要了,除了云服务商提供的存储产品之外,我们每天其实也在与个人电脑的硬盘、移动硬盘、U盘等各种存储打交道。我们今天就来谈一谈存储相关的话题,一方面可以更深刻的理解云服务商的存储是如何工作的,另一方面大家也可以在面临存储需求的时候做出更好的选择,如果本文能在数据可靠性和安全方面能为大家提供的帮助,那就更好了。
本文主要从宏观方面做一些讲解,一些细节的概念,大家可以按需搜索获得进一步的理解。from 领创集团首席技术官王晓光


存储器

现代常见的存储技术主要由磁、电、光这三种技术来实现,当然了,从物理学的角度讲,其实他们也是同源的,毕竟“光也是一种电磁波”,一句话概括了三种技术。


👇🏻👇🏻👇🏻👇🏻👇🏻


磁存储

磁存储的代表设备包括:软盘、硬(磁)盘和磁带。

软盘已经被历史淘汰,现代人几乎看不到了,如果有同学仔细观察过日常软件里常用的“保存💾” 按钮,就会发现其实这就是一个软盘的样子。因为整个盘片是软软的一层类似塑料的材料,所以叫做软盘。

磁带在现代社会也不常见了,早些年磁带可以用来听歌或者看电影,现代社会里面磁带的主要用途是给企业的数据中心做备份。磁带存储的特点是:存储容量巨大、只能顺序读写不能随机读写、容易存储搬运、不怕震动。所以应用在备份场景是非常合适的。

硬(磁)盘也就是我们现在常说的硬盘或者磁盘,是相对软盘而言的,硬盘的盘片是一块磁性金属构成,因此在存储密度、稳定性方面都远好于软盘。硬盘技术经过几代发展,现在也发展出很多细分技术,特别值得注意是的 PMR/CMR 和 SMR 技术的差异。SMR 硬盘也叫“叠瓦盘”,读写性能不稳定,通常只用在备份或者性能要求不高的场景,日常使用中强烈建议避开 SMR 硬盘。具体的差异大家可以自行搜索研究。


光存储

光存储的代表设备主要就是光盘,现代社会用的也不多了。光盘的主要原理是靠激光在材料表面雕刻出不同的凹槽,以此来存储数据。这种存储方式主要依赖于材料自身的稳定性,并不会像磁盘那样消磁或者固态盘那样漏电,所以光盘的存储寿命远高于其他的存储技术。而且光盘的材料可以是一次性只读的,可以确保写入的数据不被误操作篡改,在一些数据备份场景光盘依然有很大的用武之地。


电存储

电存储的代表设备主要包括我们生活中随处可见的各种固态盘、U盘、手机内存储等。通常这种存储方式的芯片被叫做“闪存芯片”,闪存芯片的最大特点是不需要机械结构、体积小巧、可以做到高速读写、省电,因此已经成为现代生活中的主流存储方式。闪存芯片的弊端也显而易见:寿命短,因此所有的闪存芯片都会有一个重要参数:写入次数。

闪存芯片的水比硬盘还深。主要原因是,闪存在生产过程中,会因为制造工艺等原因,导致生产出的芯片质量参差不齐。芯片“原片”是指原厂质检通过的芯片,“白片”是指质检不通过有瑕疵的芯片(如读写速度不稳定等),“黑片”是指比“白片”质量还差的芯片(通常会有严重性能问题甚至部分空间有损坏)。有些无良商家就会用劣质芯片包装成“高性价比”的固态盘或者U盘,这些劣质产品一旦出现问题,数据基本就全毁了。正所谓“廉价一时爽,数据火葬场”。由于闪存芯片的水太深了,这里就不展开讲了,有兴趣的同学可以自己搜索相关知识,建议大家买正规大厂的产品,同时一定要做好数据备份。


数据安全


说一千道一万,数据安全最重要。系统崩了可以重启或者重装,数据丢了那就是真丢了。指望硬盘坏了之后修硬盘是万万不可行的,因为大多数损坏是不可修复的。所以,我们在存储数据的时候,第一时间就应该考虑到“如果硬盘坏了,我的数据还安全吗”这个问题。
对于大公司而言,备份问题尤为重要。假设硬盘的寿命是 2000 天左右(约 6 年),如果一个公司有 2000 块硬盘,那么从概率上讲,基本上就是每天都会坏一块盘。所以很多大公司也会有自动的硬盘质量控制和更换机制。

👇🏻👇🏻👇🏻👇🏻👇🏻

备份

最常用也是最通用的保证数据安全的手段就是把重要数据从一个地方拷贝到另一个地方,也就是所谓的备份,比如苹果的 TimeMachine,群晖 NAS 的 HyperBackup,以及基于 rsync 的一些工具脚本等等。备份的优点是有明确的备份时间点、可以按需恢复数据、简单易用、通用性强,适合资料文件类的备份。备份的缺点也显而易见,不够实时,而且遇到数据库等场景,通用方案的备份就不可用了。

这里稍微解释一下为什么 rsync 不能直接用于数据库备份:因为数据库的文件是频繁读写的而且是有严格的内部格式的。如果在备份过程中数据库文件发生了变化,极有可能会得到一个被损坏的文件,从而导致这个备份无法用于恢复数据库。因此,数据库备份要么借助数据库自身手段(dump 或者 replication),要么借助快照或同步等手段。

云盘

云盘是个人用户最便捷的一种数据备份(以及同步方式),比如苹果的 iCloud,Google 的 Drive,微软的 OneDrive,以及可以私人搭建的 Nextcloud 云盘等等。云盘的最大优势就是把文件备份和同步做到了用户的系统中,用户可以无缝的直接访问云上的文件,并且享受到足够的数据安全服务。


快照

前面说到,通用备份方案是不能用于数据库等对文件系统有一致性要求的场景的。那么有没有办法快捷的实现这类场景的数据副本呢?答案就是“快照 snapshot”。有些文件系统(如 btrfs 和 zfs)以及所有的云服务商,都提供了快照功能。在做快照的时候,当前存储中的内容被一瞬间全都固化下来,因此不管系统里跑的是什么应用程序,都不会有数据不一致问题。后续在使用快照恢复数据的时候,是精确的恢复到快照时间点的完整的文件系统。而且快照本身非常高效,不会影响正常程序的执行,文件系统的快照还会借助 Copy-on-Write 机制,尽可能的节约存储空间。


同步

前面介绍的机制,在恢复数据的时候,通常需要一定的时间,而且有些机制(比如文件系统快照)还被局限在当前计算机上。在真实的世界里,我们会面临实时高可用的需求。例如,对于一个跑在 A 服务器上的数据库,如果服务器 A 发生故障,我们希望数据库可以最短时间在服务器 B 上启动起来。这又该怎么做的?答案就是实时同步。

我们只需要在服务器 B 上实时的同步 A 的所有数据,这样在 A 停止之后,B 上的数据依然是最新而且完整的,数据库就可以在服务器 B 上顺利启动并继续提供服务。数据库的实时同步可以借助 replication 实现,也可以借助存储的实时同步实现(如 drbd 和云盘等)。

目前所有的云服务商的云盘,都是有高可用保障的实时同步的存储服务,云用户可以很方便的在任何一个云服务器上挂载使用云盘。


RAID

硬盘 RAID 是历史悠久的在同一台计算机上做硬盘数据实时同步和高可用的方案。除了 RAID1/RAID10 之外,其他的 RAID 组合基本是没有实用价值的。对 RAID 感兴趣的同学也可以搜索一下相关知识。

过去为了实现硬盘 RAID,通常需要借助硬件的 RAID 卡。随着时代的发展,软件技术越来越好,像 brfs 和 zfs 等可以非常好的替代硬件 RAID 卡,用户只要把一堆硬盘接到计算机里,即可用 btrfs 和 zfs 享受到比硬件 RAID 卡更高级的 RAID 服务。


加密

数据安全一方面是要保持数据不损坏,另一方面是要保证数据不被盗。在云上可以借助云服务商的加密服务,可以把云盘设置为“加密”。

如果想自己搭建加密的存储,通常有两个方案:

存储级别的加密:也就是把整个硬盘(块设备)做加密,在加密的块设备上可以再格式化成各种其他的文件系统。

文件系统级别的加密:加密操作只作用在文件系统层面,在已经存在的底层文件系统上虚拟出一个新的加密的文件系统。在底层的文件系统中看到的文件名也是被加密过的乱码。


演练

古人云:光说不练假把式,光练不说傻把式,又练又说真把式。备份也是这样。只说“我备份了”没有用,只有从备份把数据恢复出来,那才是真正的做到的数据安全。历史上很多公司都发生过“虽然我备份了,但是备份坏了,数据丢了还是无法修复”的事故。


存储服务

👇🏻👇🏻👇🏻👇🏻👇🏻

块存储

所谓块存储,是指云厂商把硬盘“块设备”作为存储服务提供给普通用户,也就是云盘。用户可以申请几十 GB 到 PB 级别的云上硬盘,挂载到自己的云服务器中使用。云厂商会对云盘的性能和高可用性做保障,用户可以根据需要对云盘做快照等操作。

对象

存储

所谓对象存储,是指云厂商提供的针对用户文件的存储服务,用户可以通过接口和路径访问自己的文件。对象存储通常会有很多限制,比如一致性的约束、比如更新和写入限制等等。

分布式

文件系统

(POSIX)

分布式文件系统和对象存储有很大相似性,都是通过分布式集群为用户提供文件服务。本文会用一个更严格的区分:支持 POSIX 兼容标准的文件服务被看作分布式文件系统,不支持 POSIX 兼容标准的文件服务被看作对象存储。因此 HDFS 更接近对象存储。


NAS

NAS 是指网络附加存储,服务提供方以网络协议(nfs/samba/cifs)的方式把自己本地的文件系统暴露在网络上,其他服务器可以通过这些协议把网络文件系统挂在在本地,就像访问本地文件系统一样访问远程文件。


常见自建存储方案举例

👇🏻👇🏻👇🏻👇🏻👇🏻


  • 硬盘方案
    • 使用 RAID1 或 RAID10
    • 不用 RAID 直接把硬盘暴露给 zfs
  • 文件系统方案
    • 传统存储可以用 ext4 或者 xfs 等文件系统,功能简单,没有 RAID
    • 现代存储可以用 zfs 文件系统,有高级 RAID 功能,支持快照、压缩和加密等,代价是需要消耗一些内存
    • 强烈推荐在合适的场景中使用 zfs 文件系统
  • 块设备同步:DRBD 或者借助分布式块设备
  • 加密
    • 存储级别的加密:借助 zfs 或者 dm-crypt 等加密方案,Windows 上有 BitLocker 方案
    • 文件系统级别的加密:借助 Cryptomator/gocryptfs/eCryptfs/securefs 等加密方案
  • 云盘:Nextcloud
  • 分布式块设备和文件系统:GlusterFS/Ceph (需要较强的运维能力)
  • 对象存储:HDFS/MinIO
  • 分布式文件系统(POSIX):JuiceFS/MooseFS/SeaweedFS


点击下方““阅读原文”进入领创集团官网获取更多资讯



文章转载自领创集团Advance Group,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论