嗨,大家好,之前都是00年的那个运维在讲故事,今天由小老弟来给大家讲一讲服务器的存储类型。为什么要讲这个?因为之前发生了一个事情,后来我们花了好久的时间,给老板解释了下为啥要用固态盘,为啥固态盘贵,讲的我们满身大汗,为了大家以后遇见这个场景不用像我们一样耗费口舌、声嘶力竭、精疲力尽的去解释,今天我好好说说存储的事情,以后大家遇见了,直接贴本文章。


存储类型--磁盘
按照存储介质分类
磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。
第一类,机械磁盘,也称为硬盘驱动器(Hard Disk Driver),通常缩写为 HDD。磁盘有多个盘片,每个盘片双面存储。磁道(Track)磁头(Head)在盘片上画出的不同半径的同心圆。柱面(Cylinder)全部盘片相同磁道组成的圆柱侧面。柱面是从0开始编号,由外向内。柱面越靠外,吞吐量越大。(因为越靠外转动的线速度越大。扇区(Sector)盘片上的扇形区域。每个扇区512字节。是硬盘的基本单位。从1开始编号。每个扇区中的数据作为一个单元同时读出或写入。硬盘的0柱面0磁头1扇区是系统启动时首先读取的扇区。我们从机械磁盘的原理得知,在读写数据之前,需要移动读写磁头,定位到数据所在的磁道,然后才能访问数据。
显而易见的是,如果 I/O 请求刚好连续,那就不需要磁道寻址,自然可以获得最佳性能。这其实就是我们熟悉的,连续 I/O 的工作原理。与之相对应的,当然就是随机 I/O,它需要不停地移动磁头,来定位数据位置,所以读写速度就会比较慢。
所以研究了很多方法,来降低磁头寻道或者等待磁片旋转的时间,如下所述。
缓存:彻底消除I/O 文件系统的布局和行为,包括写时复制(文件系统会把连续的扇区或页,组成逻辑块,然后以逻辑块作为最小单元来管理数据。常见的逻辑块的大小是 4KB,也就是说,连续 8 个扇区,或者单独的一个页,都可以组成一个逻辑块) 预写式日志(Write-Ahead logging,缩写 WAL) 把不同的负载分散到不同的磁盘,避免不同负载之间的寻道。 缩短行程,只把磁盘外侧的磁道用来使用(Google 早年用家用 PC 乃至二手的硬件,通过软件层面的设计来解决可靠性和性能的问题。) 寻道算法
第二类,固态磁盘(Solid State Disk),通常缩写为 SSD,由固态电子元器件组成。它没有机械运动的限制,所以在读写数据时速度更快,访问时间更短,响应更迅速。不管是连续 I/O,还是随机 I/O 的性能,都比机械磁盘要好得多。
我们看到无论机械磁盘,还是固态磁盘,相同磁盘的随机 I/O 都要比连续 I/O 慢很多,原因也很明显。
对机械磁盘来说,我们刚刚提到过的,由于随机 I/O 需要更多的磁头寻道和盘片旋转,它的性能自然要比连续 I/O 慢。 对固态磁盘来说,虽然它的随机性能比机械硬盘好很多,但同样存在“先擦除再写入”的限制。随机读写会导致大量的垃圾回收,所以相对应的,随机 I/O 的性能比起连续 I/O 来,也还是差了很多。 连续 I/O 还可以通过预读的方式,来减少 I/O 请求的次数,这也是其性能优异的一个原因。很多性能优化的方案,也都会从这个角度出发,来优化 I/O 性能。
此外,机械磁盘和固态磁盘还分别有一个最小的读写单位。
机械磁盘的最小读写单位是扇区,一般大小为 512 字节。 固态磁盘的最小读写单位是页,通常大小是 4KB、8KB 等。
按照接口分类
可以把硬盘分为
ATA(Advanced Technology Attachment)、是IDE(Integrated DriveElectronics)硬盘的特定接口标准。 SCSI(Small Computer System Interface) 、是一种专门为小型计算机系统设计的存储单元接口。 SAS(Serial Attached SCSI) 、串行连接SCSI。 SATA(Serial ATA) 、串行ATA协议。 FC(Fibre Channel)、是光纤对接的一种接口标准形式的接口。 NVMe(Non Volatile Memory Host Controller Interface Specification,缩写:NVMHCIS)适用于闪存和下一代固态硬盘 (SSD) 的新型存储访问和传输协议。
存储类型--存储阵列
磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。从而可以提高数据访问的性能,并且增强数据存储的可靠性。根据容量、性能和可靠性需求的不同,RAID 一般可以划分为多个级别,如 RAID0、RAID1、RAID5、RAID6 等。
以下是常见的RAID的性能、高可用的对比。根据成本/性能/可用性来考虑使用哪一种存储阵列。

存储类型--网络连接存储
通过将这些磁盘组合成一个网络存储集群,再通过 NFS、SMB/CIFS、iSCSI 等网络存储协议,暴露给服务器使用。这些是单独的系统,应该被独立分析。有些性能分析可以在客户端进行,以检查负载和I/O延时。网络的性能也是需要考虑的因素,问题可能出在网络拥塞上。
磁盘在linux中是一个普通文件--设备文件
在 Linux 中,磁盘实际上是作为一个块设备来管理的,也就是以块为单位读写数据,并且支持随机读写。每个块设备都会被赋予两个设备号,分别是主、次设备号。主设备号用在驱动程序中,用来区分设备类型;而次设备号则是用来给多个同类设备编号。
比如我们前面用到的 dev/sda ,还可以分成两个分区 /dev/sda1 和 /dev/sda2。
总结
总的来说,大家给老板解释就这么说 存储类型主要分为三类:磁盘,存储阵列,网络连接存储 选择储存类型主要从价格、容量、性能、稳定性考虑使用什么存储类型。比如:1.追求速度建议使用固态硬盘,保证业务查询速度;如果需要大量存储数据,机械硬盘更为适合,价格便宜。
2.企业用户可将企业公共资料统一集中的存放在网络连接存储中,这样局域网内的每个人都可以看到,查找方便,不仅节省了时间,也提高了整体的工作效率。
3.存储阵列可以扩大硬盘容量,提高存储子系统的数据可靠性、传输性能和 I/O 吞吐能力。
下期预告
关于磁盘的性能检查
当遇到I/O性能问题时,我们主要是找到如下问题的答案。
1.系统磁盘的IOPS是多少?每个磁盘呢?
2.系统磁盘的吞吐量是多少?每个磁盘的吞吐量?
3.磁盘的使用率是多少呢?
4.哪个应用程序或者用户正在使用磁盘?
5.哪个文件系统或者文件正在被访问?




