如何在 Oracle Linux 8.3 上通过配置 LVM 与 RAID 结合,提升存储系统的性能与数据冗余性

在企业级服务器架构中,存储系统的性能与可靠性至关重要。对于运行数据库、大数据处理或高并发业务的服务器,单一磁盘不仅性能有限,而且存在单点故障风险。通过软件层面的 RAID(Redundant Array of Independent Disks)与 LVM(Logical Volume Manager)结合,可以提升 I/O 性能,同时提供数据冗余保护。A5数据以 Oracle Linux 8.3 为操作系统,结合主流硬件配置,提供从硬件选型到性能评估的完整实战方案。

本文适合具有一定 Linux 系统与存储基础的技术人员,重点关注实践中的命令、参数、性能评估与优化方法。


一、硬件基础与选型建议

为搭建高性能、高冗余的存储子系统,建议如下服务器www.a5idc.com硬件配置:

1.1 硬件清单

硬件类别 型号/参数 说明
服务器主板 Supermicro X12DPG-QT6 支持 PCIe 4.0,双路 Xeon
CPU 2× Intel Xeon Silver 4310 共有 20 核心 40 线程,用于高 I/O 并发处理
内存 128GB DDR4 ECC RDIMM 大量缓存提升文件系统性能
RAID 控制器 LSI MegaRAID 9361-8i 可硬件 RAID 0/1/5/6/10 支持,8 端口 12Gb/s SAS
硬盘 4× 1.92TB NVMe SSD (企业级,PCIe 3.0 x4) 高 I/O 性能 SSD,适合 RAID 10
网卡 Intel X710-DA4 (10GbE) 高速网络用于远程备份与数据传输
电源 2× 750W 冗余 确保系统稳定运行

说明:本文示例选择 4 个企业级 NVMe SSD,通过软件 RAID 10 提供较高性能和冗余。


二、Oracle Linux 8.3 环境准备

2.1 安装或更新系统

确保 Oracle Linux 8.3 已安装,并更新:

bash 复制代码
sudo dnf update -y
sudo reboot

2.2 安装必要软件包

LVM 与 MD(Linux RAID)管理工具:

bash 复制代码
sudo dnf install -y lvm2 mdadm

验证安装:

bash 复制代码
rpm -q lvm2 mdadm

三、RAID 设计与创建

RAID 10 结合 RAID 1 的冗余和 RAID 0 的性能,是常见的高性能存储方案。

3.1 查看磁盘设备

bash 复制代码
lsblk

输出示例:

设备 大小 类型
nvme0n1 1.8T disk
nvme1n1 1.8T disk
nvme2n1 1.8T disk
nvme3n1 1.8T disk

3.2 创建 RAID 10 阵列

bash 复制代码
sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 --metadata=1.2

检查状态:

bash 复制代码
cat /proc/mdstat

将 RAID 信息写入配置文件:

bash 复制代码
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf

四、基于 RAID 的 LVM 配置

在 RAID 设备上构建 LVM,可实现更灵活的卷管理。

4.1 创建物理卷(Physical Volume)

bash 复制代码
sudo pvcreate /dev/md0

查看:

bash 复制代码
pvs

4.2 创建卷组(Volume Group)

这里创建名为 vg_data 的卷组:

bash 复制代码
sudo vgcreate vg_data /dev/md0

查看:

bash 复制代码
vgs

4.3 创建逻辑卷(Logical Volume)

例如创建 1TB 的逻辑卷 lv_db

bash 复制代码
sudo lvcreate -n lv_db -L 1T vg_data

创建全部容量的逻辑卷 lv_all

bash 复制代码
sudo lvcreate -l 100%FREE -n lv_all vg_data

查看:

bash 复制代码
lvs

五、文件系统与挂载

本文以 XFS 文件系统为例,其与 LVM 搭配良好:

bash 复制代码
sudo mkfs.xfs /dev/vg_data/lv_db

创建挂载点并挂载:

bash 复制代码
sudo mkdir -p /data/db
sudo mount /dev/vg_data/lv_db /data/db

添加到 /etc/fstab 以实现开机自动挂载:

bash 复制代码
/dev/vg_data/lv_db /data/db xfs defaults 0 0

验证:

bash 复制代码
mount | grep /data/db

六、性能调优与评估

6.1 基准测试工具

使用 fio 对 RAID+LVM 方案做 I/O 性能评估:

bash 复制代码
sudo dnf install -y fio

6.2 典型测试案例

顺序读写
bash 复制代码
fio --name=seqrw --filename=/data/db/testfile --size=10G --bs=1M --rw=readwrite --ioengine=libaio --direct=1 --numjobs=4 --runtime=300
随机读写
bash 复制代码
fio --name=randrw --filename=/data/db/testfile --size=10G --bs=4k --rw=randrw --ioengine=libaio --direct=1 --numjobs=8 --runtime=300

6.3 性能评估结果示例

测试项目 IOPS 平均延迟 (ms) 带宽 (MB/s)
顺序读写 120,000 0.8 3,200
随机读写 180,000 1.5 720

评估分析

  • RAID 10 在多任务顺序读写下表现优异,带宽利用率高。
  • 随机 I/O 性能显著提升,适合数据库及虚拟化场景。
  • 相较单盘平均提升效果根据 SSD 型号不同,在 3~5 倍之间。

七、故障与恢复

7.1 检测磁盘损坏

bash 复制代码
cat /proc/mdstat

当发现某个磁盘故障导致 RAID 降级:

bash 复制代码
sudo mdadm --manage /dev/md0 --fail /dev/nvme1n1
sudo mdadm --manage /dev/md0 --remove /dev/nvme1n1

7.2 更换故障磁盘并重建阵列

假设新磁盘为 /dev/nvme4n1,加入:

bash 复制代码
sudo mdadm --manage /dev/md0 --add /dev/nvme4n1

查看重建进度:

bash 复制代码
watch cat /proc/mdstat

八、扩展策略:在线扩容与快照

8.1 扩容逻辑卷

假设 RAID 扩容到 6 盘阵列(/dev/md0 大小增加),则:

bash 复制代码
sudo lvextend -L +500G /dev/vg_data/lv_db
sudo xfs_growfs /data/db

8.2 LVM 快照备份

创建逻辑卷快照:

bash 复制代码
sudo lvcreate -L 50G -s -n lv_db_snap /dev/vg_data/lv_db

快照挂载并做备份:

bash 复制代码
sudo mount /dev/vg_data/lv_db_snap /mnt/snap
# 备份操作
sudo umount /mnt/snap
sudo lvremove /dev/vg_data/lv_db_snap

九、安全与监控

9.1 RAID 监控配置

添加 mdadm 邮件通知:

编辑 /etc/mdadm.conf:

bash 复制代码
MAILADDR admin@example.com

启动并开启 mdmonitor:

bash 复制代码
sudo systemctl enable --now mdmonitor

9.2 LVM 监控

使用 lvdisplayvgdisplay 定期检查:

bash 复制代码
sudo lvdisplay vg_data
sudo vgdisplay vg_data

结合监控系统(如 Zabbix、Prometheus)进行阈值报警。


十、结语

A5数据通过在 Oracle Linux 8.3 上将 LVM 与 RAID 10 结合,可以在软件层构建高性能、高可靠存储系统。本文从硬件选型、RAID 与 LVM 构建、文件系统配置、性能测试与故障处理全面覆盖实战细节,适合用于数据库服务器、虚拟化主机或高并发业务环境。

实施过程中要关注具体业务 I/O 模式、磁盘类型特性(如 NVMe 与 SAS SSD 差异)及监控策略,以确保系统长期稳定可靠。

如需针对具体业务场景做更深度的参数优化或混合型 RAID + 缓存方案(例如使用 LVM cache),可进一步扩展本文范式。

相关推荐
188号安全攻城狮19 分钟前
【PWN】HappyNewYearCTF_8_ret2csu
linux·汇编·安全·网络安全·系统安全
Tansmjs36 分钟前
使用Python自动收发邮件
jvm·数据库·python
m0_5613596738 分钟前
用Python监控系统日志并发送警报
jvm·数据库·python
Dxy12393102161 小时前
MySQL INSERT ... ON DUPLICATE KEY UPDATE 与非主键唯一字段
数据库·mysql
zhousenshan1 小时前
springboot事务管理几种方式
数据库
Yana.nice2 小时前
openssl将证书从p7b转换为crt格式
java·linux
布局呆星2 小时前
SQLite数据库的介绍与使用
数据库·python
AI逐月2 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
2401_838472512 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python
石头wang2 小时前
oracle jdbc 依赖以及对dbeaver的性能影响,如何选择oracle驱动, oracle jdbc 驱动
数据库·oracle