一.服务器硬件及RAID配置实战
1.RAID 概念概述
常见 RAID 级别
不同的 RAID 级别定义了数据如何在磁盘间分布和冗余信息如何计算及存储。以下是几种最常见的 RAID 级别:
RAID 0 (条带化)
- 原理:数据被分割成块(条带),并轮流写入阵列中的所有磁盘。
- 优点:
- 极高的读写性能:读写操作可以并行在所有磁盘上进行。
- 最大化磁盘容量利用率:总容量等于所有磁盘容量之和。
- 缺点:
- 无冗余:任何一个磁盘故障,都会导致整个阵列的数据丢失。
- 应用场景:对性能要求极高但对数据安全性要求不高的场景,如视频编辑缓存、游戏安装盘等。
- 容量计算:若使用 $n$ 个容量均为 $S$ 的磁盘,总容量 $C$ 为: $$C = n \\times S$$
RAID 1 (镜像)
- 原理:数据被同时写入两个(或更多)磁盘,形成完全相同的副本(镜像)。
- 优点:
- 高冗余性:只要有一个镜像磁盘正常工作,数据就不会丢失。可容忍 $n-1$ 个磁盘故障($n$ 为镜像组磁盘数,通常为2)。
- 读取性能提升:可以从多个镜像盘并行读取。
- 缺点:
- 写入性能略低:需要写入多份副本。
- 容量利用率低:总容量等于单个磁盘的容量(对于双盘镜像)。
- 应用场景:对数据安全性要求极高的场景,如操作系统盘、关键数据库的小规模存储。
- 容量计算:若使用 $n$ 个容量均为 $S$ 的磁盘做镜像,总容量 $C$ 为: $$C = S$$ (因为所有磁盘存储相同数据)
RAID 5 (带分布式奇偶校验的条带)
- 原理:数据被条带化分布在 $n$ 个磁盘上($n \\geq 3$),同时,每个条带对应的奇偶校验信息(用于数据恢复)不是存储在一个专用盘上,而是轮流存储在所有磁盘上。
- 优点:
- 良好的读取性能(得益于条带化)。
- 良好的冗余性:可容忍任意一个磁盘故障。故障后数据可通过剩余磁盘上的数据和校验信息重建。
- 较高的存储利用率:相比 RAID 1,仅损失一个磁盘的容量用于存储校验信息。
- 缺点:
- 写入性能开销:每次写入都需要计算并更新校验信息(“写惩罚”)。
- 重建时间长:故障磁盘替换后,重建过程需要读取所有剩余磁盘的数据并重新计算,耗时较长,期间若再有磁盘故障,数据将丢失。
- 应用场景:对性能和容量利用率有要求,且需要一定冗余性的通用存储,如文件服务器、Web 服务器等。
- 容量计算:若使用 $n$ 个容量均为 $S$ 的磁盘,总容量 $C$ 为: $$C = (n – 1) \\times S$$
RAID 6 (带双重分布式奇偶校验的条带)
- 原理:类似于 RAID 5,但存储两份不同的奇偶校验信息(通常使用不同的算法计算),分布在所有磁盘上。
- 优点:
- 极高的冗余性:可容忍任意两个磁盘同时故障。
- 缺点:
- 更高的写入性能开销:需要计算并更新两份校验信息。
- 更低的存储利用率:损失两个磁盘的容量用于存储校验信息。
- 重建时间可能更长。
- 应用场景:对数据安全性要求极高的场景,尤其是使用大容量磁盘或需要长时间重建保护的情况。
- 容量计算:若使用 $n$ 个容量均为 $S$ 的磁盘($n \\geq 4$),总容量 $C$ 为: $$C = (n – 2) \\times S$$
嵌套 RAID (如 RAID 10, RAID 01, RAID 50, RAID 60)
- 原理:将两种基本的 RAID 级别组合起来使用。例如:
- RAID 10 (1+0):先做 RAID 1 (镜像对),然后再将多个镜像对组合成 RAID 0 (条带化)。
- RAID 01 (0+1):先做 RAID 0 (条带化),然后再将条带化组组合成 RAID 1 (镜像)。
- RAID 50 (5+0):先做多个 RAID 5 组,然后将这些 RAID 5 组组合成 RAID 0 (条带化)。
- 优点:结合了两种 RAID 级别的优势。例如 RAID 10 兼具 RAID 1 的高冗余性和 RAID 0 的高性能。
- 缺点:配置更复杂,成本可能更高。
- 应用场景:需要高性能和高冗余性的关键业务应用,如数据库服务器、虚拟化主机等。
总结
| 0 | 2 | 无 | 高 | 高 | 100% | 条带化,性能最佳,无保护 |
| 1 | 2 | 高 | 高 | 中 | 50% | 镜像,冗余性好 |
| 5 | 3 | 一般 | 高 | 中低 | $(n-1)/n$ | 条带化 + 分布式校验 |
| 6 | 4 | 高 | 高 | 低 | $(n-2)/n$ | 条带化 + 双重分布式校验 |
| 10 | 4 | 高 | 高 | 中高 | 50% | 先镜像再条带化 (性能与冗余兼顾) |
选择合适的 RAID 级别取决于具体的应用需求,需要在性能、容量、成本和数据保护级别之间进行权衡。RAID 是提升存储系统性能和可靠性的重要技术手段。
2.RAID 实战
创建 RAID 1 阵列
假设我们有两块新磁盘 /dev/sdb 和 /dev/sdc。
sudo mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sdb1 /dev/sdc1
- /dev/md0: 新创建的 RAID 设备节点。
- –level=1: RAID 级别为 1 (镜像)。
- –raid-devices=2: 使用 2 个设备。
- 后面跟着两个成员分区。
cat /proc/mdstat
sudo mdadm –detail /dev/md0
sudo mkfs.ext4 /dev/md0
sudo mkdir /mnt/raid1
sudo mount /dev/md0 /mnt/raid1
为了开机自动挂载,需要在 /etc/fstab 中添加一行:
/dev/md0 /mnt/raid1 ext4 defaults 0 2
模拟磁盘故障与替换
sudo mdadm /dev/md0 –fail /dev/sdb1
sudo mdadm /dev/md0 –remove /dev/sdb1
sudo mdadm /dev/md0 –add /dev/sdd1 # 假设新盘分区是 /dev/sdd1
创建 RAID 5 阵列
假设有三块磁盘 /dev/sdb1, /dev/sdc1, /dev/sdd1。
sudo mdadm –create /dev/md0 –level=5 –raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
后续步骤(创建文件系统、挂载等)与 RAID 1 相同。
创建 RAID 10 阵列
假设有四块磁盘 /dev/sdb1, /dev/sdc1, /dev/sdd1, /dev/sde1。
sudo mdadm –create /dev/md0 –level=10 –raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# 或者显式指定布局(可选)
# sudo mdadm –create /dev/md0 –level=10 –raid-devices=4 –layout=f2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
后续步骤同上。
二.系统管理
1.Linux 系统引导过程
开机自检:
过程:系统开机后,通过 BIOS 对 CPU、内存、显卡、键盘等硬件设备进行初步检测,检测成功后
根据 BIOS 设置的启动顺序,系统会选择一个设备(硬盘、光驱、U盘等)进行引导。
总结:检测到第一个能够启动的设备,如硬盘或光驱、U盘。
MBR 引导:
过程:如果从硬盘启动,系统会从硬盘的第一个扇区加载 MBR(主引导记录),并通过 MBR 启动
菜单(如 GRUB)选择操作系统启动。
总结:从硬盘的 MBR 引导程序启动,运行 GRUB 引导加载器。
GRUB 引导菜单:
过程:GRUB(GRand Unified Bootloader)是 Linux 常用的多重操作系统引导程序。GRUB 会显
示启动菜单,用户选择启动项后加载操作系统的内核文件,并将控制权交给内核。
总结:GRUB 引导程序读取 /boot/grub2/grub.cfg 文件,加载并启动操作系统内核。
加载 Linux 内核:
过程:内核文件是一个预编译的二进制文件,介于硬件与系统程序之间,负责管理硬件资源和系统
进程。
总结:将内核文件和镜像文件加载到内存。
⑤ init 进程初始化:
过程:内核加载后,会启动系统的初始化进程 /sbin/init ,该进程负责进一步的系统初始化工
作,如加载硬件驱动、启动系统服务,最终等待用户登录。
总结:内核加载并启动 init 进程,完成系统的初始化。
3.Systemd 服务管理
Systemd 的优点
并行启动服务:与传统的 SysVinit 相比,Systemd 支持并行启动多个服务,从而加速系统启动过
程。
按需启动服务:Systemd 可以按需启动服务,避免了启动不必要的服务,提高了系统的效率。
总结:Systemd 改善了系统的启动速度和服务管理效率,解决了 SysVinit 启动慢和脚本复杂的问
题。
运行级别与 Systemd 目标
在 Linux 系统中,运行级别(runlevel)定义了系统的运行状态。Systemd 通过目标(target)来代替
传统的运行级别。以下是常见的运行级别与对应的 Systemd 目标:

设置与切换运行级别
查看当前默认目标:systemctl get-default
设置默认目标:systemctl set-default multi-user.target
切换到指定目标:systemctl isolate graphical.target
示例:切换到图形界面:
systemctl isolate graphical.target
服务管理
启动服务
systemctl start <服务名> # 示例:systemctl start nginx
停止服务
systemctl stop <服务名>
重启服务
systemctl restart <服务名>
查看服务状态
systemctl status <服务名> # 输出包含运行状态、日志片段等
开机自启
systemctl enable <服务名>
禁用开机自启
systemctl disable <服务名>
屏蔽服务(彻底禁用)
systemctl mask <服务名> # 创建符号链接阻止服务启动
解除屏蔽
systemctl unmask <服务名>
检查是否启用
systemctl is-enabled <服务名> # 返回 "enabled" 或 "disabled"
检查是否运行
systemctl is-active <服务名> # 返回 "active" 或 "inactive"
配置文件路径
服务配置文件通常位于:
/etc/systemd/system/ # 系统管理员自定义服务
/usr/lib/systemd/system/ # 软件包安装的默认服务
重载配置
修改服务配置后需执行:
systemctl daemon-reload # 重新加载所有单元文件
注意事项
通过组合上述命令,可高效管理系统服务的运行状态。



