存储技术网络存储设备根据存储技术的不同,主要分为三类:DAS(Direct Attached Storage)、NAS(Network Attached Storage)和SAN(Storage Area Network)。
NAS与NAS的主要区别体现在操作系统在什么位置。如下图所示: NAS和SAN的区别:
三种技术比较: 存储方式
iSCSI协议ISCSI与FC并列为两大标准的块级传输协议。成本昂贵,是部署光纤存储区域网络(FC SAN )的最大缺点。
iSCSI和FC比较:
scale up 和 scale out什么是scale up 和 scale out? 常见的系统扩展方式有scale up和scale out两种: Scale Up(纵向扩展) 主要是利用现有的存储系统,通过不断增加存储容量来满足数据增长的需求。 但是这种方式只增加了容量,而带宽和计算能力并没有相应的增加。 Scale-out(横向扩展)架构的升级通常是以节点为单位,每个节点往往将包含容量、处理能力和I / O带宽。一个节点被添加到存储系统,系统中的三种资源将同时升级。 一个比较形象的鱼缸比喻:
write back和write through这里引用smartcache的关于它两的定义: Write-through Cache Policy: The goal of write-through caching is to accelerate the read operations. All write operations go to Primary Source (HDDs); write operations may also go to the Cache (SSDs). Thus the write operations may be slower compared to a configuration without Write-through Cache Write-back Cache Policy: The goal of write-back caching is to accelerate both read and write operations. Writes may be cached on the Cache (SSDs) and written to the Primary Storage (HDDs) at a later point of time. 翻译: write-back的优缺点: RAIDRAID(Redundant Array of Inexpensive Disks)称为廉价磁盘冗余阵列。RAID 的基本原理是把多个便宜的小磁盘组合到一起,成为一个磁盘组,使性能达到或超过一个容量巨大、价格昂贵的磁盘。 RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。
RAID级别对比: 其他还有RAID 6、7、5E、5EE、DP、ADG之类的就不一一介绍了。每种RAID的详细介绍网上一搜一堆,之一。 RAID 5 和 RAID 10 对比RAID 0、10、5、ADG对比表格: 上表在可用磁盘空间计算,假设以下条件成立: 一般raid5会多配一块热备盘,因为raid5本身只允许有1块磁盘损坏,而raid10,每组允许损坏1块,2组就是各1块,4组就是各4块,但是同组内不允许有2块损坏。 读方面:磁盘阵列读操作的关键更多的体现在cache的命中率上。所以,RAID5和RAID10在读数据上面,他们基本是没有差别的。 连续写:在连续写操作过程,如果有写cache存在,并且算法没有问题的话,RAID5比RAID10甚至会更好一些,差别不大,因为这个时候的RAID校验是在cache中完成,如4块盘的RAID5,可以先在内存中计算好校验,同时写入3个数据 1个校验。而RAID10只能同时写入2个数据 2个镜相。如果没有写缓存存在,RAID5写性能不如10。 随机写:假定要把一个数字2变成数字4,那么对于RAID5,实际发生了4次io:
对于RAID10,同样的单个操作,最终RAID10只需要2个io,而RAID5需要4个io。这里考虑的是没有缓存的情况。 总结:小io的数据库类型操作,建议采用RAID10,而大型文件存储,数据仓库,则从空间利用的角度,可以采用RAID5。 LUN的概念lun的全称是logical unit number,也就是逻辑单元号。 scsi总线上可挂接的设备数量是有限的,一般为6个或者15个,我们可以用target ID(也有称为scsi id的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了。 实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了lun的概念,也就是说lun id的作用就是扩充了target id。每个target下都可以有多个lun device,我们通常简称lun device为lun,这样就可以说每个设备的描述就有原来的target x变成target x lun y了,那么显而易见的,我们描述设备的能力增强了 lun id不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的lun可能是磁盘空间,可能是磁带机,或者是media changer等等. 块设备系统能够随机访问固定大小数据片(chuncks)的硬件设备称作块设备。这些固定大小的数据片称作块。它们都是以安装文件系统的方式使用的,这也是块设备一般的访问方式。 块设备中最小的可寻址单元是扇区。扇区大小一般为2的整数倍,最常见的是512字节。扇区是所有块设备的基本单元。 软件都会用到自己的最小逻辑可寻址单元“块”。块是文件系统的一种抽象,只能基于块来访问文件系统。 虽然物理磁盘寻址是按照扇区级进行的,但是内核执行的所有磁盘操作都是按照块进行的。块数是扇区大小的2的整数倍,并且小于页面大小。所以通常块大小是512字节,1KB, 4KB。
buffer_head当一个块被调入内存时,它要存储在一个缓冲区中,每个缓冲区与一个块对应,它相当于是磁盘块在内存中的表示。 内核在处理数据时需要一些相关的控制信息,每一个缓冲区都有一个对应的描述符,用buffer_head结构体表示,称作缓冲区头。在文件 缓冲区头的目的在于描述磁盘块和物理内存缓冲区之间的映射关系。这个结构体在内核中只扮演一个描述符的角色,说明从缓冲区到块的映射关系。也说明其所描述块的状态(脏,干净,过期等)。它并不与底层的块驱动程序打交道。 弊端: bio目前内核中块I/O操作的基本容器由bio结构体表示,定义在 bio结构体中最重要的几个域是bi_io_vec、bi_vec、和bi_index,如下图所示: 每一个块I/O请求都是通过一个bio结构体表示。每个请求包含一个或多个块,这些块储存在bio_vec结构体数组中。 buffer_head是用来管理buffer,而bio是用来传输buffer的。bio为通用层的主要数据结构,既描述了磁盘的位置,又描述了内存的位置,是上层内核vfs与下层驱动的连接纽带。 sync 和 fsyncsync只是将所有修改过的块的缓存排入写队列,然后就返回,它并不等待实际I/O操作结束。相当于是异步的。 fsync只引用单个文件,它等待I/O结束,然后返回。相当于同步操作。 当将数据写到文件上时,通常该数据先由内核复制到缓存中,如果该缓存尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓存以便存放其他磁盘块数据时,再将该缓存排入输出队列,然后待其到达队首时,才进行实际的I/O操作。这种输出方式被称之为延迟写(delayed write)。
运维人的精彩,尽在 GOPS 2019 · 深圳站 4.12-13,名企运维专家 相聚 GOPS 与您畅聊运维管理、转型
|
|
来自: 昵称48052010 > 《待分类》