Linux磁盘简介「建议收藏」

Linux磁盘简介「建议收藏」转载请标明出处:http://blog.csdn.net/forezp/article/details/94174577本文出自方志朋的博客个人博客纯净版:https://www.fangzhipeng.com/db/2019/09/10/linux-disc.html本文主要从以下几个方面介绍Linux磁盘:磁盘的接口硬盘的设备名称文件系统RAID独立冗余磁盘阵列磁盘…

大家好,又见面了,我是你们的朋友全栈君。

转载请标明出处:
http://blog.csdn.net/forezp/article/details/101986453
本文出自方志朋的博客

个人博客纯净版:https://www.fangzhipeng.com/db/2019/09/10/linux-disc.html

本文主要从以下几个方面介绍Linux磁盘:

  • 磁盘的接口
  • 硬盘的设备名称
  • 文件系统
  • RAID独立冗余磁盘阵列

磁盘的接口

现在磁盘最常用的可简单分为普通的机械盘和SSD(Solid-state drive或Solid-state disk)两种,他们都已不同的接口协议和主板链接,在了解命令之前,我们先来看下,现在服务器磁盘的接口协议。这样可以更好的了解磁盘。

现阶段磁盘的接口主要有以下几种:

ATA

全称Advanced Technology Attachment,是用传统的40-pin并口数据线连接主板与硬盘的,接口速度最大为133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利计算机内部散热,已逐渐被SATA所取代。

SATA

全称Serial ATA,也就是使用串口的ATA接口,特点是抗干扰性强,对数据线的要求比ATA低很多,且支持热插拔等功能。SATA-II的接口速度为300MiB/s,而新的SATA-III标准可达到600MiB/s的传输速度。SATA的数据线也比ATA的细得多,有利于机箱内的空气流通,整理线材也比较方便。

SCSI

全称Small Computer System Interface(小型机系统接口),经历多代的发展,从早期的SCSI-II,到当前的Ultra320 SCSI以及Fiber-Channel(光纤通道),接口型式也多种多样。SCSI硬盘广为工作站级个人计算机以及服务器所使用,因此会使用较为先进的技术,如碟片转速15000rpm的高转速,且资料传输时CPU占用率较低,但是单价也比相同容量的ATA及SATA硬盘更加昂贵。

SAS

全称Serial Attached SCSI,是新一代的SCSI技术,可兼容SATA硬盘,都是采取序列式技术以获得更高的传输速度,可达到12Gb/s。此外也透过缩小连接线改善系统内部空间等。

此外,由于SAS硬盘可以与SATA硬盘共享同样的背板,因此在同一个SAS存储系统中,可以用SATA硬盘来取代部分昂贵的SAS硬盘,节省整体的存储成本。但SATA存储系统并不能连接SAS硬盘。

FC

全称Fibre Channel(光纤通道接口),拥有此接口的硬盘在使用光纤联接时具有热插拔性、高速带宽(4Gb/s或10Gb/s)、远程连接等特点;内部传输速率也比普通硬盘更高。但其价格高昂,因此FC接口通常只用于高端服务器领域。

现在,普通机械盘接口多为SATA,固态盘接口多为SAS。更多磁盘知识可参考Wiki百科

硬盘设备名称

在linux中世界中,一切皆文件,设备也是文件。系统内核中的 udev 设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev 设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。

linux的硬盘设备SCSI/SATA/U 盘,它的文件名称为/dev/sd[a-p],系统采用 a-p来表示16块不同的硬盘,硬盘的分区也是有讲究的,主分区或扩展分区为编号1-4,逻辑分区是从编号5开始。

11.png

文件系统

用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依 靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux 系统支持数十种的文件系统,而最常见的文件系统如下所示。

  • Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并 能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也 会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入 动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分, 然后尝试进行修复。

  • Ext4:Ext3 的改进版本,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容 量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系 统能够批量分配 block 块,从而极大地提高了读写效率。

  • XFS:是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,它的 优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的 日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB, 这几乎满足了所有需求。

计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用
关心底层的硬盘结构,Linux 内核中的软件层为用户程序提供了一个 VFS(Virtual File System, 虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作 了。如图所示为 VFS 的架构示意图。从中可见,
实际文件系统在 VFS 下隐藏了自己的特性 和细节,这样用户在日常使用时会觉得“文件系统都是一样的”,也就可以随意使用各种命令 在任何文件系统中进行各种操作了(比如使用 cp 命令来复制文件)。

WX20190909-225358@2x.png

添加磁盘设备

在实际的生产环境中,在虚拟机扩容磁盘是非常常见的,虚拟机一般有一个系统盘,还有大容量存储的数据盘。在虚拟机中添加磁盘设备,需要进行格式化、挂载等操作,最后通过检查系统的挂载状态来验证硬盘设备是否成功添加。
格式化磁盘可以用mkfs命令–>make filesystem的缩写;用来在特定的分区格式化并建立Linux文件系统。
在Shell 终端中输入mkfs 名后再敲击两下用于补齐命令的Tab键,会有如下所示的效果:

[root@fzp~]# mkfs
mkfs         mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.fat     mkfs.minix   mkfs.msdos   mkfs.vfat    mkfs.xfs   

这个mkfs 命令把常用的文件系统名称用后缀的方式保存成了多个命令文件,用起来也非常简单。

[root@fzp~]# mkfs.ext3 /dev/sda

上面的命令格式化了存储设备,并创建了文件系统。接下来就是要来挂载并使用存储设备了。需要创建一个挂载目录,比如/data目录,然后用mount命令,首先是创建一个用于挂载设备的挂载点目录;然后使用mount 命
令将存储设备与挂载点进行关联;最后使用df -h 命令来查看挂载状态和硬盘使用量信息。

[root@fzp ~]# mkdir /data
[root@fzp ~]# mount /dev/sda /data/
[root@fzp ~]# df -h
/dev/sdb1 200G 33M 200G 1% /data

RAID独立冗余磁盘阵列

RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)。

RAID 技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。

使用Raid需要额外的存储设备,增加了成本。但RAID 不仅降低了硬盘设备损坏后丢失数据的几率,还提升了硬盘设备的读写速度,所以它在绝大多数运营商或大中型企业中得以广泛部署和应用。常见的RAID 磁盘阵列有十几种,最常见的为Raid0,raid1,raid5,raid10。

raid0

RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

Linux磁盘简介「建议收藏」

raid1

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作

Linux磁盘简介「建议收藏」

raid5

RAID5 应该是目前最常见的 RAID 等级,RAID5 技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。

RAID 5 磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷。

RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

Linux磁盘简介「建议收藏」

raid10

RAID 10 技术是RAID 1+RAID 0 技术的一个“组合体”。RAID 10 技术需要至少4 块硬盘来组建,其中先分别两两制作成RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个RAID1 磁盘阵列实施RAID0 技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID10 技术继承了RAID0的高读写速度和RAID1 的数据安全性,在不考虑成本的情况下RAID10 的性能都超过了RAID 5,因此当前成为广泛使用的一种存储技术。

Linux磁盘简介「建议收藏」

参考资料

https://zh.wikipedia.org/wiki/%E7%A1%AC%E7%9B%98

http://www.jiangxinlingdu.com/thought/2018/09/14/linuxio.html

https://blog.csdn.net/ensp1/article/details/81318135

书籍《linux 就该这么学》

书籍《鸟哥的Linux私房菜》

Linux磁盘简介「建议收藏」
扫码关注有惊喜

(转载本站文章请注明作者和出处 方志朋的博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140431.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • VB学习之路 ——基本语句

    VB学习之路 ——基本语句一:选择结构问题总结1.一个很简单的If(表达式)……..Then的问题,在VB的程序编写时候,如果在if….Then后面只有一条需要执行的语句,并且将执行的一条语句直接放在了Then的后面,则不需要后面加上EndIf,加上就报错。即使要执行的语句有多条如果非要放在Then后面不加EndIf就必须每条语句之间用冒号间隔。如果将执行的语句放在了Then的后面,即…

  • 关于numpy的astype(bool)和astype(int)等等[通俗易懂]

    关于numpy的astype(bool)和astype(int)等等[通俗易懂]关于numpy的astype(bool)和astype(int)等等importnumpyasnpa=[[1,2,1],[2,3,5]]b=[[0,0,0],[2,3,5]]c=np.array(a)d=np.array(b)print(c)print(d)就是简单的把list列表转化为数组然后看看加了.astype(bool)是什么意思?正如astype的中文意思,…

  • js有哪些异步操作_js单线程怎么实现异步

    js有哪些异步操作_js单线程怎么实现异步JS常用的几种异步流程控制

  • android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams

    android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParamsFrameLayout的父控件是一个LinearLayout控件,问题出在,LinearLayout为子控件分配空间的时候,获取FrameLayout的LayoutParams的必须为LinearLayout.LayoutParams,而非FrameLayout.LayoutParams。     简单的举个栗子说明一下:最外层有ReLativeLayoutA,里面有两个Lin

  • SNAP7 C++ 通讯

    SNAP7 C++ 通讯 静态调用的dll的一个实例2017年11月17日09:49:18 净无邪 阅读数:334版权声明:本文为博主原创文章,欢迎各位朋友转载。转载时,保留链接地址!https://blog.csdn.net/naibozhuan3744/article/details/78557761本实例主要分为三部分。第一部分:vs2013的配置,第二部分:snap7的dll常用函数何功能的介…

  • MySQL性能优化

    MySQL性能优化

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号