热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ceph存储原理_【理论研究】漫谈传统IT基础设施10存储(04)

01-按照存储类型分类01、独享式存储指由单台存储设备提供服务,且相同的一块存储区域同一时间只能被单台设备访问(读写)。如DASÿ

01-按照存储类型分类

01、独享式存储

63869b7b2c5d8987c05857e442144383.png

指由单台存储设备提供服务,且相同的一块存储区域同一时间只能被单台设备访问(读写)。

如DAS,块存储,SAN网络下的存储,具体产品包括磁盘阵列,硬盘。

此种存储,存储区域通常以裸盘映射的方式映射给服务器,由服务器的操作系统中的文件系统对裸盘进行格式化,然后再挂载使用。但是挂载完成后,该区域仅能给挂载的服务器A访问,B服务器无法访问这一块空间。

**优点:**访问速率高(DAS基于内部总线,SAN架构有8/16/32Gbps的端口,传输速率比普通GE速率高,所以速度快)。

**缺点:**此种方式不利于数据的共享,同一块区域不能供多台设备访问。另外由服务器的文件系统访问后端存储,服务器需要消耗CPU资源来管理数据到底存放在存储的哪个地址段与寻址,有性能损耗。

02、共享式存储-非集群式存储

bf0e6ba634cb595497ba9dba1fe93a98.png

指由单台存储设备提供服务,且相同的一块存储区域同一时间能被多台设备访问(读写)。

如NFS/CIFS/NAS/文件存储/特殊条件下的SAN与块存储/分布式文件系统(单机)。具体产品如普通X86服务器安装NFS或SAMBA(CIFS)软件,NAS磁盘阵列,SAN网络下的块存储再通过服务器部署集群软件访问等。

**优点:**此种存储,通常通过IPSAN组网,并且存储先通过网络文件系统将裸盘格式化,再对外提供服务。访问设备无需管数据存在哪个地方,寻址的工作由文件服务器或NAS阵列的文件系统处理,因此服务器可以释放CPU寻址的性能占用。此外,此方式便于数据共享,而且成本较低。

**缺点:**但是读写性能没有块存储好。

03、共享式存储-集群式存储-单节点/多节点式存储-集中/分布式存储

指由多台存储设备提供服务,且相同的一块存储区域同一时间能被多台设备访问(读写)。

03-01、集群式存储分单节点/多节点式区别:单节点式通常指仅部署有一个本地节点,而多节点式指设备分别部署在多个节点的机房/机楼/城市。

每种模式下都分别有集中式与分布式两种,其中,集中式指存储采用单台集中式设备(如磁盘阵列),分布式指存储采用多台设备采用分布式软件部署(如多台X86服务器)。

多节点式比单节点容灾功能更强,而且可以结合智能DNS等进行用户调度,根据用户的位置调度访问最近/链路质量最优的节点,优化用户访问速度。

分布式由于存在多台设备,多台设备时可以同时提供访问服务的,所以相当于可以无限量地提升了IO,设备越多,并发IO支持能力越大。

03-02、分布式存储与对象存储

0bf029389f3819bab398d955ae6d31c9.png

分布式存储分为分布式块存储、分布式文件存储、分布式对象存储。对象存储一定是分布式存储,分布式存储不一定只能是对象存储。

分布式存储(块/文件存储)原理与部署模式基本上就是上一页的对称式/非对称式的Name Node+Data Node的部署模式。其中:

Name Node负责:a、提供存储数据的逻辑视图、文件名列表及目录结果(VFS);b、提供组织物理存储介质的数据分布(inode);C、保持数据一致性。

Data Node负责:只管数据的实际存放,什么管理功能都不管。

而对象存储:分为OSD(相当于Data Node)与MDS(相当于Name Node)。但是:

MDS只负责: a、提供存储数据的逻辑试图、文件名列表及目录结果;b、数据一致性。

OSD负责:a、数据的实际存放;b、数据的分布。

由于一般分布式存储的Name Node中,CPU中10%的负载在于逻辑视图部分(VFS),90%的负载在与计算数据的分布部分(inode)。而由于一般Name Node肯定是少于Data Node的,因此对象存储将数据分布方式的计算部分下沉到了OSD(Data Node),降低了Name Node的负载,因此性能更好。

存储类型类型分类总览图

f6c119373a883c8dbf5aa7353bc23007.png

02-按照存储用途分类

01、块存储典型设备:磁盘阵列,硬盘

ee817acb83897eb1d8b36db4d5084155.png

块存储相当于裸硬盘映射给文件系统/操作系统,需要进行分区与格式化之后才能给操作系统识别使用。

块存储可以通过RAID与LVM等方式将物理磁盘构成逻辑磁盘后再映射给操作系统使用。

优点:

1、通过RAID与LVM等手段,对数据提供了保护。

2、可以将多块硬盘组织起来,成为更大容量的硬盘。

3、逻辑盘由多块硬盘组成,读写时多个磁头并行读写,效率高,速度快。

4、多采用SAN组网,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。

缺点:

1、采用SAN架构组网时,需要额外为主机购买光纤通道卡,还要买光纤交换机,造价成本高。

2、服务器不做集群的情况下,块存储裸盘映射给主机,再格式化使用后,主机间无法共享磁盘。

3、不利于文件共享(不同文件系统间的数据是共享不了的。例如Linux下的EXT4文件系统,无法识别NTFS格式U盘,不同文件系统下的数据无法共享。)

02、文件存储典型设备:FTP、NFS、CIFS服务器

f53e47f4f7b44d480b53cefac4e6e1e9.png

为了克服上述文件无法共享的问题,所以有了文件存储。

有软硬一体化的设备,普通服务装上网络文件系统,也可以充当文件存储。

主机A可以直接对文件存储进行文件的上传下载,与块存储不同,主机A是不需要再对文件存储进行格式化的,因为文件管理功能有文件存储的系统负责。。

优点:

1、造价交低:普通的服务器即,另外只需要普通以太网即满足网络要求,不需要专用的SAN网络,成本低。

2、方便文件共享:例如主机A(WIN7,NTFS文件系统),主机B(Linux,EXT4文件系统),原来无法对一个文件进行共享。当中间添加了主机C(NFS服务器),可以先从A拷到C,再C拷传输到B,即解决了文件共享的问题。

缺点:

读写速率低,传输速率慢:以太网,上传下载速度较慢,另外所有读写都要1台服务器里面的硬盘来承担,相比起磁盘阵列动不动就几十上百块硬盘同时读写,速率慢很多。

03、分布式存储典型设备:Ceph、Swift

03-01、分布式块存储:

2d0588c6bd2e5df223f8987f2aa95878.png

典型产品: GlusterFS, Ceph等

通过分布式的X86服务器,安装上述的软件,实现分布式块存储部署,客户端通过Rest接口,可以挂在分布式块存储划出来的卷,然后进行数据访问。

部分厂商偷换概念,将磁盘阵列说成几个不同控制器分别控制几块不同的硬盘框,然后将其称作分布式块存储产品。

03-02、分布式文件存储:

d686c4216e252b79f0f1d6e6a1b35b57.png

典型产品:NFS、GFS、HDFS、Ceph等

通过分布式的X86服务器,安装上述的软件,实现分布式文件存储部署。访问的用户不需要对区域进行挂载,即可实现目录级别的访问。

03-03、分布式对象存储:

8f3322c18d9bfa0a5431618a9277e0fd.png

典型产品:Ceph、swift

通过分布式的X86服务器,安装上述的软件,实现分布式对象存储部署,客户端通过Rest接口,可以访问MDS。

一个文件包含了了属性(术语叫metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(以下简称数据)。

传统存储数据与元数据都同时放在文件块中,数据寻址效率低,寻道时间长,查找时间慢。

对象存储解决方案通过元数据服务器MSD存储元数据,用户访问对象时MDS负责查找对象元数据信息(信息量小),得出数据存储在OSD(存储数据的节点)上面的地址,用户再并发访问多个OSD读取数据。查找速度快,并行读写。

此外,如前说所,OSD负责了数据如何分布的计算,这是很多文献都会称OSD是智能化设备的原因。

另外对象存储提供基于对象的访问接口供应用系统访问非结构化数据,与文件系统无关,因此也解决了数据共享的问题。支持一次写多次读取。

04、表存储典型设备:Hbase、MongoDB

5266829fe2faf5f2cd5291c58099b049.png

传统数据库强调ACID原子性,对于数据一致性要求高,但现阶段WEB应用很多场景对读、写得一致性要求并不高,因此传统数据库限制了数据库向分布式的扩展。

因此出现了表存储这种类型的设备。表存储用于处理半结构化数据,每次更新或查找少量。

表存储以键值对的形式进行存储,而数据没有固定的字段与长度,每个元组有唯一的键值,查找的时候通过键值的索引进行查找。

04-01、交易型(NoSQL存储):

典型产品:Redis、MongoDBT,CssandraDomain

每次更新或查找少量记录,并发量大,响应时间短。

KV(键值对)存储,通常不支持SQL、只有主索引、半结构化,适合微博、博客、社交网络等。

04-02、分析型(日志箱单存储):

典型产品:Hbase、BIG Table,EMC Greenplum更新少,批量导入,每次针对大量数据进行处理,并发量小。

兼容SQL、索引通常只对单表有效、多表Join需扫描,支持MapReduce并行计算。

大规模日志存储处理、信令系统处理、经分系统ETL等

03-存储的数据类型

01、结构化数据

可以通过构建二维表表示的数据(块存储合适存储这种内容)

02、非结构化数据

像图片、声音、视频等等。这类信息通常无法直接知道他的内容,数据库也只能将它保存在一个BLOB字段中,对以后检索非常麻烦。

一般的做法是,建立一个包含三个字段的表(编号 number、内容描述 varchar(1024)、内容 blob)。引用通过编号,检索通过内容描述。(文件存储/对象存储合适存储这种内容)

03、半结构化数据

这样的数据和上面两种类别都不一样,它是结构化的数据,但是结构变化很大。因需要了解数据的细节所以不能将数据简单的组织成一个文件按照非结构化数据处理,由于结构变化很大也不能够简单的建立一个表和他对应。

例如:比如存储员工的简历。不像员工基本信息那样一致每个员工的简历大不相同。有的员工的简历很简单,比如只包括教育情况;有的员工的简历却很复杂,比如包括工作情况、婚姻情况、出入境情况、户口迁移情况、党籍情况、技术技能等等(No SQL存储适合存放这种内容)

按存储用途分类总览图

d270e543f933db2dfd417bfe2a59b727.png

为什么部分数据库适合用块存储

以下以Oracle数据库为例:

数据库的物理组成

控制文件、日志文件、控制文件

数据库的逻辑组成

表空间、段、区、块。其中数据库块并非前面的文件系统块。数据库安装在操作系统之上,有自己的一套编制的方式,类似有自己的文件系统。因此数据库会将多个操作系统块组成为一个数据库块,数据库块为数据库的最小单位。

为何不能存放在文件存储/对象存储:

文件存储/对象存储优点是数据共享,服务器共享访问数据,文件的访问控制管理很复杂,且数据一致性难以保障。

数据库块是由数据库自己的文件系统维护的,数据库实例都要通过数据库的文件系统才能读写数据文件里面的数据,因此外面这一层文件存储的文件系统是多余的,对于数据库实例来说根本用不上。

因此,数据库更合适使用块存储,裸盘映射后由数据库对区域进行格式化,并且单一区域仅能供单机访问,需要启用数据库集群软件后,才能共享访问,而数据库集群软件中有相应的锁机制以确保数据的一致性。

更多相关知识:



推荐阅读
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • step1.为mongodb添加admin管理员root@12.154.29.163:~#mongoMongoDBshellversionv3.4.2connectingto:mo ... [详细]
  • linuxmint20.3 安装anaconda、换源及创建新环境
    本文用来记录linuxmint20.3安装anaconda、换源及创建新环境的过程,同时记录一些相关命令目录anaconda安装相关命令创建新环境显示问题 ... [详细]
author-avatar
风之云织2004
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有