A. 块储存,对象存储,文件存储的区别和联系
通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。
1. 块存储:DAS SAN
a) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储方式,每台服务器有独立的存储设备,每台主机服务器的存储设备无法互通,需要跨主机存取资料室,必须经过相对复杂的设定,若主机分属不同的操作系统,则更复杂。
应用:单一网络环境下且数据交换量不大,性能要求不高的环境,技术实现较早。
b) SAN(Storage Area Network): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCON及Fibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。
2. 文件存储
通常NAS产品都是文件级存储。
NAS(Network Attached Storage):是一套网络存储设备,通常直接连在网络上并提供资料存取服务,一套NAS储存设备就如同一个提供数据文件服务的系统,特点是性价比高。
它采用NFS或CIFS命令集访问数据,以文件为传输协议,可扩展性好、价格便宜、用户易管理。目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。
3. 对象存储:
总体上讲,对象存储同时兼具SAN高级直接访问磁盘特点及NAS的分布式共享特点。
核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(OSD),构建存储系统,每个对象存储设备具备一定的职能,能够自动管理其上的数据分布。
对象储存结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端)
3.1 对象
一个对象实际就是文件的数据和一组属性信息的组合。
3.2 对象存储设备(OSD)
OSD具有一定的智能,它有自己的CPU、内存、网络和磁盘系统。
OSD提供三个主要功能:包括数据存储和安全访问
(1)数据存储 (2)智能分布 (3)每个对象元数据的管理
3.3 元数据服务器(Metadata Server , MDS)
MDS控制Client与OSD对象的交互,主要提供以下几个功能:
(1) 对象存储访问
允许Client直接访问对象,OSD接收到请求时先验证该能力,再访问。
(2) 文件和目录访问管理
MDS在存储系统上构建一个文件结构,限额控制、包括目录、文件的创建、访问控制等
(3) Client Cache 一致性
为提高性能,在对象存储系统设计时通常支持Client的Cache。因此带来了Cache一致性的问题,当Cache文件发生改变时,将通知Client刷新Cache,以防Cache不一致引发的问题。
对象存储:
一个文件包含了属性(术语叫matadata元数据,例如该文件的大小、修改时间、存储路径等)以及内容(简称数据)。
以往的文件系统,存储过程将文件按文件系统的最小块来打散,再写进硬盘,过程中没有区分元数据(metadata)和数据。而在每个块最后才会告知下一个块的地址,因此只能一个一个读,速度慢。
而对象存储则将元数据独立出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象时,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD。假设反馈文件A存储在B,C,D三台OSD,那么用户就会再次访问三台OSD服务器去读取数据。
这时三台OSD同时对外传输数据,因此传输的速度就加快了。OSD服务器数量越多,这种读写速度的提升就越大。
另一方面,对象存储软件有专门的文件系统,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。
因此对象存储的出现,很好的结合了块存储与文件存储的优点。
为什么还要使用块存储和文件存储:
1.有一类应用是需要存储直接裸盘映射的,比如数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对了裸盘进行格式化,因此不能采用其他已经被格式化为某种文件系统的存储。此类更适合块存储。
2.对象存储的成本比普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了作文件共享的时候,直接用文件存储的形式就好了,性价比高。
B. 不属于对象存储的存储类型
属于对象存储的类型:
对象存储分为标准、低频、归档三种存储类型,分别用于频繁访问的热点数据、低频访问的备份数据和适用于长期保存的归档数据,全面覆盖从热到冷的各种数据存储场景。
1.标准存储
标准存储提供高可靠、高可用、高性能的对象存储服务,具有高吞吐和低延时的服务响应能,能够支持频繁的热点数据访问。
2.低频存储
低频存储类型提供高可靠性,较低存储成本和较低访问时延的对象存储服务,适合长期保存不经常访问的数据。存储单价低于标准类型,低频存储有最短存储时间和最小对象大小,存储时间短于 30 天提前被删除会产生一定费用。单个文件大小低于 64KB,会按照 64KB 计算存储空间,数据获取会产生费用。
3.
归档存储
归档存储类型提供了高可靠性,极低存储成本和长期保存的离线冷数据存储,适合需要长期保存(建议半年以上)的归档数据,在存储周期内极少被访问。在三种存储类型中单价最低,归档存储有有最短存储时间和和最小对象大小,存储时间短于 60 天的文件提前删除会产生一定费用。文件大小低于 64KB,会按照 64KB 计算存储空间,数据获取会产生费用。
C. 对象存储、文件存储和块存储有什么区别
对象存储、文件存储和块存储区别为:存储设备不同、特点不同、缺点不同。
一、存储设备不同
1、对象存储:对象存储的对应存储设备为swift,键值存储。
2、文件存储:文件存储的对应存储设备为FTP、NFS服务器。
3、块存储:块存储的对应存储设备为cinder,硬盘。
二、特点不同
1、对象存储:对象存储的特点是具备块存储的高速以及文件存储的共享等特性。
2、文件存储:文件存储的特点是一个大文件夹,大家都可以获取文件。
3、块存储:块存储的特点是分区、格式化后,可以使用,与平常主机内置硬盘的方式完全无异。
三、缺点不同
1、对象存储:对象存储的缺点是不兼容多种模式并行。
2、文件存储:文件存储的缺点是传输速率低。
3、块存储:块存储的缺点是不能共享数据。
D. 块存储、文件存储、对象存储这三者的本质差别是什么
存储设备不同:对象存储的对应存储设备为swift,键值存储。文件存储的对应存储设备为FTP、NFS服务器。块存储的对应存储设备为cinder,硬盘。
特点不同:对象存储的特点是具备块存储的高速以及文件存储的共享等特性,文件存储的特点是一个大文件夹,大家都可以获取文件。块存储的特点是分区、格式化后,可以使用,与平常主机内置硬盘的方式完全无异。
块存储注意事项
要运行任何新的RAID+功能,阵列控制器都需要一个元数据基础,看起来很像文件系统那样。以重复数据删除为例来说,阵列必须将数据分解成4K到1MB的块,解算出哪些块存储的是同样的数据,然后构建一个指针列表将LUN逻辑块地址映射到所储存的块。
自动分层要求更多的元数据,因为系统必须跟踪数据块的逻辑块地址,而这些数据块分处在不同的存储类型上的不同的RAID集中。除了要解算出哪些是必须升级到更快的存储层的热数据和哪些是必须降级的冷数据外,系统还必须收集访问频率元数据。
E. 对象的存储类有哪些
对象类型和整型、字符串等类型一样,也是PHP中的一种数据类型。都是在程序中用于存储不同类型数据使用的,在程序运行时它的每部分内容都要先加载到内存中再被使用。那么对象类型的数据在内存中是如何分配的呢?先来了解一下内存结构。逻辑上内存大体被分为四段,分别为栈空间段、堆空间段、初始化数据段和代码段,程序中不同类型数据的声明将会被存在不同的内存段里面。每段内存的特点如下。
①.栈空间段
栈的特点是空间小但被CPU访问的速度快,是用户存放程序中临时创建的变量。由于栈的后进先出特点,所以栈特别方便用来保存和恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个临时数据寄存、交换的内存区。用于存储占用空间长度不变并且占用空间小的数据类型的内存段,例如整型1、100、10000等在内存中占用空间是等长的,占用空间都是32位的4个字节。还有double、boolean等都可以存储在栈空间段中。
②.堆空间段
堆是用于存放进程运行中被动态分配的内存段,它大小并不固定,可动态扩张或缩减。用于存储数据长度可变或占用内存比较大的数据。例如,字符串、数组和对象就存储在这段内存中。
③.数据段
数据段用来存放可执行文件中初始化全局变量,换句话说就是存放程序静态分配的变量。
④.代码段
代码段是用来存放可执行文件的操作指令,也就是说它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作。例如程序中的函数就存储在这段内存中。
对象类型的数据就是一种占用空间比较大的数据类型,并且是占用的空间不定长的数据类型,所以对象创建完成以后被存放在对内存中,但对象的引用还是存放在栈里面的。程序在运行时,占内存中的数据是可以直接存取的,而堆内存是不可以直接存取的内存,但可以通过对象的引用名称访问对象中的成员。
F. 目前主要三种数据存储方式
三种存储方式:DAS、SAN、NAS
三种存储类型:块存储、文件存储、对象存储
块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。
本质是一样的,底层都是块存储,只是在对外接口上表现不一致,分别应用于不同的业务场景。
分布式存储的应用场景相对于其存储接口,现在流行分为三种:
对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、又拍、Swift、S3
块存储: 这种接口通常以QEMU Driver或者Kernel Mole的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)
文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。