云存储——别说你还没用过网盘

2023-11-05 21:59
文章标签 存储 网盘 没用过

本文主要是介绍云存储——别说你还没用过网盘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

30022-26dd8e3c43f98051.jpg
图片来自网络

什么是云存储

云存储(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.

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

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

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

30022-d84a0364511a7e9d.png
云存储概念的两个方面

云存储服务则被摆在前台,是与我们息息相关的,看得见摸得着的(好像也摸不着……),主要面向企业用户和个人用户。个人向的云存储主要在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 = 0

1\%7 = 1

9\%7 = 2

2019\%7 = 3

19910315\%7 = 5

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

30022-25cbe8a8a86b25b3.png
基于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算法已经被山东大学的王小云教授破解,根据她提出的方法,可以生成两个内容不同但哈希值相同的文件。网盘如果使用这些被破解的哈希算法,后果不可想象。 ↩

这篇关于云存储——别说你还没用过网盘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352735

相关文章

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

OpenStack离线Train版安装系列—11.5实例使用-Cinder存储服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

多云架构下大模型训练的存储稳定性探索

一、多云架构与大模型训练的融合 (一)多云架构的优势与挑战 多云架构为大模型训练带来了诸多优势。首先,资源灵活性显著提高,不同的云平台可以提供不同类型的计算资源和存储服务,满足大模型训练在不同阶段的需求。例如,某些云平台可能在 GPU 计算资源上具有优势,而另一些则在存储成本或性能上表现出色,企业可以根据实际情况进行选择和组合。其次,扩展性得以增强,当大模型的规模不断扩大时,单一云平

MySQL技术内幕_innodb存储引擎

MySQL技术内幕_innodb存储引擎 INNODB innodb中如果表没有主键 表是否由 非空唯一键,有则该字段为主键没有,则自动创建一个6字节大小的指针 innodb存储引擎的所有数据都存储在表空间中,表空间由段,区,页(块)组成。 如果启用了 innodb_file_per_table, 则每张表内的数据可以单独放在一个表空间中即使启用了上面参数,共享表空间也会因为 系统事务信息

单精度浮点数按存储格式转为整数的程序

///#include<cstdio>//-----------------union int_char{unsigned char ch[4];float i;};void out_put(union int_char x)//x86是小端对其模式,即最数据的最低位存储在地址的最低位上。{printf("单精度浮点数值为:%f\n",x.i,x.i);printf("存储位置从左到右

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa

C语言-数据结构 克鲁斯卡尔算法(Kruskal)邻接矩阵存储

相比普里姆算法来说,克鲁斯卡尔的想法是从边出发,不管是理解上还是实现上都更简单,实现思路:我们先把找到所有边存到一个边集数组里面,并进行升序排序,然后依次从里面取出每一条边,如果不存在回路,就说明可以取,否则就跳过去看下一条边。其中看是否是回路这个操作利用到了并查集,就是判断新加入的这条边的两个顶点是否在同一个集合中,如果在就说明产生回路,如果没在同一个集合那么说明没有回路可以加入