七、RAID配置与系统管理


前言

本章将深入探讨这两个关键领域。服务器硬件及RAID配置实战” 将带您从磁盘原理出发,深入理解RAID技术如何通过冗余与并行来构建高性能、高可用的存储方案,并通过详细的mdadm命令演示,让您具备配置与维护软件RAID的实际操作能力。紧随其后“系统管理”,则将焦点转向系统本身,详细解析从开机到服务就绪的完整引导流程,并系统性地介绍现代Linux的systemd服务管理机制。您将学习如何使用systemctl、journalctl等核心命令,像一名熟练的舵手一样,全面掌控服务的生命周期、系统运行状态与故障排查。

一、服务器硬件及 RAID 配置

1.RAID 概念概述

AID(独立冗余磁盘阵列,Redundant Array of Independent Disks)是一种将多块硬盘组合成一个逻辑存储单元的技术。通过特定的数据分布算法和冗余机制,

  1. 提高性能:通过并行读写操作提升整体速度;
  2. 提高可靠性:通过数据冗余(如镜像或奇偶校验)实现容错;
  3. 扩大容量:将多块硬盘合并为一个更大的逻辑卷。
    RAID级别对比总结
RAID级别 最少磁盘 可用容量 容错能力 读性能 写性能 适用场景
RAID 0 2 100% 优秀 优秀 临时数据、缓存
RAID 1 2 50% 优秀 优秀 中等 系统盘、关键数据
RAID 5 3 (n-1)/n 良好 优秀 中等 文件服务器、NAS
RAID 6 4 (n-2)/n 优秀 优秀 较低 大容量归档存储
RAID 10 4 50% 优秀 优秀 优秀 数据库、关键业务

选择建议:

  • 追求性能: RAID 0
  • 追求安全: RAID 1
  • 平衡性价比: RAID 5
  • 大容量高安全: RAID 6
  • 最佳性能+安全: RAID 10

2.RAID实战命令详解

1. 检查并安装mdadm

rpm -q mdadm          # 查询是否已安装mdadm软件包,rpm是软件包管理工具,-q表示查询
yum install -y mdadm  # 安装mdadm软件包,yum是软件包管理器,-y表示自动确认安装

2 .分区并设置类型为RAID

fdisk /dev/sdb        # 对第二块SCSI硬盘进行分区,进入交互式分区界面

在这里插入图片描述查看这四块硬盘名称,和信息

fdisk交互命令详解:

n                    # 创建新分区 (new partition)
p                    # 选择主分区类型 (primary partition)  
1                    # 分区编号为1 (partition number 1)
回车                  # 接受默认起始扇区 (default start sector)
回车                  # 接受默认结束扇区,使用全部空间 (default end sector, use all space)
t                    # 更改分区类型 (change partition type)
fd                   # 设置为Linux RAID类型 (Linux RAID auto-detect)
w                    # 写入分区表并退出 (write partition table and exit)

在这里插入图片描述
在这里插入图片描述
按顺序将/sdb、/sdc、/sdd、/sde。依次分区.


3. 创建RAID设备

在这里插入图片描述

① 创建RAID 5
mdadm -C -v /dev/md0 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1

参数详细注释:

  • -C # 创建新的RAID设备 (create)
  • -v # 显示详细信息 (verbose)
  • /dev/md0 # RAID设备名称,第一个RAID设备 (RAID device name)
  • -l5 # RAID级别为5 (RAID level 5)
  • -n3 # 使用3块活跃磁盘 (number of active devices)
  • /dev/sd[bcd]1 # 使用的数据盘:sdb1, sdc1, sdd1 (data disks)
  • -x1 # 使用1块热备盘 (number of spare disks)
  • /dev/sde1 # 热备盘设备 (hot spare disk)

4. 查看RAID状态

在这里插入图片描述

cat /proc/mdstat              # 查看系统RAID状态信息,显示构建进度
mdadm -D /dev/md0             # 显示RAID设备的详细信息 (detail)
watch -n 10 'cat /proc/mdstat' # 每10秒刷新查看RAID状态,监控构建过程
mdadm -E /dev/sd[b-e]1        # 检查磁盘上的RAID元数据信息 (examine)

5. 创建文件系统并挂载

在这里插入图片描述
在这里插入图片描述
创建文件并挂载

mkfs -t xfs /dev/md0          # 在RAID设备上创建XFS文件系统 (make filesystem)
mkdir /myraid                 # 创建挂载点目录 (make directory)
mount /dev/md0 /myraid        # 将RAID设备挂载到指定目录
df -h                         # 查看磁盘使用情况,确认挂载成功 (disk free)

在这里插入图片描述

这里已经挂载成功了


6 .配置开机自动挂载

echo '/dev/md0 /myraid xfs defaults 0 0' >> /etc/fstab

/etc/fstab字段详解:

  • /dev/md0 # 要挂载的设备 (device to mount)
  • /myraid # 挂载点目录 (mount point)
  • xfs # 文件系统类型 (filesystem type)
  • defaults # 挂载选项:默认参数 (mount options)
  • 0 # dump备份标志:0表示不备份 (dump flag)
  • 0 # fsck检查顺序:0表示不检查 (filesystem check order)

7 .模拟故障与恢复

mdadm /dev/md0 -f /dev/sdb1    # 模拟sdb1磁盘故障 (fail)
mdadm -D /dev/md0              # 查看RAID状态,确认热备盘是否自动顶替
mdadm /dev/md0 -r /dev/sdb1    # 从RAID中移除故障盘 (remove)
mdadm /dev/md0 -a /dev/sde1    # 添加新盘作为热备盘 (add)

8 .保存RAID配置

echo 'DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf

命令说明:

  • 第一行:定义RAID使用的所有物理设备
  • 第二行:扫描当前系统RAID信息并追加到配置文件,确保系统重启后能识别RAID

9. 其他常用RAID管理命令

mdadm --stop /dev/md0         # 停止RAID设备 (stop)
mdadm --assemble /dev/md0     # 重新组装RAID设备 (assemble)
mdadm --grow /dev/md0 --raid-devices=4  # 扩展RAID设备中的磁盘数量
cat /proc/mdstat              # 查看RAID状态和同步进度

二、系统管理

1 Linux 系统引导过程

引导流程详解:

在这里插入图片描述

① 开机自检 (BIOS/UEFI)

# BIOS:基本输入输出系统,检测硬件并初始化
# UEFI:统一可扩展固件接口,现代替代方案
dmesg | grep -i "bios\|uefi"  # 查看引导相关的内核消息

② MBR引导

# 主引导记录,位于磁盘第一个扇区(512字节)
# 结构:引导代码(446B) + 分区表(64B) + 结束标志(2B)
fdisk -l /dev/sda           # 查看磁盘分区信息,包括MBR
dd if=/dev/sda bs=512 count=1 | file -  # 查看MBR信息

③ GRUB引导菜单

# GRUB2配置文件路径:
cat /boot/grub2/grub.cfg                   # 查看GRUB配置(不要直接编辑)
cat /etc/default/grub                      # 查看GRUB默认配置
grub2-mkconfig -o /boot/grub2/grub.cfg     # 重新生成GRUB配置

④ 加载Linux内核

ls /boot/vmlinuz*          # 查看内核文件
ls /boot/initramfs*        # 查看初始内存磁盘镜像
uname -r                   # 查看当前运行的内核版本

⑤ init进程初始化

# 传统SysVinit:
ps -p 1                    # 查看PID为1的进程(init进程)
ls -la /sbin/init          # 查看init程序

# 现代systemd:
systemctl --version        # 查看systemd版本

8.2 Systemd 服务管理

8.2.1 Systemd 基础概念

运行级别与目标的对应关系:

运行级别 Systemd 目标 说明
0 poweroff.target 关机
1 rescue.target 单用户模式(维护模式)
2, 3, 4 multi-user.target 多用户文本模式
5 graphical.target 图形界面模式
6 reboot.target 重启

8.2.2 运行级别管理命令

systemctl get-default                      # 查看当前默认目标
systemctl set-default multi-user.target    # 设置默认目标为多用户模式
systemctl isolate graphical.target         # 切换到图形界面模式
systemctl list-units --type=target         # 查看所有目标单元

8.2.3 服务管理命令详解

服务状态管理:

systemctl status sshd                      # 查看sshd服务状态
systemctl start sshd                       # 启动sshd服务
systemctl stop sshd                        # 停止sshd服务  
systemctl restart sshd                     # 重启sshd服务
systemctl reload sshd                      # 重新加载配置(不重启服务)

服务启用与禁用:

systemctl enable sshd                      # 设置sshd开机自启
systemctl disable sshd                     # 禁用sshd开机自启
systemctl is-enabled sshd                  # 检查sshd是否开机自启
systemctl list-unit-files | grep enabled   # 列出所有已启用的服务

服务列表查看:

systemctl list-units --type=service        # 列出所有服务单元
systemctl list-dependencies sshd           # 查看sshd服务的依赖关系
systemctl --failed                         # 查看启动失败的服务

8.2.4 防火墙服务管理

systemctl status firewalld                 # 查看防火墙状态
systemctl start firewalld                  # 启动防火墙
systemctl stop firewalld                   # 停止防火墙
systemctl enable firewalld                 # 设置防火墙开机自启
firewall-cmd --state                       # 检查防火墙运行状态
firewall-cmd --list-all                    # 查看防火墙所有规则

8.2.5 主机名管理

hostname                                   # 查看当前主机名(临时)
hostnamectl status                         # 查看主机名详细信息
hostnamectl set-hostname server01.example.com  # 永久修改主机名
cat /etc/hostname                          # 查看主机名配置文件

8.3 系统服务监控与日志

8.3.1 服务日志查看

journalctl -u sshd                         # 查看sshd服务的日志
journalctl -u sshd -f                      # 实时跟踪sshd服务日志
journalctl --since "2024-01-01 00:00:00"   # 查看指定时间后的日志
journalctl --until "2024-01-01 12:00:00"   # 查看指定时间前的日志
journalctl -p err                          # 查看错误级别的日志

8.3.2 系统状态监控

systemctl status                           # 查看系统整体状态
systemctl list-jobs                        # 查看当前运行的任务
systemctl show sshd                        # 显示sshd服务的所有属性

8.4 传统服务管理(chkconfig)

8.4.1 chkconfig 命令详解

chkconfig --list                          # 列出所有服务的运行级别设置
chkconfig --list sshd                     # 查看sshd服务的运行级别设置
chkconfig --add sshd                      # 将sshd服务添加到chkconfig管理
chkconfig --del sshd                      # 从chkconfig管理中删除sshd服务
chkconfig --level 35 sshd on              # 在运行级别3和5启用sshd服务
chkconfig --level 01246 sshd off          # 在指定运行级别禁用sshd服务

8.4.2 service 命令(SysVinit兼容)

service sshd status                       # 查看sshd服务状态
service sshd start                        # 启动sshd服务
service sshd stop                         # 停止sshd服务
service sshd restart                      # 重启sshd服务
service --status-all                      # 查看所有服务状态

8.5 实战案例

案例1:部署Web服务并设置开机启动

# 安装Apache服务
yum install -y httpd

# 启动服务并设置开机自启
systemctl start httpd                     # 立即启动Apache
systemctl enable httpd                    # 设置开机自启
systemctl status httpd                    # 检查服务状态

# 配置防火墙允许HTTP服务
firewall-cmd --permanent --add-service=http    # 永久允许HTTP
firewall-cmd --permanent --add-service=https   # 永久允许HTTPS  
firewall-cmd --reload                     # 重新加载防火墙配置

# 测试服务
curl http://localhost                     # 本地测试Web服务

案例2:系统维护模式切换

# 切换到单用户模式(维护模式)
systemctl rescue                          # 进入救援模式(需要root密码)

# 或者使用传统方式
init 1                                    # 切换到运行级别1(单用户模式)

# 切换回多用户模式
systemctl default                         # 返回默认目标
# 或者
init 3                                    # 切换到运行级别3(多用户模式)

案例3:服务故障排查

# 查看失败的服务
systemctl --failed                        # 列出启动失败的服务

# 查看服务详细日志
journalctl -u failed-service --no-pager -l  # 查看指定服务的详细日志

# 重置失败状态
systemctl reset-failed failed-service     # 重置服务的失败状态

# 重新启动服务
systemctl start failed-service            # 重新启动失败的服务

8.6 系统管理总结

关键命令回顾:

systemctl 核心命令:

systemctl start/stop/restart/reload SERVICE    # 服务生命周期管理
systemctl enable/disable SERVICE               # 开机自启管理  
systemctl status SERVICE                       # 服务状态查看
systemctl list-units --type=service            # 服务列表查看

系统状态监控:

hostnamectl status                            # 系统信息查看
journalctl -u SERVICE                         # 服务日志查看
systemctl --failed                            # 失败服务查看

运行级别管理:

systemctl get-default/set-default TARGET      # 默认目标管理
systemctl isolate TARGET                      # 目标切换
systemctl list-units --type=target            # 目标列表

最佳实践建议:

  1. 服务管理:优先使用 systemctl 命令,它是现代Linux的标准
  2. 故障排查:使用 journalctl 查看服务日志进行问题诊断
  3. 开机启动:生产环境中谨慎设置服务开机自启
  4. 防火墙:在启用服务前确保防火墙规则正确配置
  5. 备份配置:修改重要服务配置前做好备份

总结

总而言之,一个健壮的服务系统,既离不开底层RAID提供的稳定数据底座,也离不开上层systemd对服务与资源的精细调度。 将第七章的“硬件之稳”与第八章的“系统之控”相结合,您已经具备了运维一台Linux服务器的核心能力,为构建高可用的IT服务打下了坚实的基础。

Logo

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

更多推荐