手码万字-带你全面了解存储基础知识

前言

很多刚接触存储的朋友一定会被各种概念搞混,许多概念光从官方解释的文字很难去理解,本文我会以多年接触存储的经验,以个人尽量通俗的语言并结合实际的案例或环境把存储可能涉及的基础知识梳理一遍,全文手打,真正想深入了解的朋友推荐存储界公认的圣经《大话存储》

什么是存储

存储的定义比较宽泛,撇开官方的定义,能够用来存储信息和数据的介质都可称之为存储,所谓数据,除了平常意义上的文件,视频,数据库,逻辑上你的所见,所闻,所想都可称之为数据,扯远了讲,人本身的大脑就是所谓的神经元存储,当然,我们现在讨论的就是能看得到摸得着的硬件存储
在这里插入图片描述

存储的价值

存储的价值取决于数据,数据有多重要,存储就有多重要,我们一直说数据是无价的,有IT界的朋友开玩笑说为什么做网络的远比做存储的多,因为一个企业如果网络全挂了,那损失只是时间可见的网络重建的损失,如果数据全丢了,在没有备份的情况下那可能一个企业可能就真的没了,这就是为什么很多工程师在规划调试存储都会发憷。当然玩笑归玩笑,在高度信息化的当下,企业的所有核心非核心数据都存放于存储中,重要性一定是不言而喻的

存储基础知识

本文我主要会按照下面整理的大概逻辑进行梳理
在这里插入图片描述

存储介质

  • 易失性存储:
    易失性存储顾名思义,在断电后存储的数据会丢失,标准的就是我们所说的RAM,特点是存取速度高,时间相等,不存在地址的概念或者说地址无意义,用来做高速缓存,用于计算单元与非易失性存储之间的数据暂存,提高交互效率

  • 非易失性存储:
    在计算机意外断电或关机后不会丢失的存储技术,我们所说的存储无特殊说明一般指非易失性存储,典型的非易失性存储包括但不限于:
    机械硬盘(HDD),固态硬盘(SSD),磁带存储(Tape),光盘,U盘,SD卡等

这边既然提到了HDD和SSD,那简单总结下两者的区别,主要以下几点:
性能/价格/容量/寿命/抗震性
(随着技术的进步,当前SSD的每GB价格已逐渐逼近HDD)

磁盘接口及协议

个人把接口简单分三代

  • 老(弃用):SCSI,IDE
    这两种基本上已完全淘汰,IDE在一些较老的硬盘,CD-ROM,软驱中还能见到

  • 中(主流):SATA,SAS,NL-SAS
    当前个人PC及服务器场景中的主流接口,兼容HDD及SSD,其中对于HDD来讲SATA性能较低(5400rpm,7200rpm),容量大,性价比高,主要用于存放大量数据,SAS转速高(10000rpm,15000rpm),性能好,用于主流业务,NL-SAS物理上接口与SAS相同,性能上等同于SATA

  • 青(趋势):M.2,PCI-E
    此类接口就SSD使用,传输带宽高,价格也相对较高

当然除了硬盘,其他还包括有可移动存储用的一些接口包括USB,SD/TF等

另外关于磁盘的协议,当前主要有SATA(AHCI标准)和NVMe,SATA作为叫传统的磁盘协议,有着6Gbps的极限读写限制,无法满足专业领域对于无延时、极致读写的要求,而NVMe无论是在性能和实用性上,都远超传统基于AHCI的SATA接口固态硬盘,可以说是固态硬盘行业发展的未来

重要总结:
这边三个概念很容易混淆:磁盘类型,接口,协议
举几个例子说明:
1.HDD的接口可以是SATA或SAS,一定是跑的SATA协议
2.SSD的接口可以是SATA,M.2或PCI-E,SATA接口情况下一定是SATA协议,M.2及PCI-E接口的情况下可能基于SATA协议,可能基于NVMe协议

存储架构

这块应该是存储最为核心的概念了,也是刚刚接触存储最容易混淆的概念,根据普适的定义,三种主流架构大概如下:
在这里插入图片描述

  • DAS(Direct Attached Storage):直连存储
  • NAS(Network Attached Storage):网络附加存储-网络上的一个文件系统
  • SAN(Storage Area Network):存储区域网络-网络上的磁盘空间

网上类似介绍的文章很多,各种架构比较,适用场景说明,优劣势比较,刚接触的朋友会找不着北,一直以来个人不太赞同以上的分类方式,或者说以上的几种架构不应该是并列的关系,更多的是包含跟被包含的关系

我们先来了解一个概念:文件系统
无论底层的存储架构如何,最终存储一定是用于存放数据,而数据存放就需要对应的文件系统,用于对存放的数据进行管理和优化等,像Windows的FAS32/NTFS,Linux的EXT/XFS/ReFS,VMware的VMFS,NetApp的WALF等等,只要记住,数据一定是放在文件系统里的

了解完文件系统,我们来分析个常见的场景 - 我们是如何打开自己电脑c盘上的一个word文件的?

1.我们自己电脑都有硬盘,通过磁盘接口与主板连接,用于传输磁盘的基本单位数据块(Block)
2.许许多多的数据块合在一起无法直接使用,就需要上面提到的文件系统,把数据块打包变成文件系统的这个过程就是我们熟悉的格式化,在本例中,Windows操作系统就会把数据块格式化成NTFS文件系统,这就是我们看到的C盘
3.有了文件系统,就能真正存放文件了,也就能直接看到并打开我们的word文档

OK,了解了这个例子,我们在把场景扩展到以上的存储架构:

  • 例子中硬盘是通过接口或线缆直接连接到主板传输的数据块,所有硬盘只能供一台电脑使用,那么假设这块硬盘通过SAN交换机或网络的形式进行传输Block,其他连到同一台交换机的计算机都能读到这块盘的Block,每台都能拿一部分Block做自己的C盘,那这种形式就叫SAN
  • 当我们在自己C盘里存放并打开Word时,只能在本机看到,如果通过网络把文件系统通过交换机进行传输,或者说共享了C盘,那么在网络里只要能与我们网络互通并且有权限的情况下就能多个人一起访问到这个文件,那这时候我们共享出去的C盘就是一个NAS

以下一个典型的企业场景,后端存储划分LUN后通过SAN交换机将Block传输至某台物理服务器,那这一块就是SAN,服务器安装了Windows Server操作系统并将数据库格式化成NTFS,通过网络交换机让终端用户都能访问到共享文件,那这时候这台文件服务器就是NAS

在这里插入图片描述
其他现在主流的分布式存储,对象存储,云存储等先一笔带过,以后细说

另外一个重要的概念:LUN,Volume,Pool,先看下以下图
在这里插入图片描述

这边简单提下,因为不同存储的逻辑会有所不同:
LUN:数据块的一个合集,SAN一定是通过LUN的形式挂载给主机
VOL:卷,VOL存在的前提是已经有了文件系统,因此对于纯SAN存储,不存在文件卷,对于企业级的统一存储核心就是卷,这是后卷里面创建的LUN同样也是数据块的一个合集,但对于卷自身来讲就是一个LUN文件
Pool:存储的主资源池及空间,一般是一个RAID组,或有多个RAID组成(NetApp的AGGR)

存储协议

继续上一节的架构,物理上的架构需要通过协议去进行通讯,主要的存储协议包括:

  • SAN协议:FCP,iSCSI
  • NAS协议:CIFS/SMB,NFS
  • 对象协议:S3

传统的SAN主要通过FC协议进行传输,这是专为存储共享定制的协议,需要专门的SAN交换机及一套独立的配置逻辑,在早期网络速率不高的情况下使用广泛,后期当10Gb甚至更高的网络普及后出现了IP-SAN的概念,即通过标准的TCP/IP网络进行数据库的传统,所使用的协议就是iSCSI,FCP及iSCSI协议传输的都是数据块,需要格式化成文件系统使用

NAS直接通过IP网络进行文件传输,常见协议主要有Windows使用的CIFS/SMB,Linux使用的NFS,CIFS及NFS都是基于自己的文件系统直接传输的文件

需要特别说明,不要把文件系统和存储协议混淆,文件系统是车,存储协议是用来通讯的路,以一个经典的案例作为说明:
Veeam11引入了安全存储库概念,暂且不深究Veeam本身的相关技术,以虚拟化环境中的一个典型架构为例:
1.后端底层是NetApp的Ontap系统,通过NetApp自己的文件系统WAFL中创建卷并划分LUN
2.通过10Gb网络交换机,通过iSCSI协议用于传输LUN的Block
3.vSphere主机将读取到的LUN格式化成自己的文件系统VMFS
4.在VMFS文件系统的卷中创建两台VM,虚拟机直接是以文件夹的形式存放于VMFS中
5.其中一台Linux会将本地的vmdk格式化成XFS文件系统
6.改文件系统通过NFS挂载至Veeam虚拟机,并通过Veeam进行管理
在这里插入图片描述

存储接口及速率

当前主流的存储接口及带宽速率包括:

  • 光纤接口(FC):4G/8G/16G/32G
  • 网络接口(Ethernet):1G/10G/25G/40G
  • SAS接口:6G/12G(主要用于服务器直连存储或存储与盘柜之间互联)
  • IB接口(IB使用的协议及对应速率很多,不做细讲)

存储技术

以上提到的无论是磁盘还是架构只是硬件基础,存储的使用最终是通过软件才能达到业务使用的需求

高可用技术

回到最开始讲到的存储及数据的重要性,存储自然会通过各种技术手段去保证存储及数据的高可用:

  • 磁盘RAID:RAID技术作为磁盘最为核心的高可用技术,发展至今已有多重RAID模式,除了通用的RAID协议外,不少存储厂商也发展了自己独有的RAID技术,以在冗余度,空间利用率及性能之间去寻求最好的平衡,简单讲下几个主流的RAID技术:
    1.RAID0:一块以上的磁盘可组成RAID0,RAID0将磁盘进行条带化,可将多块磁盘的带宽进行叠加,性能高,缺点是由于将多块磁盘条带化后中间任何一块磁盘损坏都会直接导致阵列的损坏及数据丢失,性能与可靠性成标准的反比
    2.RAID1:磁盘做镜像复制,可用空间一半,单块磁盘出现故障时镜像盘能够完整接替主盘数据及业务,可用性高
    3.RAID10:需要2n块盘,将多个RAID1的磁盘组组成RAID0,性能好冗余度也较高,缺点空间使用率50%,适用于对数据可靠性较高的场景
    4.RAID5:n大于等于3块盘,每块盘使用1/n的空间用于存放其他盘的校验数据,在保证数据读写速率(RAID5的性能受阵列卡性能影响较大)及业务可靠性的情况下大大提高了空间使用率,仅损失一块盘的空间,为大多数场景使用的RAID方式

在这里插入图片描述

  • 热备盘:即HotSpare盘,与RAID技术配合使用,热备盘平时无任何数据读写,当RAID出现一块磁盘故障时,HS盘会立即顶替损坏的硬盘,保证RAID不会降级,从而影响性能及业务连续性
  • 快照:对存储Vol在某个时间点进行状态记录,改时间点后面的数据变更都会记录在一个或多个Delta的差异空间中,当发生各种非预期的状况下,随时可恢复到某个快照的时间点,需要注意:
    1-快照通常用于未知的危险操作前进行保障,例如升级,运行危险应用程序等,另外就是备份软件主要就利用快照进行备份
    2-对于数据的更改,删除,增加都属于数据变化,因此快照点后的数据变化永远是正向增长,所以切记,快照不是备份的方式,要及时整理并清除快照!
  • 控制器HA:控制器作为存储器的计算核心,用于控制整个磁盘组的相关业务读写,通常都至少有两个Controller组成HA,当一个控制器发生故障时,另一个控制器可Takeover损坏控制器的工作,保证业务的连续性和高可用

当然,作为数据的最后一根救命稻草,备份一定是更为重要也是必须的解决方案,后期会新写篇文章进行讨论

存储效率技术

如何更为高效的利用存储空间,最大限度的挖掘存储的性能,也是存储发展史上另一个从未停止的话题,这边列举了当前主流存储使用的一些存储效率技术:

  • 数据压缩:按照存储自己的算法技术,对数据进行重新编码以节省存储空间,压缩的比例根据数据类型的不同会有较大差异,一般来讲结构化数据(数据库)压缩比例较大,非结构化数据(文件,视频)压缩比例较小;另外数据压缩会占用一定的CPU和磁盘性能,通常全闪环境下可以启用实施压缩,其他场景一般使用定时压缩

  • 数据重删:全称重复数据删除,即对存储空间内重复的“数据”只保留一份实际的空间占用,其他位置同样的数据会以指针的形式指向真实数据。对于“数据”来说,比较基础的算法就是至单个文件,比如两个完全相同的Word文件在不同路径只占用一份空间,当文件不完全相同时(MD5不一致)无法做到重删;现在的专业存储基本都能做到数据块级别的重删,会以Block为单位(比如4K)进行比对,Block一直就能进行重删,实际案例中某学校客户发了1000份Word学生作业,每个学生提交的作业内容都不完全相同,Block级别的重删在这种场景就能发挥很理想的效果。重删其他的一些非常适用场景包括VDI,实验环境等

在这里插入图片描述

  • 数据分层:通常意义上讲的数据分层一般有两种形式:一种是把SSD磁盘组作为Flash Pool缓存池,用于HDD容量盘的读写加速,有点类似于内存机制,SSD不作为数据存储;另一种是把SSD和HDD作为高速层(Performance Tier)及容量层(Capacity Tier),默认数据会先落到SSD,SSD写满后根据不同存储自己的算法将冷数据落回HDD,HDD内的热数据上升到SSD,始终保持数据的高效读写,此种情况SSD作为数据存储,同时SSD容量占比越高整体性能越好

  • 灵活精简卷:灵活卷主要指Vol可根据实际情况在线进行扩大与缩小,存储系统根据自己的文件系统算法对数据块进行整理排序;精简卷指在Vol划分初期,存储不会格式化全部Block,根据数据的实际使用情况去逐步格式化数据块,简单说做到实际文件空间与存储的占用空间相等,做到最大化的利用存储空间

文中很多是自己个人见解,可能会存在偏差,欢迎大家一起交流探讨!!!

最后的最后,出个小练习,如果以上理解了正好可以验证下(选自AMOL工程师面试题):
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sjj222sjj/article/details/122729899