Linux磁盘管理
一、磁盘基础知识
“磁盘”和“硬盘”是两个常用的存储设备名词,容易混淆。磁盘是一个广泛的概念,用来描述一种存储数据的物理媒介。事实上,“硬盘”通常指的就是“磁盘硬盘”。磁盘是一个广泛的概念,用来描述一种存储数据的物理媒介。磁盘和硬盘并不是一个概念,但是两者又是相互交叉的。
磁盘,是计算机的外部存储器中类似磁带的装置,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。磁盘有软磁盘,硬磁盘。硬磁盘就是机械硬盘。
硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。
一般的电脑有一个硬盘,正常情况下,一台电脑只有一块硬盘,用于存储数据安装操作系统和应用软件,但是目前有一种趋势采用的是固态硬盘加机械硬盘的结构,将操作系统和应用程序安装与固态硬盘内,将数据存储于机械硬盘,这样既能体现固态硬盘的速度,又能体现机械硬盘的容量。(1块固态+1块机械 120G→C盘系统盘 机械1T→ 存储数据)
1、磁盘分类
① 机械硬盘:机械硬盘是一种传统的存储设备,它的核心部分是一个不断旋转的磁盘,数据则以磁性方式记录在磁盘表面上。机械硬盘内部有盘片,读写机械运动,速度相对较慢,但价格较为便宜没有寿命限制。
② 固态硬盘:固态硬盘(SSD)内部是板卡使用闪存芯片作为数据存储介质,相比机械硬盘具有更快的读写速度,更稳定的性能和更低的能耗。但是价格相对较高,有寿命限制。(笔记本通常用nvme,服务器一般nvme、pci-e都有)
③ 光盘:光盘是一种通过激光读取数据的存储介质,可以分为CD、DVD、蓝光光盘等不同类型。光盘主要用于存储音视频、软件等数据,但容量相对较小。
④ U盘:U盘是一种便携式存储设备,通过USB接口与电脑连接。U盘具有体积小、便携、数据传输速度快等优点,适合移动办公和数据传输。
⑤ 外接硬盘:外接硬盘可以通过USB等接口与电脑连接,是一种可移动存储设备。它的容量相对较大,价格也比较实惠,适合备份重要数据和大文件的存储。
2、磁盘接口
IDE接口 已经淘汰。
IDE(Integrated Drive Electronics)接口是一种较早的硬盘接口类型,它通常用于连接IDE接口的硬盘、光驱、DVD/CD读写器等设备。IDE接口在台式机中广泛使用,但现在已经被SATA接口所取代。
SCSI 已经淘汰。
SCSI(Small Computer System Interface)接口是一种较为专业的硬盘接口类型,通常用于连接服务器或其他高端计算机系统。SCSI接口的传输速率可以达到320Mbps,而且可以同时连接多个硬盘或其他外围设备,因此非常适用于需要大量数据处理和存储的应用场景。SCSI接口的缺点在于其复杂性较高,需要专业知识进行配置和安装,同时SCSI接口的设备通常价格较高,这使得其在普通用户中使用较少。
目前最常用的硬盘接口类型。
最初的SATA接口传输速率为1.5Gbps,而SATA 2.0的传输速率为3.0Gbps,SATA 3.0的传输速率则提高到了6.0Gbps。这种接口类型可以用于连接硬盘、光驱、DVD/CD读写器等设备,因此广泛用于台式机和笔记本电脑中。SATA接口的优势在于其传输速率较快,而且==支持热插拔。==此外,SATA接口还具有较小的接口尺寸,这使得硬盘的安装变得更加简便。常见使用设备:台式机、笔记本、测试服务器、内部存储服务器。
企业服务器的标配。
SAS(Serial Attached SCSI)接口是一种新型的硬盘接口类型,它是SCSI接口的一种变体,同时结合了Serial ATA(SATA)接口的优势。SAS接口支持多个设备的连接,并且可以实现热插拔功能。此外,SAS接口的传输速率可以达到6Gbps,比SATA接口更快。通常用于数据中心和服务器等需要高可靠性和高性能的场合。
关于SATA接口和SAS接口的讲解,我在小破站给大家抓来了一个宝藏博主四火的解释,大家感兴趣可以了解一下🔍 为什么SATA硬盘还没被淘汰?SAS接口又是什么?——前进的四火
3、磁盘转速
硬盘的转速越快,硬盘寻找文件的速度也就越快,相对的硬盘的传输速度也就得到了提高。硬盘转速以每分钟多少转来表示,单位表示为RPM,RPM是Revolutions per minute的缩写,是转/每分钟。RPM值越大,内部传输率就越快,访问时间就越短,硬盘的整体性能也就越好。硬盘的主轴马达带动盘片高速旋转,产生浮力使磁头飘浮在盘片上方。要将所要存取资料的扇区带到磁头下方,转速越快,则等待时间也就越短。因此转速在很大程度上决定了硬盘的速度。
企业中机械较多: 存储大,稳定,22T, 7200/每分钟;
家用: SATA,5400 7200 10000/每分钟;
企业对内:SATA or SAS,7.2K、10K ,存储、测试用,转速低、容量大、成本低;
企业对外: SAS+SATA,SAS 900G/15K 900Gx8块 / 900Gx6块 / 600Gx8块 / 600Gx6块, 转速块、容量小、成本高;
二、RAID磁盘阵列
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是:一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID (即 RAID0 )。
RAID 的两个关键目标是提高数据可靠性和 I/O 性能。RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )。
1、RAID0
RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。
RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。
2、RAID1
RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
3、RAID5
RAID5 应该是目前最常见的 RAID 等级,校验数据分布在阵列中的所有磁盘上。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。
RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
4、RAID10
RAID10是 RAID1RAID 0 的结合,RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力。
5、RAID 视频解释
三、Linux磁盘分区
假如你有个大木桶要装东西,如果木桶没有划分层,所有东西全部放入里面,虽然可以装,但是对大木桶的使用就合不合理,造成杂乱无章,寻找东西时候也耗时,甚至还有不同物品之间不能存放在一起而导致危险,那更好的做法自然是给大木桶画一下不同的区域,分成不同的层,每个层放不同的东西,即安全,寻找起来也方便;
计算机的磁盘(也叫硬盘)也是如此,为了区分存储内容的不同,以及快速定位寻址文件,也需要采取分区的形式;
1、磁盘分区的意义
不论磁盘的分区还是数据库表的分区以及其它的分区,核心思想和分区的目的基本都一致,可以概括以下两点原因;
数据的安全性隔离:因为每个分区是独立分开的,所以当你需要重现格式化或数据重新填充分区A时,分区B并不会受影响,这就是为啥你Windows重装系统的话,一般只是C盘重新载入新系统数据,而其他的D,E,F盘并不会受影响;
系统的效率考虑:加快数据寻址的效率,当你只有一块分区时,找数据文件a你得重头找到尾部,但是当你分区了,操作系统会记录文件的绝对路径,你就可以直接从某个分区下去找,大大提升了速度和效率;
MBR和GPT格式
通常我们用的比较多的分区工具是fdisk
命令,但由于fdisk
只支持MBR分区,MBR分区表最大支撑2T的磁盘,所以无法划分大于2T的分区。而parted
工具可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区。
MBR: MBR分区表(即主引导记录)大家都很熟悉。所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区
GPT: GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。突破 MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。
2、对小于2T的磁盘进行分区(fdisk)
① 右键自己的虚拟机,点击设置,插入一块20G的磁盘(开辟房屋地基);
点击完成即可,可以发现硬件设备增加了一块新的硬盘;
② 重启虚拟机(物理机不需要重启、阿里云服务器支持在线扩容也不需要重启),使用 fdisk -l
命令查看磁盘列表;
③ 磁盘分区(设置房屋隔板;如厨房、卧室)
再使用 fdisk -l 查看磁盘列表时,就会显示我们创建的第一个主分区(/dev/sdb1
)了
1 | [root@localhost ~]#fdisk -l |
④ 格式化分区(选择装修风格、清理房间)
格式化分区的格式化类型?
1
2
3 [root@localhost ~]#mkfs. # 格式化的类型有很多,我们选择xfs
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.xfs
mkfs.cramfs mkfs.ext3 mkfs.minixExt,全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过为了快速恢复文件系统,减少一致性检查的时间,增加了日志功能,所以Ext2被称为索引式文件系统 ,而Ext3/Ext4被称为日志式文件系统 。
XFS,从centos7开始,默认的文件系统从ext4变成了XFS。随着虚拟化的应用越来越广泛,作为虚拟化磁盘来源的大文件(单个文件几GB级别)越来越常见。XFS每个单个文件系统量最大支持8eb,单个文件可以支持16tb因此,centos7开始,默认的文件系统就从EXT4变为了XFS。XFS是一个适合高容量磁盘与巨型文件的文件系统。
ext2具有极快的速度和极小的CPU占用率,可用于硬盘和移动存储设备
ext3增加日志功能,可回溯追踪
ext4日志式文件系统,支持1EB(1024*1024TB),最大单文件16TB,支持连续写入可减少文件碎片。rhel6默认文件系统,rhel7默认文件系统。
xfs可以管理500T的硬盘。
brtfs文件系统针对固态盘做优化;
⑤ 挂载使用(可以住人了)
交互式创建磁盘分区时的常用命令:
命令 | 描述 | 功能 |
---|---|---|
m | print this menu | 打印帮助菜单 |
n | add a new partition | 创建新分区 |
p | print the partition table | 打印分区表 |
l | list known partition types | 列出分区类型 |
d | delete a partition | 删除一个分区 |
q | quit without saving changes | 退出不保存 |
w | write table to disk and exit | 保存并退出 |
坑洞警告
在我创建磁盘分区的时候,出现了一个这样的问题,保存分区操作时显示设备或资源繁忙,导致我无法创建分区,提醒我可能需要重启。重启确实解决问题了,但是真正的问题出在哪里,有没有更合理的解决办法呢???
3、对大于2T的磁盘进行分区(parted)
parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具。GPT格式的磁盘相当于原来MBR磁盘中原来保留4个partition table的4 16个字节,只留第一个16个字节,类似于扩展分区,真正的partition table在512字节之后,GPT分区方式没有四个主分区的限制,最多可达到128个主分区。下面我们看下parted命令的用法。
① 给虚拟机新增一个大于2T的磁盘,它与fdisk创建磁盘分区非常类似,只是使用的命令有所不同罢了,我们可以很快的熟悉一下分区的流程。
② 磁盘分区;Linux中使用parted工具,可以把分区分为GPT和MBR格式,我们把磁盘标记为GPT格式,然后再开始分区mkpart
;start 为文件开始位,end 为结束位。我们下面分区的开始位置为0,会有一个错误提示warning(无影响),我们可以直接忽略,因为文件不可能直接就从磁盘的起始位置开始读写,他会有一个数据偏移(0扇区中的遗留主引导记录(MBR)和紧随其后的GPT主表),如果不想出现这样的提示,我们可以前面给他留1MiB的偏移量,或者使用百分比的方式设置开始结束位置,目的是为了让数据块整齐,提高磁盘的运行效率。
不需要分区格式化就可以直接在磁盘列表上显示分区信息;
③ 格式化磁盘分区;(与前的 fdisk 分区时格式化的指令是一样的)
④ 挂载磁盘分区;(mount
挂载、umount
卸载)
我们也可以不使用交互直接给磁盘进行分区,避免繁琐的交互提示,前提是命令要书写正确哦😄 ~
1 | 在shell命令行直接分区: |
挂载分区的时候,一定要记得先将分区格式化,否则系统是不允许挂的!!!
当你为错过太阳而哭泣的时候,你也要再错过群星了。
——泰戈尔