传统存储介绍

什么是存储

存储就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问。

  • 保存
  • 访问

我们一般从这三分方面了解存储:

  • 存储设备
  • 存储技术
  • 对外接口

计算机存储系统的层次图

这个图事大学时候的课本内容,我就不多讲了。计算机存储层次之所以是这个样子,是因为人性的贪婪。

怎么说呢,我们对存储系统始终有三个基本要求,即:

  • 速度快
  • 存储容量大
  • 成本低

寄存器

用于CPU内部各单元之间的周转,是CPU内部用来创建和储存CPU运算结果和其它运算结果的地方,拥有非常高的读写速度。

寄存器和cpu速度相当,空间比较小在kb级别。

CPU内部的寄存器有很多种类型。

  • 数据寄存器
  • 地址寄存器
  • 指令寄存器 …

CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过“端口”交换数据,外部寄存器具有寄存器和内存储器双重特点。通用寄存器的数据宽度决定了处理器一次可以运行的数据量。

高速缓存Cache

缓存是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到加快访问速度的作用,它将一些经常使用的数据缓存到内存或者各种储存介质中,当再次使用时可以不用去数据库中查询,减少与数据库的交互,提高性能。

缓存又分为一级缓存、二级缓存、三级缓存,它们的作用范围不同:

  • 一级缓存是session级别的。也就是只有在同一个session里缓存才起作用,当这个session关闭后这个缓存就不存在了。比如在一个事务中同时查询同一个对象,则不会两次去数据库中查询。
  • 二级缓存是sessionFactory级别的。其缓存对同一个sessionFactory生产出来的session都有效。 我们通常使用其他的一些开源组件,比如 hibernate 经常使用的就是 EhCache,这个缓存在整个应用服务器中都会有效的,主要是为了存储一些比较稳定的数据,如权限,只有在用户修改了权限且重新登录时才能生效。
  • 三级缓存(如果有的话)是为读取二级缓存后未命中的数据设计的—种缓存,进一步提高CPU的效率。

注意:只有一级缓存是在CPU中的,一级缓存的读取需要2-4个时钟周期;二级缓存的读取需要10个左右的时钟周期;而三级缓存需要30-40个时钟周期,但是容量一次增大。

内存

内存才是计算机运行过程中的存储主力,用于存储 指令(编译好的代码段),运行中的各个静态,动态,临时变量,外部文件的指针等等。

寄存器和高速缓存只是加速存储速度的中间部件,原始运行文件肯定都是先加入到内存中的,因此内存的大小决定了一个可运行程序的最大大小。

一般分为

  • 只读存储器(ROM)
  • 随机存储器(RAM)

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。

RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。

DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。

DDR RAM(Date-Rate RAM)也称作DDR SDRAM,这是目前电脑中用得最多的内存,最早是由三星于1996年提出,由日本电气、三菱、富士通、东芝、日立、德州仪器、三星及现代等八家公司协议订立的内存规格,并得到了AMD、VIA与SiS等主要芯片组厂商的支持。它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。

在手机中,RAM是指手机内存,ROM是指手机存储器,比如手机内存SD卡就属于ROM范畴。

磁盘存储

我们最常见的硬盘。转速在7200转左右。相对于8G的内存,一个500G的硬盘可以说是相当的便宜。但是问题在于他的速度非常的慢,从磁盘读取数据需要几个毫秒,而CPU时钟周期是以纳秒计算。磁盘读取操作要比DRAM慢10万倍,比SRAM慢百万倍。

固态硬盘是最近几年出来的,而且随着技术的发展,价格也越来越便宜,越来越多的人采用SSD+HHD的方式来搭建系统,提高系统的速度。

关于本地计算机的存储告一段落,基本上都是在讲存储设备,存储技术和对外接口我没怎么去了解。下面我们从存储系统模型讲起。

DAS

磁盘存储市场上,根据服务器类型分为:封闭系统的存储和开放系统的存储

  • 封闭系统主要指大型机,AS400等服务器
  • 开放系统指基于包括Windows、UNIX、Linux等操作系统的服务器.

开放系统的存储分为:

  • 内置存储
  • 外挂存储

外挂存储根据连接的方式分为:

  • 直连式存储(Direct-Attached Storage,简称DAS)
  • 网络化存储(Fabric-Attached Storage,简称FAS)

开放系统的网络化存储根据传输协议又分为:

  • 网络接入存储(Network-Attached Storage,简称NAS)
  • 存储区域网络(Storage Area Network,简称SAN)。

接下来我按照 DAS NAS SAN 的顺序做个介绍

DAS (Direct Attached Storage)

直连式存储。指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上。和使用本机硬盘并无太大差别,对于服务器的要求仅仅是一个外接的SCSI口,因此对于小型企业很有吸引力。

DAS

DAS的不足之处:

   (1)服务器本身容易成为系统瓶颈;
          直连式存储与服务器主机之间的连接通道通常采用SCSI连接,带宽为10MB/s、20MB/s、40MB/s、80MB/s等,随着服务器CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多,SCSI通道将会成为IO瓶颈;服务器主机SCSI ID资源有限,能够建立的SCSI通道连接有限。
   (2)服务器发生故障,数据不可访问;
   (3)对于存在多个服务器的系统来说,设备分散,不便管理。同时多台服务器使用DAS时,存储空间不能在服务器之间动态分配,可能造成相当的资源浪费;
   (4)数据备份操作复杂

NAS(Network Attached Storage)

NAS实际是一种带有瘦服务器的存储设备。这个瘦服务器实际是一台网络文件服务器。NAS设备直接连接到TCP/IP网络上,网络服务器通过TCP/IP网络存取管理数据。NAS作为一种瘦服务器系统,易于安装和部署,管理使用也很方便。同时由于可以允许客户机不通过服务器直接在NAS中存取数据,因此对服务器来说可以减少系统开销。

DAS

   NAS为异构平台使用统一存储系统提供了解决方案。由于NAS只需要在一个基本的磁盘阵列柜外增加一套瘦服务器系统,对硬件要求很低,软件成本也不高,甚至可以使用免费的LINUX解决方案,成本只比直接附加存储略高。

NAS存在的主要问题是:

   (1)由于存储数据通过普通数据网络传输,因此易受网络上其它流量的影响。当网络上有其它大数据流量时会严重影响系统性能;
   (2)由于存储数据通过普通数据网络传输,因此容易产生数据泄漏等安全问题;
   (3)存储只能以文件方式访问,而不能像普通文件系统一样直接访问物理数据块,因此会在某些情况下严重影响系统效率,比如大型数据库就不能使用NAS。

SAN (Storage Area Network)

全称为存储区域网络,通过交换机等连接设备将磁盘阵列与相关服务器连接起来的高速专用子网。同时SAN对数据可以提供多种RAID级别的保护。

DAS

SAN实际是一种专门为存储建立的独立于TCP/IP网络之外的专用网络。目前一般的SAN提供2Gb/S到4Gb/S的传输数率,同时SAN网络独立于数据网络存在,因此存取速度很快,另外SAN一般采用高端的RAID阵列,使SAN的性能在几种专业存储方案中傲视群雄。

   SAN由于其基础是一个专用网络,因此扩展性很强,不管是在一个SAN系统中增加一定的存储空间还是增加几台使用存储空间的服务器都非常方便。通过SAN接口的磁带机,SAN系统可以方便高效的实现数据的集中备份。
   SAN作为一种新兴的存储方式,是未来存储技术的发展方向,但是,它也存在一些缺点:
   (1)价格昂贵。不论是SAN阵列柜还是SAN必须的光纤通道交换机价格都是十分昂贵的,就连服务器上使用的光通道卡的价格也是不容易被小型商业企业所接受的;
   (2)需要单独建立光纤网络,异地扩展比较困难;

DAS

NAS和SAN的根本不同点:

   SAN结构中,文件管理系统(FS)还是分别在每一个应用服务器上
   NAS则是每个应用服务器通过网络共享协议(如:NFS、CIFS)使用同一个文件管理系统
   即:NAS和SAN存储系统的区别是NAS有自己的文件系统管理。

ISCSI(Internet SCSI)

  ISCSI网络存储知识:使用专门的存储区域网成本很高,而利用普通的数据网来传输ISCSI数据实现和SAN相似的功能可以大大的降低成本,同时提高系统的灵活性。

   ISCSI就是这样一种技术,它利用普通的TCP/IP网来传输本来用存储区域网来传输的SCSI数据块。ISCSI的成本相对SAN来说要低不少。随着千兆网的普及,万兆网也逐渐的进入主流,使ISCSI的速度相对SAN来说并没有太大的劣势

ISCSI目前存在的主要问题是:

   (1)新兴的技术,提供完整解决方案的厂商较少,对管理者技术要求高;
   (2)通过普通网卡存取iSCSI数据时,解码成SCSI需要CPU进行运算,增加了系统性能开销,如果采用专门的iSCSI网卡虽然可以减少系统性能开销,但会大大增加成本;
   (3)使用数据网络进行存取,存取速度冗余受网络运行状况的影响。

php laravel 框架中的 try catch 王岐山为何推荐《旧制度与大革命》? - 人民日报海外版