前言

在数据时代,单块磁盘的性能瓶颈与单点故障风险已成为系统架构的致命弱点。RAID技术通过将多块物理磁盘组合为逻辑单元,且在速度与安全、容量与冗余之间提供了关键平衡。


一、RAID

1、RAID概述

RAID(独立冗余磁盘阵列(Redundant Array of Independent Disks)) 是一种将多块硬盘组合成
一个逻辑存储单元的技术。
通过特定的数据分布算法和冗余机制,RAID 能够在不同程度上实现以下目标:

  1. 提高性能:通过并行读写操作提升整体速度;
  2. 提高可靠性:通过数据冗余(如镜像或奇偶校验)实现容错;
  3. 扩大容量:将多块硬盘合并为一个更大的逻辑卷。

2、RAID级别

2.1、RAID 0

特点:数据分块后分布在多块硬盘上。
优点:读写性能提升显著。
缺点:没有冗余,一块硬盘损坏会导致全部数据丢失。
使用场景:对性能要求高但数据安全要求低的环境(如临时缓存、游戏盘)。

2.2、RAID 1

特点:两块硬盘存储完全相同的数据副本。
优点:高可靠性,一块盘损坏可自动切换到另一块。
缺点:存储利用率仅 50%,成本较高。
使用场景:重要数据存储(如数据库系统、服务器系统盘)。

2.3、RAID 5

特点:数据和奇偶校验信息分布在所有磁盘上。
优点:在提升性能的同时提供一定的容错能力(可容忍一块盘损坏)。
缺点:写入速度略低于 RAID 0,重建时间长。
使用场景:常用于企业文件服务器和网络存储(NAS)。

2.4、RAID 10(1+0)

特点:先做镜像(RAID 1),再条带化(RAID 0)。
优点:兼顾性能与可靠性。
缺点:至少需要 4 块硬盘,成本较高。
使用场景:数据库、高性能服务器。

3、RAID的应用

在这里插入图片描述

二、RAID实战

1、RAID 0配置

步骤如下:
1、创建RAID 0矩阵
mdadm -Cv /dev/md10 -l0 -n2 /dev/sde /dev/sdf
2、查看创建结果
cat /proc/mdstat
3、文件格式化
mkfs.xfs /dev/md10
4、挂载
mount /dev/md10 /myraid

2、RAID 1配置

步骤如下:
1、创建RAID 1矩阵
mdadm -Cv /dev/md10 -l1 -n2 /dev/sde /dev/sdf
2、查看创建结果
cat /proc/mdstat
3、文件格式化
mkfs.xfs /dev/md10
4、挂载
mount /dev/md10 /myraid

3、RAID 5配置

步骤如下:
1、检查/安装mdadm包
rpm -q mdadm
yum install -y mdadm
2、对4块硬盘进行分区
使用fdisk对四块硬盘进行分区。
分别为:sde1、sdf1、sdg1、sdh1,类型为Linux raid autodetect
在这里插入图片描述
3、创建RAID 5
mdadm -C -v /dev/md0 -a yes -l5 -n3 /dev/sde1 /dev/sdf1 /dev/sdg1 -x1 /dev/sdh1

  • -C:表示新建;
  • -v:显示创建过程中的详细信息。
  • /dev/md0: 创建RAID5的名称。
  • -ayes:–auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
  • -l: 指定RAID 的级别,l5表示创建RAID5。.
  • -n:指定使用几块硬盘创建RAID, n3表示使用3块硬盘创建RAID。
  • /dev/sde1 sdf1 sdg1: 指定使用这3块磁盘分区去创建RAID。
  • -x:指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作热备用盘
  • /dev/sdh1: 指定用作于备用的磁盘
    4、查看创建进度
    cat /proc/mdstat #还能查看创建RAID的进度
    watch -n 10 ‘cat /proc/mdstat’ #用watch命令来每隔-一段时间刷新/proc/mdstat的输出
    在这里插入图片描述
    5、检查磁盘是否已经包含 RAID 信息
    mdadm -E /dev/sd[e-h]1
    在这里插入图片描述
    6、格式化文件
    mkfs -t xfs /dev/md0
    7、创建并挂载文件系统
    mkdir /myraid
    mount /dev/md0 /myraid/
    8、验证是否挂载成功
    df -h
    在这里插入图片描述
    9、模拟故障恢复
    mdadm /dev/md0 -f /dev/sde1 #模拟/dev/sde1故障
    mdadm -D /dev/md0 #查看发现sdh1已顶替sde1
    在这里插入图片描述
    10、重新添加sde1
    恢复的sde1将重新做备用盘
    mdadm /dev/md0 --add /dev/sde1

4、RAID 10配置

步骤如下:
1、先镜像再条带
mdadm -Cv /dev/md0 -l1 -n2 /dev/sd[ef]1 #镜像
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[gh]1 #镜像
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1 #条带化
2、查看创建结果
cat /proc/mdstat
3、文件格式化
mkfs.xfs /dev/md10
4、挂载
mount /dev/md10 /myraid

三、Linux系统引导过程

1、引导过程流程

开机自检(bios)–>MBR引导–>GRUB菜单->加载内核(kernel)–>init进程初始化
概述:
Linux 系统的启动流程遵循严谨的层次化初始化模型。其核心序列如下:
固件初始化:BIOS 或 UEFI 固件执行硬件自检(POST),初始化硬件并加载引导设备的首扇区数据。
引导加载阶段:主引导记录(MBR)或 UEFI 引导管理器将控制权移交至 GRUB2 等引导加载程序。GRUB2 加载 Linux 内核及初始内存磁盘(initramfs)至内存,内核解压后接管系统。
内核初始化:内核初始化硬件子系统,加载必要驱动,并挂载根文件系统。随后,内核空间切换至用户空间,启动 init 进程(现代系统通常为 systemd)。
系统与服务管理:systemd 作为首个用户进程(PID 1)接管后续启动流程,并行启动定义在 target 单元中的系统服务,最终完成启动过程,交付可用的操作环境。

2、开机自检

系统开机后,通过BIOS系统对内存、cpu、显卡等设备进行检测。检测成功后,根据BIOS设置的启动顺序,系统会找到一个设备(硬盘、光驱、U盘等)进行引导。
总结:硬件自检并读取启动设备顺序,找到第一个启动设备(硬盘、光盘、u盘)。

3、MBR引导

如果从硬盘启动,系统会从硬盘的第一个扇区加载 MBR(主引导记录),并通过 MBR 启动菜单(如 GRUB)选择操作系统启动。
总结:从硬盘的MBR引导程序启动,运行GRUB引导加载器

4、GRUB引导菜单

GRUB(GRand Unified Bootloader)是 Linux 常用的多重操作系统引导程序。GRUB 会显示启动菜单,用户选择启动项后加载操作系统的内核文件,并将控制权交给内核。
总结::GRUB 引导程序读取 /boot/grub2/grub.cfg 文件,加载并启动操作系统内核。

5、加载linux内核

内核文件是一个预编译的二进制文件,介于硬件与系统程序之间,负责管理硬件资源和系统进程。
总结:将内核文件和镜像文件加载到内存。

6、init 进程初始化

内核加载后,会启动系统的初始化进程 /sbin/init ,该进程负责进一步的系统初始化工作,如加载硬件驱动、启动系统服务,最终等待用户登录。
总结:内核加载并启动 init 进程,完成系统的初始化。

四、Systemd服务管理

1、Systemd的作用

并行启动服务,与传统的 SysVinit 相比,开机更快
按需启动服务,提高系统效率

2、 运行级别和Systemd目标

可以理解成你的手机模式。比如:手机的安全模式、标准模式等
在这里插入图片描述

3、设置和切换运行级别

3.1、查看当前的目标

systemctl get-default

3.2、设置默认目标

将multi-user.target设置为默认目标
systemctl set-default multi-user.target

3.3、切换目标

切换到图形化界面
systemctl isolate graphical.target
示例:
将当前目标设置为rescue.target,开机时会让系统进入一个仅限 root 访问的维护模式,用于解决无法在正常多用户环境下处理的严重系统问题。如图所示:
在这里插入图片描述

3.4、扩展-使用init切换目标(级别)

例如:我要切换成单用户模式,直接 init 1
这样就十分简单!

4、服务管理

4.1、查看服务状态

systemctl status httpd

4.2、开启服务

systemctl start httpd

4.3、关闭服务

systemctl stop httpd

4.4、设置服务开机自启动

systemctl enable httpd

4.5、关闭服务开机自启动

systemctl disable httpd

4.6、查看服务开机启动状态

systemctl is-enabled httpd

4.7、列出已启用的服务

systemctl list-unit-files | grep enable

4.8、列出系统所有激活的服务

systemctl list-units --type=service

4.9、重启服务

systemctl restart httpd

5、服务扩展

5.1、修改主机名称

命令 设置主机名 主机名称
hostnamectl set-hostname newname

5.2、关闭防火墙

systemctl stop firewalld

5.3、重新加载服务配置

systemctl reload firewalld

五、扩展

chkconfig 是一个用于查看和配置服务是否在特定运行级别下启动的工具。常用命令如下:
查看服务状态:
chkconfig --list httpd
添加服务到系统:
chkconfig --add httpd
设置服务在特定级别下启动:
chkconfig --level 35 httpd on


总结

本教程通过RAD、系统引导和Systemd的介绍,让你在Linux系统运维中游刃有余。
RAID:多盘组合,兼顾数据安全与I/O性能,是存储基石。
系统引导:从BIOS到内核加载,再到systemd接管,完成服务初始化。
Systemd:现代Linux的服务管理器,统一管理所有进程与系统状态。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐