本文欢迎转载,转载请注明出处和作者。

存储类型

如同前面所讲的服务器一样,存储也有很多不同维度的对比。
例如块存储、ISCSI、SAN,平常可能会听到不懂行的人拿这几个来对比,但是这根本不是一个维度上面的概念,根本无法进行对比。
以下我们从几个维度来对存储类型进行对比。

1-按照存储的连接方式

DAS:

特征:磁盘装在服务器内部,直连服务器的串行(SCSI)接口。(类似笔记本通过USB直接插入移动硬盘)

优点:部署简单,即插即用,价格便宜;

缺点:只能单台设备使用,无法共享。

NAS:

特点:磁盘阵列接入IP交换机,服务器通过IP网络访问存储;(类似Windows笔记本,文件夹右键属性创建共享文件夹,然后其他客户端可以通过\IP\共享文件夹名称访问)

优点:磁盘阵列可以通过IP网络多台服务器共享访问,便宜;

缺点:传输数据速率较慢,对大量读写IO的支持较差。

SAN:

特点:磁盘阵列接入光纤交换机,服务器配置HBA卡接入光纤交换机访问存储。

优点:三者里面性能最优,IO读写性能最好,速度最快;

缺点:价格较高,需要额外购置光纤交换机与HBA卡进行组网。

2-按照封装协议分类

SCSI协议:

对应DAS存储,硬盘通过IDE或SATA接口线连接服务器主板,数据通过SCSI协议进行封装,然后传输。

ISCSI协议(对应IPSAN网络):

对应NAS或是使用IP交换机的块存储,磁盘阵列设备有控制器,控制器上有NAS接口板(相当于以太网卡),通过以太网线与普通IP交换机互联,数据先通过SCSI协议封装,外层再封装IP协议,再经过IP网络传输。

FC协议(对应SAN网络):

对应SAN网络的存储(一般为块存储),磁盘阵列设备有控制器,控制器有光纤接口,通过光纤与光纤交换机互联,服务器需要特别配置HBA卡,连接光纤交换机访问磁盘阵列,数据通过FC协议进行封装。

FCOE协议:

对应SAN网络存储,但IP交换机采用具备FCoE功能的交换机,数据通过FC协议进行封装,外层再封装IP协议,再通过IP网络传输。

3-按照存储网络分类

4-按产品类型分类

1、集中式存储

集中式存储指采用单台/单套专用存储硬件,对数据进行集中存放,然后通过接入FC/IP网络的方式,共享给多台服务器同时访问的存储。此类存储的冗余通常通过该专用硬件里面各部分部件进行冗余配置来解决(如通常配置至少2个控制器,磁盘需要配置热备盘,磁盘组要做Raid,风扇、电源也冗余配置等)。(如IBM DS8000、EMC VMAX系统列 等)

优点是专用硬件,各部分部件冗余,性能强劲,可以通过增加扩展柜与磁盘扩容容量与性能。(Scale Up)

缺点是专用硬件价格昂贵,并且通常品牌绑定,不同品牌之间的设备无法搭配扩容容量使用。设置同品牌的不通系列存储产品,都不会向下兼容。而就算再高端的系列产品,受限于控制器的性能,下面可以带的磁盘总数与扩展柜数,都是有限制的。因此一旦使用容量/性能超过最大值,就要弄一套新的存储,需要业务那边考虑如何将数据拆分到2套独立的存储中去。

集中式存储主要分以下两类:

01、传统块存储:

基本对应SAN、IPSAN、DAS,指裸磁盘映射给服务器的操作系统,由操作系统对裸磁盘进行格式化(即安装文件系统)后才能使用。

优点是读写IO性能高,部分数据库必须采用这种方式的存储。缺点是不适合存储数据的共享,如Linux服务器的磁盘文件系统是EXT4,而Windows的服务器文件系统为NTFS,两者的磁盘数据无法共享。

02、传统文件存储:

基本对应NAS存储,用普通服务器也能作为NAS使用,有专门的文件系统(NFS、CIFS),其他服务器只要IP可达,既可以使用其作为文件存储,访问的时候能看见一级级的文件目录,无需格式化即可以上传或下载文件。

优点是可以共享数据(Linux/Win的服务器都能访问),缺点是只适合存放文件(数据库不能用这种)以及IO性能差。

2、分布式存储

可以理解为服务器+DAS+软件:业界基本采用服务器装大硬盘,然后分布式部署,再通过几台管理服务器安装对象存储软件的方式实现。管理服务器有所有数据的元数据(即所有数据的属性,如大小,日期等),用户访问时先向管理服务器查询数据所在,然后直接访问实际存储数据的分布式对象存储服务器拿数据。

优点是分布式的服务器同时并行对外提供服务,提升了IO性能,理论上可以无限横向扩展。(Scale Out)

缺点是依赖于软件本身,操作、维护都有门槛,需要专门的技术人员去管理与运维。

分布式存储分别有分布式块存储、分布式文件存储、分布式对象存储。

对象存储:

对象存储适合存放一次上传,多次读取,从不修改的数据。(例如现在移动互联网,大家抖音发的视频,微博、朋友圈发的文字、图片、视频,都有此属性)对象一旦上传是不能修改的。

对象存储与传统的存储不太一样,存放的东西叫对象。对象除了需要存储的数据本身,还包括一部分叫元数据的内容(用来描述数据本身属性的数据,例如最后修改时间,对象大小等)。对象存放在一个叫Bucket的存储空间下,没有文件系统、目录等概念,存储空间在对象存储内有唯一的全局ID,存储对象数据是通过KEY:VALUE的键值对的方式进行存储的。用户可以直接通过“存储空间\对象KEY”的方式,通过网络读取与调用对象的VALUE。

与块存储与文件存储相比:

1、文件存储是树状索引式的,访问越深入的目录,消耗的资源越大。对象存储使用key:value进行存储,读取开销很低。

2、块存储不方便进行数据共享,而文件存储可以将文件上传之后,其他用户有访问权限的情况下可以直接通过http/RestAPI等方式调用对象,从而达到数据共享。

3、NOSQL存储

nosql的全称是not-only-sql,以往常用的数据库都是关系型数据库,将业务逻辑通过抽象化的方式,具象成一堆具有关联关系的二维表,但是随着移动互联网的高速发展传统的关系型数据库在应付超大规模超大流量以及高并发的时候力不从心,特别是在SNS之类的应用,很多都是图片、视频等非结构化的数据。

NOSQL具有Key-Value存储、列式存储、对象存储等多种形式,在特定的应用场景能够提供更快的查询能力。
更多精彩内容,可以关注我的微信公众号Waiting的运维日常