计算机存储原理——基础

存储介质简介

1. 光介质存储

介质: 光盘
存储原理:

  • 刻录后 暗(被刻录后会有凹槽,不反光)表示1;亮表示0;
    在这里插入图片描述

2. 磁介质存储

介质: 磁带,磁盘等
存储原理:
磁道中的不稳定磁性颗粒,经过磁头磁化后会变得有序,有序后指向南北极的方向不同,以此来区分0和1
在这里插入图片描述

  • 磁带:条状磁道。
  • 磁盘:有硬磁盘和软磁盘,圆状磁道。

3. flash(闪存)

介质: 固态硬盘,U盘,SD卡等
存储原理:
闪存颗粒中有存储单元,存储单元中存储电荷。控制栅极可以将电荷存储在存储单元中。
在这里插入图片描述
通过存储单元中的电荷有电压,达到某个阈值表示一个数值没有达到表示另一个数值,一个存储单元表示的数值有不同玩法,通常分为SLC、MLC、TLC、QLC。SLC更稳定

  • SLC:一个存储单元表示1bit的数据,达到阈值表示1达不到表示0
  • MLC:一个存储单元表示2bit的数据,根据阈值范围划分为00,01,10,11
  • TLC:一个存储单元表示3bit的数据,根据阈值范围划分为000,001,010,011,100,101,110,111
  • QLC:一个存储单元表示4bit的数据,同上
    在这里插入图片描述
    缺点: 寿命短,不利于持久化存储。企业上一般使用磁介质硬盘来做永久化存储,闪存当做缓存来使用。因为磁介质一旦经过磁化只要不是物理损伤数据不会丢失。

硬盘存储原理

磁盘组件

在这里插入图片描述
磁头摆臂可以摆动,盘片由主轴控制转动,如此以来磁头就能读取到盘片的所有磁道的数据。数据通过磁盘接口由总线发给计算机系统。
一个硬盘中可以有一个或多个盘片。盘片也可以分为单面和双面,双面表示盘片的正反两面都有磁道能存数据。

磁盘是如何存储文件的

早期磁盘存储数据方式:
磁盘存储文件时的最小单位为扇区sector,早期磁盘的寻址方式是CHS(cylinkder head sector)也就是先找到柱面再通过磁头编号找到磁道,再找到扇区。一个扇区是512Byte,若文件大于512Byte则需要跨扇区存储,但是这些扇区不一定连续这就导致读取数据时比较麻烦。
【什么是柱面】:比如一个硬盘有3个盘片,俯视图看有10个磁道,柱面就是俯视所有盘面的同一个磁道称为一个柱面。比如这三个盘面每一面的1号磁道的集合称为1号柱面,这一柱面有3个磁头分别指向这3个盘面的1号磁道。所以通过柱面-磁头编号就可以确定是哪个盘面的哪个磁道,在通过扇区找到要读取的数据。
在这里插入图片描述
目前主流磁盘的存储方式:
由于扇区的颗粒度太小,很容易跨扇区存储。所以后来有了block块(Linux下叫block)(windows下叫存储单元cluster),这是一个逻辑概念。
当你在格式化磁盘的时候windows下默认一个存储单元是4096字节(也可以手动修改),这4096字节是连续的8个扇区逻辑出来的一个块区域。格式化这个动作就是将这个磁盘的所有扇区全部按8个8个分成多个块区域,对文件系统来说他看到的最小存储单元就是一个块。
这就是你在windows上即使创建一个1字节的文件,通过文件右键->属性看到的占用空间却是4096字节的原因。
【空文件为什么占用空间是0字节】:因为文件分为描述数据(元数据metedata)和实际数据,而描述数据是有一个单独的存储位置。意味着这个文件并没有实际内容与扇区一一对应。当你往这个文件中写入一个字节的数据,这时就会占用一个块区域。
在这里插入图片描述
【为什么是4096字节】:虽然格式化时可以修改一个块的大小,但是最小也不能小于512字节,因为一个扇区就是512字节(这是真实的物理大小改变不了)。而文件系统存储文件的时候是按照块为最小单元来存储的,设置太大造成文件浪费,设置太小又会出现很多个跨块区域的数据。权衡后的大小就是4096字节。可以根据需求来调整格式化时的块区域大小,比如存的都是几个字节的零碎文件那就可以设置小一点,要是存的都是大文件那么就可以格式化的大一些,提高磁盘使用率。

磁盘的性能

对于硬件来说磁盘性能表现在:
5400rpm:平均旋转延时:5.5ms
15000rpm:平均旋转延时:2.0ms

所以可以看到机械硬盘的瓶颈很明显,转速越快产生热量越多,所以注定性能快不了。

  • 寻道速度:磁头摆臂速度
  • 盘片转速:主轴的转速

对操作系统来说磁盘的性能表现在:
通常企业上要使用IO高和高吞吐,都会选择flash,而且flash抗震。但是flash不适合永久化数据存储,可以先存到flash再由flash往慢速硬盘中导入。

  • IOPS:读写次数
  • 吞吐:带宽

存储接口与存储协议

硬盘与内存数据交互过程见下图:
在这里插入图片描述

接口类型

  1. ATA-高级技术附加-并行接口:也称为IDE接口,早期并行接口,现在已经被淘汰。(早期个人使用)
    ATA总线是一个慢速总线,总线中的数据交互需要遵循ATA协议。驱动协议指令最大速率只能到133MBps
    ATA为什么慢:

    • 使用的是并口而不是串口:虽然并行可以一次发送多个bit的数据,但是并行接口需要等排线上的数据都准备好才能发送,大多时间都在等待。而串行虽然只能一bit一bit发,但是不需要等待。还有一个原因是线路之间的电磁干扰,必须有协调机制来保证并行的数据的正确性,而这种协调机制就会导致前面说的等待。
  2. SATA:ATA总线的串行升级版本。(个人使用)

    • SATA1.0标准速度:1.5Gbps
    • SATA2.0标准速度:3Gbps
    • SATA3.0标准速度:6Gbps (600MBps)
    • 支持驱动协议指令ATA133MBps-ATA总线:它是并行协议。
    • 支持驱动协议指令AHCI指令:高级主机控制接口协议,它是一个串行协议。

    SATA接口可以使用串行或并行的方式传输协议,这取决于使用什么驱动程序。

  3. SATA-E接口:可以走SATA总线,也可以走PCIE总线。可以向下兼容SATA。

  4. M.2接口:

    • B-key接口:支持SATA3总线,使用AHCI指令。最高6G
    • M-key接口:支持PCIE3.0 *4总线,使用NVMe协议指令。最高32G
      在这里插入图片描述
  5. U.2接口:支持PCIE *4总线,使用NVMe协议指令。最高32G
    在这里插入图片描述

  6. PCI-E接口:支持PCIE *4总线,使用NVMe协议指令。最高32G
    在这里插入图片描述

  7. MINI-PCIe接口:存储能力等同于SATA,只不过接口大小较小,适合放在笔记本中。
    在这里插入图片描述

  8. SCSI:小型计算机系统接口。早期为IBM为小型机器指定的,现在已经算是一种公开标准。并行接口,对应SCSI协议,SCSI总线。但是他是并行接口,所以很慢。(早期企业使用)

    • 企业中基本不用SCSI接口,但是会用SCSI协议和SCSI总线。
    • SCSI是主机与磁盘通信的基本协议。
  9. SAS:串行版本的SCSI,使用串行的SCSI指令。(企业使用)

    • SAS驱动协议:支持串行SCSI指令、ATA指令、AHCI指令
    • SAS完全兼容SATA。
    • SAS总线可以连接一个expander,一个expander可以挂128个expander,每个expander可以连接128个硬盘。
      在这里插入图片描述
  10. 实物展示:

    • SATA硬盘可以插入到SAS接口上,但是SAS硬盘不能插入到SATA接口。
    • SAS接口如果插入了SATA硬盘,可以走AHCI协议或串行的SCSI协议。
    • SATA接口只能插SATA硬盘。
      在这里插入图片描述
      在这里插入图片描述

SCSI

SCSI的寻址方式

  1. 首先找到总线(BUS)ID(通道ID)
  2. 其次找设备ID
  3. LUN-逻辑单元:logic unit number,逻辑设备
  4. LBA-逻辑块区域:类似上面磁盘存储原理中说到的block

windows下查看SCSI寻址

在这里插入图片描述

接口与总线与协议的对应关系

在这里插入图片描述

cpu是如何控制存储的

南桥北桥:

● 早期北桥和南桥都在cpu外部通过总线通信:cpu -FSB总线->北桥-DMI总线->南桥。
● 后来的计算机,北桥都被集成到了CPU中,外部只有南桥(改名PCH:平台控制器总线芯片)。所以现在的计算机也就没有南桥北桥之说。

DMA直接内存访问:

● 若CPU中没有DMA时,cpu进行io任务的时候有两种方式:

  1. 磁盘查询:效率底浪费cpu资源。cpu不停的询问硬盘能不能进行io当io准备好了才能进行io任务,一般硬盘会给cpu回复两种状态"busy"和"ready",只有cpu收到ready的时候才会执行io任务。
  2. 中断:cpu给磁盘发送我要进行io的指令然后继续进行其他任务,磁盘接收到指令后在ready状态的时候发起io中断提醒cpu进行io任务。

● CPU中集成了DMA时:

  • cpu要执行io任务的时候将io控制权暂时交给DMA控制单元,DMA帮CPU去完成io任务(方式:io中断),cpu除了跟DMA通信外不需要跟磁盘交互,cpu可以继续执行其他运算任务。DMA处理好了后通知CPU,CPU收回io控制权。

文件系统

简述:

  • 文件系统以树形目录的方式组织计算机数据,直接与物理磁盘的块区域交互,让我们在使用计算机的过程中对物理磁盘的存储无感知,我们只需要记录文件名和目录即可。
  • 文件系统与磁盘交互的方式是文件系统维护着文件与底层LBA地址的映射关系。

常见的文件系统

不同的操作系统能识别不同的文件系统,有些文件系统可以被所有主流操作系统识别。

windows:

  • FAT16、FAT32、NTFS、exFAT

Linux:

  • ext、ext2、ext3、ext4、XFS、ISO9660、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC、exFAT

MAC OS:

  • APFS、HFS+、exFAT

文件系统中块存储与文件的关系

当主机接入块设备的时候(LUN)通过驱动协议(SCSI)与扇区(sector)通信。

  1. 磁盘首先将磁盘进行分区(按照磁盘大小分)得到盘符。
  2. 将盘符格式化,将对应的block块链接到这个分区,完成文件系统的创建。
  3. 每个分区中都有一个单独的存储空间用来保存元数据(Linux中叫inode)信息(文件描述信息、mapping映射LBA关系)。所以格式化后的大小会略微小于分区的总大小。
    在这里插入图片描述

注意:

  • 对windows系统来说操作系统会默认保留100M的保留分区来存储引导程序。
  • 分区是个逻辑的概念,既可以压缩也可以扩展。
  • 格式化重新对磁盘上的block划分,此时可能会导致数据丢失。
  • 格式化分为快速格式化和常规格式化。快速格式化不会对block填0,而常规格式化会将该分区对应的block全部填0
  • windows下分区有两种方式,MBR(最大2T)和GPT(大小无限制)。

存储链接方式

DAS

  • 全称:Direct Access Storage(直连存储)
    在这里插入图片描述
  • 特点:
    • 通过存储线缆直接将数据传入主机,不通过网络。
    • 对主机提供的是一个块级别的存储。也就是说没有文件系统,需要进行分区格式化后才能使用。
      在这里插入图片描述

SAN

  • 全称:Storage Area Network(存储区域网络)
    在这里插入图片描述
  • 特点:
    • 有单独的网络来进行传递数据的存储指令。
    • 有单独的存储设备来进行存储——集中式存储。
    • SAN的本质是通过网络数据包的形式将SCSI指令进行封装后,通过网络设备发送给存储设备。
    • SAN对主机提供的是块级别的存储。
    • SAN的网络通常情况下使用光纤网络。
  • SAN封装SCSI指令的方式:针对不同的封装方式称为FC-SAN和IP-SAN
    • FC:有自己单独的协议框架,无法和以太网兼容。FC对应有FC光纤交换机,FC接口。如果想使用FC网络必须使用FC接口和FC光纤交换机(FC接口必须走光纤)。
      在这里插入图片描述

    • ISCSI:支持TCP/IP协议,可以使用以太网的接口和交换机来传输数据。

SAN接口的工作原理

主机本身是不能将SCSI指令转化成FC或ISCSI指令,所以需要一个硬件来完成这项工作,它就是HBA卡。
HBA卡分为FC-HBA卡和ISCSI-HBA卡。
在这里插入图片描述

FC-HBA:
在这里插入图片描述

ISCSI-HBA:
在这里插入图片描述

IPSAN数据传输过程:
  1. 服务器在内存中产生数据。
  2. 内存将SCSI指令通过总线发送给ISCSI-HBA卡。
  3. ISCSI-HBA卡将SCSI指令封装成ISCSI指令,这个指令中带了以太网的数据包。
  4. 将数据包通过以太网发送给存储设备。
  5. 存储控制器从Ethernet接口接收ISCSI指令数据包,解析成SCSI指令进行数据的存储。
IPSAN的优势:
  1. 接入标准化:不需要专用的HBA卡和光纤交换机,普通的以太网卡和交换机就可以实现存储和服务器的连接。
  2. 传输距离远:理论上IP网络可达的地方就可以使用IPSAN。
  3. 可维护性好:IP网络技术的维护人员群众广大,维护工具齐全。
  4. 带宽扩展方便:随着10Gb以太网的迅速发展,IPSAN单端口带宽扩展到10Gb已经是趋势。
ISCSI可以使用身份认证

在这里插入图片描述

  • ISCSI中可以开启身份认证(CHAP:用户名/口令)也可以不开启。
  • 如果开启了CHAP,会在ISCSI中创建关联角色IQN-ISCSI限定名称(限定名称表示一个目标的连接),因为一个ISCSI发起段可以有多个目标,而这些目标需要有个区分,这时就需要IQN来标记每个目标。
注意:
  • FC-SCSI只能通过FC-HBA卡来进行封装。ISCSI可以由模拟软件通过CPU封装然后通过光纤网络发送给存储设备,也可以由ISCSI-HBA卡来封装。
  • FCoE:FC支持以太网传输的过渡协议版本,极少有场景使用。
  • 以太网中一个包的数据最大1500字节(虽然可以设置这个最大值)导致IPSAN的速度不如FCSAN。FCSAN的一个数据包很大,发送速度较快,但是现在IPSAN的速度也在进步,使用更加广泛。

HBA卡实物展示

在这里插入图片描述

存储设备

存储设备分为硬盘框和控制框:

  • 存储控制引擎(控制框):控制整个存储规划,空间划分。提供IO接入功能。
  • 硬盘框存储阵列(硬盘框):负责最终的数据存储。
  1. 盘控一体:控制框和硬盘框在一起。
    在这里插入图片描述
  2. 盘控分离:控制框和硬盘框之间使用的DAS方式连接,控制框对外提供IO接口,供外部访问。
    在这里插入图片描述

NAS

  • 全称:Network Access Storage(网络访问存储)
  • 简述:通过存储为用户提供文件级别的存储。可通过TCP/IP协议做文件共享
  • eg:smba工具

NAS共享协议

  1. SMB协议:Windows平台下service message block 服务消息块,对应CIFS文件系统。
  2. NFS:unix平台下Network File System,对应NFS文件系统。

NAS设备组件:

  1. NAS引擎-控制器:负责I/O接入 | NAS空间划分。
  2. NAS后端存储硬盘框:负责写入数据。
  • 一体化NAS:包含NAS引擎和硬盘框。
    • windows下win+R–>运行–>//ip/filepath–>看到共享目录。实际上是通过SMB协议访问CIFS文件系统。
    • linux下需要安装smba软件来支持smb协议。
    • mac系统下运行框–>smb://ip/filepath–>看到共享目录。
  • 访问NFS共享存储:
    • windows下需要安装NFS客户端,在windows功能下开启。
    • Linux下需要安装NFS客户端。
    • mac下需要安装NFS客户端。

NAS、SAN、DAS的区别

  • DAS:为我们提供的是块级别的直连存储。支持SCSI、SATA总线协议。
  • SAN:为我们提供的是块级别的网络存储,需要特殊的网络设备。支持iSCSI、FC协议。
  • NAS:为我们提供的是文件级别的网络存储,普通的网络即可。常用来做共享存储。

在这里插入图片描述

RAID磁盘冗余与逻辑卷LUN

  • 描述:Redundant array of independent disks(RAID)独立硬盘冗余阵列。
  • 作用:
    • 提升主机的存储速度。
    • 确保存储的正确性。(可靠性)
  • 原理:多个硬盘组成的一个阵列集群,对主机来说只能看到一个逻辑硬盘。提高并行读写效率。

RAID

当硬盘加入到RAID集群后,需要对硬盘进行条带化-Strip(逻辑块)

【什么是条带化?】
硬盘中单个或多个连续的扇区构成条带,他是一块硬盘上进行一次数据读写的最小单元,类似于block块。
集群中的每个磁盘都必须先有自己的条带,阵列中每个磁盘的相同"位置"(或者说相同编号)条带的集合组成一个分条,分条是提供给主机访问逻辑硬盘的最小存储单元。

在这里插入图片描述

怎么实现数据的可靠性:

  • 方法一:通过数据镜像副本
  • 方法二:通过算法实现冗余副本
RAID模式

RAID0、RAID1、RAID3、RAID5、RAID6、RAID10、RAID01

  • RAID 0:通过条带分条技术实现提升并行写入速度。但是无法提供数据可靠性,如果一个磁盘损坏,那么这整个分条的数据就被损坏了。
    在这里插入图片描述
  • RAID 1:通过镜像技术实现数据备份。但是无法提升写入的速度,可以提升读取速度。因为数据有多份可以并行读取。
    在这里插入图片描述
  • RAID 3:带奇偶校验。允许任何一个盘损坏,P盘是不与主机I/O通信的。
    在这里插入图片描述
    【为什么可以允许一个磁盘损坏?】
    因为奇偶校验的原理是异或运算,任何一个盘的损坏都可以通过其他盘的数据根据异或算法推理得到。
    eg:比如现在有上图中5个盘,数据盘的数据为0、1、0、1那么校验盘的数据计算方式为按顺序从前往后异或,0⊕1=1,1⊕0=1,1⊕1=0;所以P盘的数据就是0。当disk0盘损坏,依然可以通过逆向异或推理得到disk0的数据是0
  • RAID 5:原理同RAID3一样,但是没有独立的硬盘来存储校验数据。通过分布式存储算法将校验数据分布存储在数据盘中。同样只允许损坏一个硬盘。
    在这里插入图片描述
  • RAID 6:原理同RAID5,但是多增加了一个q校验数据来保证数据的可靠性。允许任意两块盘损坏。
    在这里插入图片描述
  • RAID 10:先将两块硬盘做RAID1,再将两块RAID1的硬盘做RAID0。比如有4个盘两两分组分为组1和组2。组内使用RAID1,外层对组1和组2做RAID0;
  • RAID 01:先将两块硬盘做RAID0,再将两块RAID0的硬盘做RAID1。举例同RAID10;
RAID不同模式的有效空间:
  • RAID 0:利用率100%
  • RAID 1:利用率50%
  • RAID 3:N-1
  • RAID 5:N-1
  • RAID 6:N-2
  • RAID 10:利用率50%
  • RAID 01:利用率50%
RAID实际应用模式推荐:
  • RAID 5:推荐4盘位
  • RAID 6:最少4盘位,推荐6盘位

RAID实现方式:

  1. 通过RAID模拟软件,来模拟RAID实现。主机的存储是跟RAID软件交互。(不推荐使用)
  2. RAID卡插在主板上,RAID卡提供了接口可以连接硬盘,主机只能看到RAID的逻辑磁盘。主机的存储是跟RAID卡交互。这种方式的RAID模式需要进入主板BIOS中设置。

注意:
服务一般运行在操作系统上,而操作系统也存储在一个硬盘上,若恰好操作系统所在的磁盘挂了那么整个服务都将瘫痪。所以一般有两种方式去报操作系统的可靠性:

  1. 先做RAID,然后再做系统。
  2. 在存储设备做RAID,在RAID的基础上闯将逻辑卷(LUN)系统装在LUN上。如此做法即使主机挂了,换一个主机再映射这个LUN数据和系统依然在。

LUN逻辑卷

企业使用时,一般是将多个磁盘先通过RAID技术做一个大的物理硬盘,在RAID的基础上可以创建多个逻辑卷(LUN),这个LUN对于存储设备来讲可以当作是个逻辑分区,而这个LUN在主机中认为它是一块磁盘(块设备)。
LUN是一个存储设备中的逻辑分区,但是可以作为一个独立的块设备映射给主机。
LUN通常情况下作为服务器的数据盘
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值