图片来自网络

什么是云存储

云存储(cloud storage)是从云计算中衍生而来的一个概念,严格来说是属于云计算的一部分,与云计算一样都十分抽象。

什么是云存储?国内比较通行的定义为:

云存储是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。

是不是更晕了?

维基百科的定义相对通俗,但依然比较专业:

Cloud storage is a model of computer data storage in which the digital data is stored in logical pools. The physical storage spans multiple servers (sometimes in multiple locations), and the physical environment is typically owned and managed by a hosting company.

云存储是一种将数据存储在逻辑资源池中的计算机存储模型,真实的存储设备横跨多台服务器(有时还位于多个不同地点),通常由服务器商提供与管理。

其实,要捋清云存储这个概念,关键是区分它在技术与服务两个方面的体现。

云存储技术躲在后台,包罗着集群、虚拟化、分布式、并行计算、灾备等大量高深的技术,任何一个铺开了讲都可以单列一篇文章乃至单成一部著作,而普通用户根本接触不到,所有了解都是纸上谈兵,这正是云技术令人费解的主要原因。

云存储概念的两个方面

云存储服务则被摆在前台,是与我们息息相关的,看得见摸得着的(好像也摸不着……),主要面向企业用户和个人用户。个人向的云存储主要在SaaS[1]级,表现为云笔记、云音乐、在线Office、网盘等丰富多彩的产品。企业级云存储则IaaS和SaaS皆有,前者表现得很像单纯的本地硬盘,你甚至可以直接把它格式化,后者主要针对中小企业,产品与个人向的云存储类似,不过更注重协同办公的功能。

说到底,与传统的存储方式不同,云存储可以把自己的数据存放在服务器上的一片存储空间中,这些数据就像飘在天空的白云,你只需要一个账号,就可以随时从云端获取。

为什么要用云存储

也许有人会说:我东西一直保存在自己的手机和电脑上,既私密又安心,也不没什么不便,为什么还要用云存储呢?

其实把数据放在云端,和我们平时把钱存在银行的道理是一样一样的。

方面 银行储蓄 云存储
信任前提 钱存到银行主要建立在对银行的信任之上,即相信银行不会倒闭,相信银行即使被抢劫也不会影响到自己的账户余额。 当我们信赖某个云存储平台,即相信它不会轻易下线、不会轻易丢失数据,即使下线也会提前通知用户进行备份,便自然会毫不犹豫将资料上传。
可靠性 很少有人会把大量现金屯在自己手上,除非是害怕查账的贪官。 云存储服务器端的容灾能力远比我们想象得强大,即使某块存储区域被物理损坏也照样可以从其他区域恢复完整数据,这是我们自己的硬盘所做不到的。
便携性 银行储蓄本质上也是云,让你一卡在手走遍神州。 经常需要多地点办公的朋友不再需要到处背着沉重的笔记本电脑,这是云存储最明显的优势。
隐性价值 银行的利率远比不上良莠不齐的小型借贷平台,但我们往往甘愿放弃这部分利息。 付费云存储的空间价格远高于U盘和移动硬盘的售价,但用户仍然愿意付费。
时代潮流 如今再怎么不识字的老奶奶都有自己的银行账户,主动也好被动也罢,她们身处这个时代。 当你以为自己始终呆在本地存储的舒适区,其实已经享受到了云存储的便利,手机数据的自动云备份就是一个例子。

最想说的还是网盘

在所有云存储产品中,最具代表性、对个人而言最有价值、最值得一说的当属网盘。

网盘作为一种类似于「云硬盘」的在线存储产品,什么文件都能存放,往往被大家误认为和云存储是一个意思。经过上述分析我们终于搞清楚,网盘只是云存储的一种应用,是云存储产品家族中的一员。

早在1983年,美国的CompuServe公司就推出了类似网盘的产品,那时每个账号的存储容量是128KB。但网盘真正的蓬勃发展得从2011年算起,这一年的6月6日,乔布斯在苹果举世瞩目的WWDC 2011开发者大会上发布了iCloud产品,它为每个用户提供了5G容量,用于同步、备份个人账号下的多台苹果设备数据。随之而来的,就是在此之前与之后出现的国内外各大网盘产品的百花齐放。

好几个年头过去了,在版权纠纷、运营成本、用户体验等多方面因素的影响下,各家产品已经经过了好几轮的淘汰与新生,如果你还没用过网盘,真该好好地自我检讨了。即使你不是个收藏控,也对冷门资源毫无兴趣,至少也该利用网盘备份一些自己的资料、和朋友共享一些内容。

网盘最强大也是最有意思的特点,就是「秒传机制」——如果云端已经存在某个文件,那么不论网速如何,我们将其上传至网盘的耗时都是秒级的。

▌内容寻址存储机制

这一能力得益于2003年开始逐步兴起的一种文件存储机制——内容寻址存储(CAS: content-addressable storage)。平时我们在自己硬盘里定位一个文件需要知道它的层层路径,而在CAS中,我们可以根据文件的内容定位到它。

确切的说,是文件内容的代号,CAS为每个文件编上唯一的代号。任何两个文件,如果它们的内容不同,其代号也就不同;反之,任何文件的副本如果内容没有改动,其代号与原件必然是相同的。CAS不会存放副本,所有你复制粘贴出来的文件都只是指向原件的链接。

据美国加州大学的伯克利分校和存储领域的EMC公司调查显示,全社会每年产生的信息中超过75%属于固定内容,即产生之后就几乎不再变动。比如最占空间的音视频文件,除了专业的后期制作人员,一般谁会去修改它们呢?这些庞大而笨重的文件却往往被复制得最多。CAS可以有效地避免其副本造成的空间浪费,网盘运营商也得以少买N块硬盘。

那么如何给文件编上全球唯一的代号呢?最简单的做法就是从1开始递增,如果有一亿个文件,就从1编到100000000,好像没毛病,但不能实现这一亿个文件中的去重,副本也有了自己的编号。

只有真正根据内容进行编号才是王道,但如何让代号因内容不同而不同呢?高明的数学家想出了哈希算法(hash function),计算出来的文件代号就称为文件的哈希码(hash code)

哈希算法千千万,举个简单的例子,取余运算:

不论多长的数,经过对7取余,最终结果都是一个小于7的非负整数。在这个算法中,明显存在着不同数据的哈希值相同的情况,比如12和19910315的哈希值都是5。文件的本质就是一串长长的二进制数,这个只能生成7个不同哈希值(0~6)的算法,只能标记7个不同的文件。

CAS所采用的算法明显要复杂得多,以著名的MD5算法(信息摘要算法第五版)为例,任何文件经过MD5运算,均生成一个长度为128位的二进制数,其哈希值就可以有2128(约340万亿亿亿亿)个。如果以MD5码作为文件的唯一代号,那么基本允许全球(按70亿人口算)每人拥有近5万亿亿亿个互不相同的文件。这些都是天文数字,以目前的情况看,世界上的文件再多,也不可能达到这个数目。类似MD5的复杂算法已经可以保证绝大多数文件的哈希值都不会撞车,但为了以防万一,网盘往往偏向于使用混合型的哈希算法。[2]

▌秒传原理

在文件系统允许的情况下,一个文件的大小可以是任意的,可以只有几KB,也可以有好几十GB,但其所对应的哈希值总是只有那么长(如MD5码永远只有128位),在网络上,传输哈希值比传文件本身要便捷得多。

基于CAS的网盘就是利用这一原理,在保存文件的同时保存着它们的哈希值。在用户上传文件时,先计算文件的哈希值,在云端搜索是否存在相同的哈希值,若存在,则说明服务器上已有这个文件,就不需要真正地上传,只需在用户的网盘里提供一个链接,让用户误以为文件已经上传成功(其实上传的仅仅是这个文件的哈希值)。

基于CAS的网盘秒传机制

有了这一功能,我们备份电影、动画、游戏的时候,就无需忍受蜗速的上传。硬盘里放不下,又舍不得丢掉的资源,都可以尽情地留在网盘。而别人分享的文件,则可以瞬间转存到自己盘里,想什么时候下就什么时候下,不怕丢失。

利用同样的原理,部分网盘所提供的离线下载功能在离线热门资源时,可以瞬间将BT磁链和种子中的文件获取到用户的网盘里。

虽然因为版权问题,网盘的能力往往不能充分发挥,但即使仅用作个人的资料仓库,也十分方便。别再怀疑,一起开启属于自己的云端办公时代吧!

参考文献

  • 李逦. 浅析云计算背景下云存储的优势与劣势[J]. 计算机光盘软件与应用, 2013(23):18-19.
  • Wikipedia. Cloud storage[EB/OL].
  • 张继平. 云存储解析[M]. 北京: 人民邮电出版社, 2013.
  • Apple. Apple Introduces iCloud[EB/OL].
  • Wikipedia. Content-addressable storage[EB/OL].

相关阅读

新时期的资源帝战术研讨

道高一尺,魔高一丈——用技术破除网盘分享限制


  1. 关于IaaS和SaaS,将在《云计算》一文中介绍。 ↩

  2. 事实上,广泛使用的MD5和SHA-1算法已经被山东大学的王小云教授破解,根据她提出的方法,可以生成两个内容不同但哈希值相同的文件。网盘如果使用这些被破解的哈希算法,后果不可想象。 ↩

云存储——别说你还没用过网盘相关推荐

  1. ​存储到底是移动硬盘好还是网盘为主好?

    存储到底是移动硬盘好还是网盘为主好? 随着云计算的兴起,网盘逐渐进入人们的视野.之后关于是使用移动硬盘,还是用网盘(包括个人网盘和企业网盘)存储文档更安全的争论也随之而兴起. 正因为运用移动硬盘带来的 ...

  2. 使用腾讯云服务器搭建离线(中转)网盘

    使用腾讯云服务器搭建离线(中转)网盘 本文中,使用Aria2实现离线下载,使用Rclone实现上传.应当说,Aria2+Rclone是一个很好的组合.其中,Aria2是一款非常好用的命令行下载工具.当 ...

  3. 存储到底是移动硬盘好还是网盘为主好?

    随着云计算的兴起,网盘逐渐进入人们的视野.之后关于是使用移动硬盘,还是用网盘(包括个人网盘和企业网盘)存储文档更安全的争论也随之而兴起. 正因为运用移动硬盘带来的一些不便和网盘的一些不确定性,好多人为 ...

  4. 群晖 百度网盘_海康威视联合百度网盘推出NAS私有存储 贡献带宽获积分兑网盘会员...

    此前百度网盘因为限速问题遭到不少用户的吐槽,随后百度网盘推出单次付费加速由于价格过高再次被吐槽. 网盘类的服务也确实需要大量的硬盘空间和服务器带宽支撑,所以对用户来说最好的办法还是自己搭建网盘. 自己 ...

  5. 阿里云两分钟一键极速搭建个人网盘

    目录 准备服务 创建网盘 部署应用 测试应用 应用资源删除 成本计算 计算示例 存储费用 计算费用 流出流量 准备服务 需要用到的产品服务有以下两个: 函数计算 FC 和 硬盘挂在 NAS,服务需要提 ...

  6. NextCloud+阿里云OSS 搭建属于自己的私人网盘

    ​ 原文链接:ECHK1NG's 学习之路 ​ 近些年来各路网盘纷纷退市,只有为数不多的网盘还在死死坚持,例如百度网盘. NextCloud逐渐进入了人们的视野. 这几天搭建网盘的过程,遇到了许多问题 ...

  7. 64位百度云 catia v6_福利缩水:百度网盘决定收回部分储存空间

    近日,百度网盘公众号对外发布公告称,希望通过合理的资源调配,提升闲置空间使用率,让更多有切实需求的用户享受到优质.稳定.安全的个人云存储服务.因此,对百度网盘的存储空间方案做出调整. 具体来看,201 ...

  8. hypermesh安装包百度云_新闻突然!全新百度网盘发布

    6月15日消息,百度网盘Linux版正式发布,版本号为Linux V2.0.1,安装包大小为63.08M,适应于中标麒麟桌面操作系统软件(兆芯版)V7.0. 资料显示,百度网盘是百度推出的一项云存储服 ...

  9. 利用腾讯云轻量服务器搭建专属自己网盘

    前言: 是不是有人和我一样受够了,某个网盘的疯狂限制流量,还有莫名其妙东西就没有了.想到前期自己在腾讯云购买的轻量云服务器.购买链接.[腾讯云]轻量应用服务器Lighthouse限时1.2折起,1核1 ...

  10. linux百度云备份文件夹,Linux环境下载百度网盘文件

    Linux中使用浏览器下载百度网盘的文件,如果文件很大或者下载的是文件夹,则会默认打开网盘客户端,但是Linux下没有官方的网盘客户端,这就导致无法下载.虽然有开源bcloud,但是已经不维护了,笔者 ...

最新文章

  1. Loadrunner连接负载机失败,提示Failed to connect to the load generator.Check the output window for more detail
  2. mysql单机多实例——方法1
  3. C++日志系统log4cxx使用总结
  4. OpenYurt 开源 | 云原生生态周报 Vol. 51
  5. python编程选股_用Python选一个自己的股票池2
  6. ApplicationId 与 PackageName
  7. php基于错误的盲注,盲注基本原理
  8. 15种能力:决定了你的未来能走多远
  9. Linux经典书籍推荐-转
  10. python—模块-sys
  11. 深层和浅层特征融合的坑
  12. MOS管符号特性规则
  13. C/C++找工作这点事
  14. matlab区分连续波与脉冲,【求助】连续波多谱勒和脉冲波多谱勒的区别
  15. 云台山风景区茶园骑共享单车,游玩茶园的每一个角落
  16. 基于javaweb的精美物流管理系统(java+springboot+vue+mysql)
  17. Android Design in Action — 以微信为例
  18. Catalan number卡特兰数
  19. cmd命令窗口mysql查询表数据命令行_cmd常见命令使用 2学时_cmd命令窗口mysql查询表数据命令_cmd格盘命令...
  20. 抛硬币的两种思维方式

热门文章

  1. 观察者模式C和C++语言实现
  2. OpenWrt 在没有80\443端口、不能dns验证的情况下为自己的域名申请免费ssl证书
  3. UE4和C++ 开发-UE4怎么删除C++类
  4. jQuery弹窗插件 AsyncBox
  5. 人工智能大模型技术基础系列之:大模型蒸馏
  6. flutter——socket填坑
  7. datastrcture_二叉树怎么画比较好看
  8. Python tkinter Notebook标签添加关闭按钮元素,及左侧添加存储状态提示图标案例,类似Notepad++页面
  9. Python爬虫之爬取豆瓣电影(二)
  10. C程序源代码是如何在硬件上运行的?