现代计算机采用的是冯诺依曼体系结构,包含控制器、运算器、存储器和输入输出设备。其中,存储器分为内存储器和外存储器,而外存储器包括硬盘、光盘和U盘等。CPU与外存储器的通信是通过IO总线进行。
计算机各部件的性能参数大致是:CPU每秒处理的指令数为百万条,RAM为数十万条,而硬盘为200~300条。可以看出,硬盘是计算机系统的处理瓶颈。
每个硬盘包含多个盘片,每个盘片又划分多个磁道,每个磁道又分为多个扇区。
扇区即是硬盘中最小的物理存储单位,也是读写基本单位,大小是为512字节或4096字节。
现在我们习惯于使用电脑进行办公,我们打开WPS进行写作或者制作表格,然后将其保存成某个盘某个目录下的某个文件。下次在查看资料时,便在某盘某目录下去找某文件就可以。也就是说,我们的数据都是以文件形式存在某个目录下的,“文件”是人类视角下的存储数据的最小单位,存数据则新建文件,查看数据则打开某个文件。
我们新建、编辑和删除都是围绕文件进行,硬盘存储数据的最小单位是扇区。
在我们与硬盘之间,还有个操作系统(具体地说是文件系统),负责将文件分配到硬盘上,也就是对存储在硬盘上的数据进行组织。如FAT文件系统、NTFS文件系统。
文件系统对硬盘块进行管理,将文件拆分成若干个块,存放到硬盘的不同扇区里面。块与扇区的对应关系是2的n次方。这里的块和扇区的映射由硬盘驱动器来做,当然硬盘驱动器还进行读取数据、控制磁头等操作。
这样,我们就不需要关注文件如何存储在硬盘。转换流程为:
当计算机的硬盘存储空间不够时,可以通过增加外挂硬盘的方式来增加容器。外挂硬盘比较多时,可以把它们打包放到一个柜子里,称为硬盘扩展柜,常称为 JBOD (Just a Bunch of Disks)。JBOD的使用方法是多块硬盘顺次写入,当第一块硬盘存满了,会继续存到下一块JBOD的缺点是当有一块硬盘损坏时,所有数据将丢失。
为解决数据丢失带来的安全问题,在硬盘扩展柜中引入 RAID 。
RAID,全称redundant array of independent disks,独立硬盘冗余阵列,也就是多个独立的硬盘组成一个大硬盘,这个硬盘具有冗余特性,允许某个硬盘损坏后,数据仍可用。RAID通过在多个硬盘上并发读写数据来提高存储的 I/O 性能,通过数据冗余来提高数据的高可用。
那么,如何来做RAID?
将硬盘阵列进行横切、竖切形成带、条。带、条交叉点形成逻辑硬盘。
RAID控制器是一种硬件设备或软件程序,用于管理计算机或存储阵列中的硬盘驱动器(HDD)/固态硬盘(SSD),以便它们能如逻辑部件一样工作,各司其职。
RAID标准从RAID0到RAID6。其中,RAID0没有容错设计,RAID1使用镜像。
由于在SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个。需要在RAID基础上进一步抽象,这个抽象形成的逻辑结构称为LUN(Logical Unit Number,逻辑单元号),LUN被看作是由硬件生成的虚拟硬盘的统称,而由软件生成的虚拟硬盘称为“卷”。
从服务器主机的角度来看,这些LUN被看作“物理硬盘”,主机操作系统可以在LUN上进行分区和格式化。这个工作通常由内核中的LVM(Logical Volume Manager,逻辑卷管理)来做。
涉及到几个概念:
服务器主机操作系统使用这些逻辑卷。
存储直接外挂在一台服务器上,这种架构称为DAS(Direct Attached Storage,直接连接存储)。DAS的特点是其自身没有操作系统和文件系统,仅供一台服务器使用。
常见的存储设备有硬盘、U盘、移动硬盘、JBOD等。在服务器上显示为本地硬盘,为块级别存储设备。
为了硬盘阵列能够供多个服务器使用,就出现了SAN(Storage Area Networks,存储区域网络)。
在SAN中,SAN硬盘阵列和服务器的关系是N:M,也就是多对多的关系。
SAN有FC-SAN和IP-SAN两种。
其中,FC-SAN需要FC交换机和光纤,价格较贵,要组一套完整的SAN网络构架,需要几十W的投资成本。IP-SAN需要以太交换机,价格会降低一半。
SAN可以看作是网络上的硬盘,面向的是海量的面向数据块的数据传输。
文件存储可以看成是文件服务器,提供文件共享服务给用户,并能控制用户的访问权限(增删改),称为NAS(Network Attached Storage,网络附加存储)。
NAS的实现方式是在存储设备上安装文件系统,并以文件目录的方式共享存储空间。服务器无须对文件存储进行格式化。
NAS的特点是包含文件系统和操作系统,可完全独立自主运行,属于文件级共享存储设备,成本低,软硬件一体。
NAS可以看成是网络上的文件系统。
SAN提供的是块级存储服务,NAS提供的是文件级的数据访问和共享服务。
现在很多厂商提供统一的存储,也就是一种网络存储架构同时支持NAS和SAN。
有别于文件存储的树形结构,对象存储将数据看成“对象”,并且数据的存储采用两级结构,分别称为Bucket(桶)、Object(对象)。
全部0条评论
快来发表一下你的评论吧 !