目录
一·故事背景
在学习完权限相关知识后,紧接着是操作系统中的磁盘管理,最开始的内容大多是了解,真正需要掌握的是最后的磁盘创建以及分区挂载等操作。
二·硬盘介绍
文件系统是Linux系统的核心,在Linux系统中,一切皆文件。对于开发者而言,编程过程中通常用到的是文件IO。本文件系统系列文章主要尝试针对的是这部分内容进行深入的讲解。
文件最终是存储在磁盘上,文件的存取,最终是读写磁盘。
1·硬盘的物理结构
①硬盘结构
其中:
-
每个盘片有两面,两面都可以存储数据。
-
每个盘面都有一个磁头,用于存取数据。
-
所有磁头都是固定的,一起做物理移动。但是每次只有一个磁头执行存取数据的任务,选择使用哪个磁头是由系统控制的。磁头间的切换非常迅速,而磁头摆动寻道则比较慢。
-
磁头摆动,找到要读取数据所在的磁道;盘片通过转动,将数据“送到”磁头下。
②磁头数、磁道、柱面、扇区
-
磁头数: 每个盘面都有一个磁头,因此磁头数 = 盘面数。
-
磁道: 上以盘片轴心为圆心,不同半径的同心圆称为磁道,磁道不是真正肉眼可看见的一道一道“坑”,而是被磁盘上被磁化的区域,磁道之间有一定的间隙,以免磁道之间磁介质相互影响。
-
扇区: 每个磁道被等分为若干个弧段(扇区),每个扇区可以存放512个字节的数据。扇区是磁盘驱动器向磁盘读写数据的最小单元。
-
柱面: 不同盘片半径相同的磁道组成的一个“柱面”。
2·CHS编号
所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区)。每个柱面、磁头、扇区都有自己的编号。
①磁道编号规则
-
磁头编号: 从上到下,分别为磁头0号,磁头1号......
-
柱面编号: 最外圈的柱面编号为0,往里依次递增1,2,3.....
②扇区编号规则
每个磁道都可以被分为若干个扇区,假设有18个扇区,编号依次为1,... 18。这里的1...18在一个磁道中是唯一的,但不同磁道之间会重复。因此,要确定一个扇区在硬盘(多个盘片)中的具体位置,则需要结合柱面号/磁头号/扇区号来确定——绝对扇区编号,或者是为整个硬盘的所有扇区分配一个唯一的编号——DOS扇区编号(也称为相对扇区编号或逻辑扇区编号)。
-
绝对扇区: 由柱面号/磁头号/扇区号唯一确定。
-
DOS(Disk Operating System)扇区(逻辑扇区): 磁盘操作系统为了管理方便,会将柱面号/磁头号/扇区号确定的扇区编号转换为易于管理和计算的单一数字编号,称为相对扇区编号或逻辑扇区编号。DOS扇区编号是从柱面0/磁头0/扇区1开始的,编号为0,依次递增,即柱面0/磁头0/扇区18的DOS扇区编号为18;柱面0/磁头1/扇区1的DOS扇区编号为19...。每个分区的第一个扇区的逻辑扇区编号为0。
③通过CHS计算硬盘容量
硬盘存储容量=磁头数×柱面数×每个磁道扇区数×每个扇区字节数
3·磁盘存储划分
①第一个扇区存储的数据
硬盘的第一个扇区(逻辑编号为0)可以说是整个硬盘最重要扇区了,它主要存储两大信息:
-
主引导分区(Master Boot Record,MBR): 存放引导加载程序,大小为446字节。
-
分区表(partition table): 记录整块硬盘分区的状态,占64字节,每一个分区信息占16个字节。
②硬盘分区
分区的最小单位为柱面(Cylinder),也就是说,分区其实就是指定从第几个柱面到第几个柱面属于哪个区。
假设硬盘有400个柱面,平均分为4个区(C、D、E、F盘),则第四个分区F的柱面范围是第301号到第400号柱面。
分区表中,记录的就是就是每个分区的起始柱面号和结束柱面号。因为分区表只有64字节,因此最多只能容纳4个分区的记录(硬盘默认),要想分更多的去,则需要通过扩展分区来创建逻辑分区。
4·开机流程
-
加载BIOS: BIOS(Base Input Output System,基本输入输出系统,读做/'baious/)是硬件厂商写入到主板ROM里的一个程序,电脑开机时,会最先执行BIOS。
-
MBR: BIOS在执行的过程中,会根据用户设置(即在BIOS的Boot界面选择的优先启动项,U盘/硬盘/光驱),如果硬盘的优先级最高,则计算机会从硬盘的第一个扇区的MBR中的读取引导加载程序(Boot Loader)。和BIOS一样,主引导分区MBR是硬件本身会支持的东西。
-
引导加载程序:引导加载程序(Boot Loader)是用于读取操作系统内核文件的一个小软件,不同的操作系统有各自的引导加载程序。每个分区都可以有自己的文件系统,有自己的引导扇区,在启动的过程中,用户可以选择是直接加载引导程序所在分区的操作系统,还是将引导加载功能交给各分区引导扇区中的加载程序。boot loader的功能主要有:
-
提供菜单:让用户选择不同的开机选项,是多重引导的重要功能。
-
载入内核文件:直接指向可开机的程序区段,开始操作系统。
-
转交其他loader: 将引导加载功能转交给其他loader负责。
-
-
操作系统内核文件:最后,引导加载程序加载操作系统的内核文件,启动操作系统!
5·总结重点
-
每个分区都有自己的引导扇区(boot sector)。
-
实际可开机的操作系统内核文件是存放在各个分区内的,如在C盘安装Windows系统,在D盘安装Linux操作系统。
-
引导加载程序(boot loader)只会认识自己所在分区内的可开机内核文件,以及其他boot loader(相当于一个指针,指向其他loader)。
-
loader可以直接指向或者间接地将管理权交给其他loader。
-
一点经验:如果要安装多系统,最好先安装Windows,后安装Linux。因为Windows会强制覆盖MBS,也就是说,如果你先装Linux再装Windows,MBR中就只有Windows的相关选项(Linux的被覆盖掉了)。而Linux则不会强制覆盖MBR,你可以选择将Linux的引导程序安装在MBR或者其所在分区的引导扇区中;你也可以在Linux的引导程序中设置Windows的开机选项。
6·磁盘存储数据的形式
磁盘以二进制的形式存储数据。我们平时编程过程中读写文件模式可能有文本形式/二进制形式,文件也有文本文件、音频文件、图片文件...等各种不同类型的文件,但这些文件在磁盘上都是以二进制的方式存储。
可以想像一下,二进制中的0,对应磁盘上的一个“凹”点,1对应磁盘上的一个“凸”点。
三·Linux文件系统
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。
文件系统的本质:一种方便管理、组织、访问数据的软件。
-
对于管理来说,主要是磁盘空闲空间的管理
-
对于组织来说,主要是通过引入文件(inode)、树形目录(dentry)来组织用户的数据。文件包含用户的数据、树形为用户提供了一个对数据进行分类的功能。
-
对于访问来说,通过目录+文件名的方式进行文件创建、删除、读、写(也就是所谓的增、删、查、改)。
1·根文件系统
根文件系统(rootfs)是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
2·虚拟文件系统
虚拟文件系统VFS软件抽象层为用户屏蔽了底层文件系统的差异,向上层提供了统一地访问接口。
3·真文件系统
真文件系统其实是实际存储设备的文件系统,挂载于EEPROM、 Nor FLASH、 NAND FLASH、 eMMC 等存储器中。
①ext4
EXT4是第四代扩展文件系统(Fourth extended filesystem,缩写为 ext4)是Linux系统下的日志文件系统,使用64位空间记录块数量和i-节点数量。
②xfs
XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中,目前CentOS 7将XFS+LVM作为默认的文件系统。据官方所称,XFS对于大文件的读写性能较好。
4·伪文件系统
Linux内核提供了sysfs、procfs、devtmpfs等伪文件系统,伪文件系统存在于内存,不占用硬盘。以文件地形式向用户提供一些系统信息,用户读写这些文件就可以读取、修改系统的一些信息。
①procfs
procfs是 进程文件系统的缩写,包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到 /proc 目录。
由于 /proc 不是一个真正的文件系统,它也就不占用存储空间,只是占用有限的内存。
②devtmpfs
devtmpfs 的功用是在 Linux 核心 启动早期建立一个初步的 /dev,令一般启动程序不用等待 udev(udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。),缩短 GNU/Linux 的开机时间。
如果将一个设备连接到Linux系统时,通常需要一个设备驱动程序才能正常工作。此时通过设备文件或设备节点与设备驱动程序交互,这些是看起来像普通文件的特殊文件。由于这些设备文件就像普通文件一样,所以可以使用ls、cat等程序与它们交互。这些设备文件一般存放在/dev目录下。
③sysfs
sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。sysfs 文件系统被挂载在 /sys 挂载点上。
Sysfs的目的是更好地管理系统上的设备,相比/dev目录无法做到这一点。Sysfs是一个虚拟文件系统,通常挂载在/sys目录下。它为我们提供了比在/dev目录中能够看到的更详细的信息。目录/sys和/dev在某些方面看起来非常相似,但它们确实有很大的不同。基本上,/dev目录很简单,它允许其他程序访问设备本身,而/sys文件系统用于查看信息和管理设备。
/sys文件系统基本上包含了系统中所有设备的所有信息,比如制造商和型号、设备插入的位置、设备的状态、设备的层次结构等等。在这里看到的文件不是设备节点,因此实际上并不是在/sys目录下与设备交互,而是在管理设备。
四·磁盘分区与挂载
1·磁盘分区方式
MBR
主引导记录,支持四个主分区或三主一扩展多个逻辑,每分区最大2TB,兼容性好。
GPT
是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。
假如使用MBR分区方式: 四个主分区,分别是:sda1,sda2,sda3,sda4;扩展分区:有且只能有一个,并且会占用主分区编号;
逻辑分区:基于扩展分区之上
2·分区命令
①fdisk命令
fdisk - Linux分区表操作工具软件
选项 | 作用 |
---|---|
-l | 显示系统中已安装的分区表 |
s | 显示分区的扇区数 |
-u | 显示分区的单元号 |
-c | 检查分区表是否正确 |
-d | 显示分区表中的错误 |
-n | 显示分区的起始和结束扇区号 |
-v | 显示fdisk的版本信息 |
-m | 显示分区的媒体类型 |
-u | 指定分区的单元号 |
-o | 指定分区的文件系统编号 |
-r | 从新分区表中创建一个新的根分区 |
-L | 创建逻辑分区(可选) |
-p | 显示当前分区表的状态 |
-S | 设置分区的扇区大小(可选) |
-a | 设置分区的主引导记录(MBR)类型(可选) |
②parted命令
选项 | 作用 |
---|---|
-l,--list | 列出所有块设备上的分区布局 |
-h,--help | 显示此帮助信息 |
3·查看与识别命令
①lsblk命令
lsblk - list block devices
②partprobe命令
partprobe - inform the OS of partition table changes
③blkid命令
查看磁盘分区的UUID
4·格式化命令
mkfs命令
用于格式化磁盘分区,生成指定的文件系统。格式化后分区中的数据将丢失!
选项 | 作用 |
---|---|
-t | 文件系统类型 |
-v | 产生冗长输出信息。帮助信息 |
5·挂载命令
挂载源: 磁盘分区或者文件系统
挂载点: 文件系统访问的入口,通常是目录。
①mount命令&swapon命令
mount - mount a filesystem,挂载一个文件系统;临时挂载,重启失效!
swapon:挂载swap文件系统
选项 | 作用 |
---|---|
-t | 指定要挂载的文件系统类型,常见的文件系统类型有ext4、ntfs、vfat等。 |
-o | 指定挂载选项,比如可以指定只读挂载(ro)、允许所有用户挂载(user)、允许执行程序挂载(exec)等。 |
-r | 以只读模式挂载文件系统。 |
-w | 以读写模式挂载文件系统 |
-a | 挂载/etc/fstab文件中定义的所有文件系统。 |
-n | 不重新挂载/etc/fstab文件中定义的文件系统。 |
-o remount | 重新挂载一个已经挂载的文件系统,可以改变挂载选项。 |
-o loop | 挂载一个loop设备上的文件系统。 |
②umount命令&swapoff命令
umount - 卸载文件系统
swapoff-卸载swap文件系统
选项 | 作用 |
---|---|
-a | 卸载所有可卸载文件系统 |
6·案例
①添加磁盘
点击设置中添加,选择硬盘,按推荐点击下一步即可完成添加。
②识别磁盘
添加后目前没有显示新增加的磁盘,使用for循环,将“- - -”echo进scan中,即可不重启识别磁盘。
③fdisk分区
fdisk 新建磁盘后进入m帮助
翻译
a 切换可引导标志
b 编辑 bsd 磁盘标签
c 切换 dos 兼容性标志
d 删除分区
g 创建新的空 GPT 分区表
G 创建 IRIX(SGI)分区表
l 列出已知分区类型
m 打印此菜单
n 添加新分区
o 创建新的空 DOS 分区表
p 打印分区表
q 不保存更改退出
s 创建新的空 Sun 磁盘标签
t 更改分区的系统 ID
u 更改显示/输入单位
v 验证分区表
w 将表写入磁盘并退出
x 额外功能(仅限专家
输入n进入添加新分区,默认创建主分区,分大小后,w保存退出,创建成功。
④格式化
使用mkfs命令对sdb1进行格式化。
⑤手动挂载
使用mount挂载,重启失效
⑥自动挂载
输入vim /etc/fstab 文件,在里面添加磁盘信息,保存退出。
挂载源,挂载点,分区文件系统,挂载选项,是否进行开机自检,是否进行自动备份
此时删除挂载点,再重新读取,sdb1仍然在
⑦故障模拟
fstab文件是开机时必须读取的文件,如果此时文件内容出错,系统会报错甚至无法启动。
修改挂载源为错误项,保存退出,此时卸载,并重新挂载则报错
修改挂载点,依然报错。
修改文件系统
修改挂载选项
前四项选项错误会报错,自检和备份则是不影响使用。
⑧解决故障
此时,模拟一个挂载源错误,并重启系统
此时启动失败
此时选择D重启系统,或者输入root密码进入终端
输入密码后,输入journalctl -xb查看报错信息
下滑找到红色报错信息
发现是磁盘问题,进入磁盘文件fstab检查
挂载源与实际不符合,进行修改后重启
重启成功。
五·LVM逻辑卷
1·概述
LVM 是 Logical Volume Manager(逻辑卷管理)的简写,它是 Linux 环境下对磁盘分区进行管理的⼀种机制; 安装 Linux 操作系统时遇到的⼀个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空 间; 普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小; 随着 Linux 的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小,即动态调整磁盘容量,从而提高磁盘管理的灵活性。
①运行原理
LVM通过将底层的物理硬盘抽象成容量资源池,然后以逻辑卷的形式提供给上层应用。这样,管理员可以在不重新分区的情况下动态调整文件系统的大小,并且可以跨越多个硬盘进行存储
②LVM 相关概念:
1.PV(Physical Volume):物理卷
处于 LVM 最底层,可以是物理硬盘或者分区,整个硬盘,或使用fdisk 等⼯具建⽴的普通分区,包许多默认 4MB 大小的 PE(Physical Extent,基本单元)。
2.PE(Physical Extend):物理区域
PV 中可以用于分配的最小存储单元,可以在创建 PV 的时候制定(默认为 4MB),如 1M, 2M, 4M, 8M, 32M, 64M… 组成同⼀VG 中所有 PV 的 PE大小应该相同。
3.VG(Volume Group):卷组
建立在 PV 之上,可以含有一个到多个 PV,一个或多个物理卷组合而成的整体。
4.LV(Logical Volume):逻辑卷
建立在 VG 之上,相当于原来分区的概念,不过大小可以动态改变。从卷组中分割出的一块空间,用于建立文件系统。
③挂载流程
PV(PE)-->VG-->LV-->目录挂载
2·管理命令
功能 | PV物理卷命令 | VG卷组命令 | LV逻辑卷命令 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
查询 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩容 | vgextend | lvextend | |
缩容 | vgreduce | lvreduce |
3·配置案例
①构建LVM逻辑卷
创建分区后创建物理卷
创建卷组,起名team
创建逻辑卷,先看有哪些逻辑卷
格式化,进行挂载
②扩容LVM逻辑卷
先卸载挂载点,进行扩容
完成后进行扩容发现,必须再挂载回去才行,那就挂载后扩容
此时容量从2G扩容到4G
若基于EXT文件系统的lv扩容,必须卸载才能扩容:创建ext系统文件
此时扩容后检查会报错,必须卸载挂载
在进行resize步骤他仍然要求你重新检查,那就重新在检查一遍
此时挂载后查看信息,已经成功扩容。
③缩容LVM逻辑卷(不建议)
会损坏文件
六·磁盘配额
1·概述
针对用户和组,用于配置用户和组在该磁盘的使用容量限制。
配额类型:
-
usrquota:支持对用户的磁盘配额
-
grpquota:支持对组的磁盘配额
限制类型:
-
软限制:指定一个软性的配额数据值,用户超过这个数据时,系统给出警告信息,可以打破数据值。
-
硬限制:指定一个硬性的配额值,禁止用户超过这个限制。
2、配置命令
①quota命令
语法:quota [ -guv | q ] user(group)
选项 | 作用 |
---|---|
-g | 显示 用户所在组 的 组限额. 可选项(optional). |
-u | 和 缺省情况 一样 |
-v | 显示 文件系统上 的 限额, 即使 没有 占用 空间. |
-q | 简洁的 信息, 只 显示 超出 限额 的 文件系统. |
②xfs_quota命令
选项 | 作用 |
---|---|
-x | 启用专家模式。所有允许对配额系统进行修改的管理命令(请参阅下面的“管理员命令”部分)仅在专家模式下可用。 |
-c | cmd xfs_quota命令可以交互式运行(默认情况),也可以作为命令行参数运行。可以给出多个-c参数。命令按照给定的顺序运行,然后程序退出。 |
③xfs配额
a.挂载并启用配额
mount -o usrquota,grpquota /挂载磁盘 /挂载点
永久挂载参数如下:
/dev/sdb1 /mail xfs defaults,usrquota,grpquota 0 0
b.编辑用户配额
xfs_quota -x -c 'limit -u bsoft:30M bhard:50M isft:3 ihard:5 用户名' /挂载目录
c. 针对组编辑配额
xfs_quota -x -c 'limit -g bsoft:30M bhard:50M isft:3 ihard:5 组名' /挂载目录
④ext4配额
a.挂载
mount -o defaults,usrquota,grpquota /挂载磁盘 /挂载点
永久挂载参数如下
/dev/sdb1 /mail ext4 defaults,usrquota,grpquota,defaults 0 0
b. 生成配额文件
quotacheck /挂载点
c.启用配额;关闭配额命令用quotaoff
quotaon -ugv /挂载点
d.针对用户配额
edquota -u 用户名
e.修改配置文件格式如下:
/dev/sdd1 0 30M 50M 0 8 10
六、磁盘检测与修复
1·fsck命令
fsck - 检查并修复Linux文件系统
选项 | 作用 |
---|---|
-y | 检查文件系统并进行尝试修复 |
2、xfs_repair命令
3、badblocks命令
badblocks - 查询设备的坏区块
七、文件系统备份与恢复
1、xfsdump命令
备份等级:
0 --完全备份(文件系统默认备份等级)
1—9 --增量备份
选项 | 作用 |
---|---|
-f | 指定备份到哪个目录 |
-L | 指定会话标签 |
-M | 指定设备标签 |
-s | 指定分区中文件或目录的相对路径 |
备份整个分区
备份分区中某个目录或文件
查看已备份的文件系统
注意:
-
xfsdump不支持没有挂载的文件系统备份,所以只能备份已挂载的文件系统;
-
xfsdump必须使用root的权限才能操作;
-
xfsdump只能备份xfs文件系统;
-
xfsdump备份下来的数据只能让xfsrestore来解析;
-
xfsdump是通过文件系统的UUID来分辨备份档案的,因此不能备份两个具有相同UUID的文件系统
2、xfsrestore命令
语法:xfsrestore -f [已备份文件路径] [恢复后的文件路径]
选项 | 作用 |
---|---|
-f | 指定需要恢复的备份文件 |
xfs常用命令
xfs_admin: 调整 xfs 文件系统的各种参数
xfs_copy: 拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
xfs_db: 调试或检测 xfs 文件系统(查看文件系统碎片等)
xfs_check: 检测 xfs 文件系统的完整性
xfs_bmap: 查看一个文件的块映射
xfs_repair: 尝试修复受损的 xfs 文件系统
xfs_fsr: 碎片整理
xfs_quota: 管理 xfs 文件系统的磁盘配额
xfs_metadump: 将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
xfs_mdrestore: 从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
xfs_growfs: 调整一个 xfs 文件系统大小(只能扩展)
xfs_logprint: print the log of an XFS filesystem
xfs_mkfile: create an XFS file
xfs_info: expand an XFS filesystem
xfs_ncheck: generate pathnames from i-numbers for XFS
xfs_rtcp: XFS realtime copy command
xfs_freeze: suspend access to an XFS filesystem
xfs_io: debug the I/O path of an XFS filesystem
八、RAID类型介绍与应用场景
1. RAID 0(条带化)
-
原理:数据分割为块,交替写入多块磁盘(条带化)。
-
优点:
-
极致性能:读写速度接近磁盘数量的倍数。
-
100%容量利用率:无冗余开销。
-
-
缺点:
-
无冗余:任意一块磁盘故障即数据全损。
-
-
适用场景:
-
临时数据处理(如视频渲染缓存)。
-
对速度要求极高且数据可丢失的场景(如科研计算中间结果)。
-
2. RAID 1(镜像)
-
原理:数据完全复制到另一块磁盘(镜像)。
-
优点:
-
高可靠性:允许一块磁盘故障。
-
读取速度提升:可从任意磁盘读取。
-
-
缺点:
-
容量利用率50%:存储成本翻倍。
-
写入速度无提升:需同时写入两块磁盘。
-
-
适用场景:
-
关键系统盘(如操作系统、数据库日志文件)。
-
小型企业文件服务器(预算有限但需基本冗余)。
-
3. RAID 5(分布式奇偶校验)
-
原理:数据条带化分布,奇偶校验信息轮流存储在所有磁盘。
-
优点:
-
平衡性能与冗余:允许一块磁盘故障,容量利用率为
(N-1)/N
(如4盘利用75%)。 -
读取性能高:多盘并行读取。
-
-
缺点:
-
写入性能较低:每次写入需计算并更新奇偶校验。
-
重建时间长:大容量磁盘重建期间二次故障风险高。
-
-
适用场景:
-
中型文件服务器(如企业文档共享)。
-
虚拟机存储(兼顾IOPS与成本)。
-
4. RAID 6(双分布式奇偶校验)
-
原理:类似 RAID 5,但使用两组独立奇偶校验。
-
优点:
-
更高容错:允许两块磁盘同时故障。
-
大容量场景更安全:降低重建期间的故障风险。
-
-
缺点:
-
写入性能更低:双重校验计算增加开销。
-
容量利用率
(N-2)/N
(如6盘利用66%)。
-
-
适用场景:
-
大容量归档存储(如医疗影像、监控视频)。
-
云存储后端(需应对多盘故障风险)。
-
5. RAID 10(镜像+条带化)
-
原理:先镜像(RAID 1)再条带化(RAID 0)。
-
优点:
-
高性能+高可靠:读写速度接近 RAID 0,允许每组镜像中一块磁盘故障。
-
重建速度快:仅需复制镜像盘。
-
-
缺点:
-
容量利用率50%:成本较高。
-
最少4块磁盘:扩展需偶数递增。
-
-
适用场景:
-
高事务数据库(如MySQL、Oracle)。
-
虚拟化平台(ESXi、KVM)的存储池。
-
其他 RAID 类型
-
RAID 50/60:RAID 5/6与RAID 0结合,适合超大规模存储(需至少6盘)。
-
RAID 01(条带化+镜像):先条带化再镜像,故障容错性低于 RAID 10,已较少使用。
对比总结
RAID级别 | 最小磁盘数 | 容错能力 | 容量利用率 | 读取性能 | 写入性能 | 典型场景 |
---|---|---|---|---|---|---|
RAID 0 | 2 | 无 | 100% | 极高 | 极高 | 非关键临时数据 |
RAID 1 | 2 | 1块 | 50% | 高 | 中等 | 系统盘、小型服务器 |
RAID 5 | 3 | 1块 | (N-1)/N | 高 | 中等 | 文件服务器、虚拟机存储 |
RAID 6 | 4 | 2块 | (N-2)/N | 高 | 低 | 大容量归档、云存储 |
RAID 10 | 4 | 每组1块 | 50% | 极高 | 高 | 数据库、高IOPS应用 |
选择建议
-
性能优先 → RAID 0(无冗余)或 RAID 10(有冗余)。
-
预算有限+基本冗余 → RAID 5。
-
大容量+高容错 → RAID 6。
-
关键业务高可用 → RAID 10。
注意事项
-
RAID 不是备份:无法防止误删除、病毒攻击,需额外备份方案。
-
硬件 RAID vs 软件 RAID:
-
硬件 RAID:依赖 RAID 卡,性能稳定,支持缓存加速。
-
软件 RAID(如Linux mdadm):灵活,成本低,但占用CPU资源。
-
-
SSD与RAID:SSD的磨损均衡机制可能与RAID冲突,建议优先选用企业级SSD并禁用磁盘缓存。
九·总结
今天的磁盘实验,最重要的是构建框架流程,在解决故障的时候,要分步检查,按照流程检查故障。命令上主要使用了fdisk,lsblk,mount,umount四个命令,主要还是要有流程思维解决问题。
今日将剩余的磁盘管理内容补充完毕,其中重要的是LVM逻辑卷的构建,扩容,之后要经常用到,需要熟悉流程,其他大部分了解即可。