欢迎光临
我们一直在努力

服务器硬件及RAID配置与系统管理

一.服务器硬件及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 的高性能。
    • 缺点:配置更复杂,成本可能更高。
    • 应用场景:需要高性能和高冗余性的关键业务应用,如数据库服务器、虚拟化主机等。
  • 总结

    RAID 级别最小磁盘数冗余能力读性能写性能容量利用率主要特点
    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。

  • 创建分区 (可选但推荐): 使用 fdisk 或 parted 在每块磁盘上创建一个类型为 Linux RAID (或 fd 类型码) 的分区,例如 /dev/sdb1, /dev/sdc1。
  • 创建 RAID 设备:

    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

  • 会看到状态为 active, resyncing (正在同步镜像),同步完成后变为 active。
  • 创建文件系统: 在新创建的 /dev/md0 上创建文件系统,如 ext4:
  • sudo mkfs.ext4 /dev/md0

  • 挂载使用: 将 /dev/md0 挂载到某个目录,例如 /mnt/raid1:

    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

  • 查看状态 (cat /proc/mdstat 或 mdadm –detail): 会看到 /dev/sdb1 状态为 (F), 阵列状态可能显示为 degraded (降级)。
  • 移除故障盘:
  • sudo mdadm /dev/md0 –remove /dev/sdb1

  • 物理更换故障磁盘。
  • 添加新磁盘分区:
  • sudo mdadm /dev/md0 –add /dev/sdd1 # 假设新盘分区是 /dev/sdd1

  • 查看重建状态: cat /proc/mdstat 会显示重建进度。重建完成后阵列恢复 clean 状态。
  • 创建 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 引导菜单:

    过程GRUBGRand 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 # 重新加载所有单元文件

    注意事项

  • 操作需要管理员权限(使用 sudo)
  • 服务名需完整(如 nginx.service),但通常可省略 .service 后缀
  • 谨慎使用 mask,可能导致依赖服务无法启动
  • 通过组合上述命令,可高效管理系统服务的运行状态。

    赞(0)
    未经允许不得转载:171主机测评 » 服务器硬件及RAID配置与系统管理
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址