暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

科普个啥--大哥,要盘不?(1)

运维开发故事 2023-08-18
140

嗨,大家好,之前都是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.哪个文件系统或者文件正在被访问?


文章转载自运维开发故事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论