跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    RAID 与 Swap 管理

    本文涵盖三个关键的存储管理主题:使用 mdadm 创建和管理软件 RAID 阵列、创建和调优 Swap 空间,以及使用 XFS 磁盘配额控制磁盘使用。

    RAID 级别最少磁盘数冗余可用空间适用场景
    RAID 02无N x 磁盘大小高性能、非关键数据
    RAID 12镜像1 x 磁盘大小系统盘、关键数据
    RAID 53单盘容错(N-1) x 磁盘大小通用存储
    RAID 104镜像+条带N/2 x 磁盘大小数据库、高 IOPS
    安装 mdadm
    sudo dnf install mdadm -y

    在创建 RAID 阵列之前,确认磁盘没有现有分区:

    查看可用磁盘
    lsblk
    确认目标磁盘上没有需要保留的数据
    lsblk -f /dev/sdb /dev/sdc
    sudo blkid /dev/sdb /dev/sdc
    清除磁盘上的现有签名
    sudo wipefs -a /dev/sdb
    sudo wipefs -a /dev/sdc
    创建 RAID 1 阵列
    sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
    查看 RAID 阵列状态
    cat /proc/mdstat
    查看阵列详细信息
    sudo mdadm --detail /dev/md0
    创建 RAID 5 阵列(三块盘)
    sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
    创建 RAID 10 阵列(四块盘)
    sudo mdadm --create /dev/md2 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
    创建 XFS 文件系统
    sudo mkfs.xfs /dev/md0
    创建挂载点并挂载
    sudo mkdir -p /mnt/raid
    sudo mount /dev/md0 /mnt/raid
    添加到 fstab 实现开机自动挂载
    echo '/dev/md0 /mnt/raid xfs defaults 0 0' | sudo tee -a /etc/fstab

    mdadm 配置必须保存,否则重启后阵列可能无法自动组装:

    保存 RAID 配置到 mdadm.conf
    sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
    更新 initramfs 以包含 RAID 配置
    sudo dracut --force
    查看 RAID 阵列实时状态
    cat /proc/mdstat
    查看阵列详细信息
    sudo mdadm --detail /dev/md0
    启用 mdadm 邮件监控
    sudo mdadm --monitor [email protected] --delay=300 /dev/md0 --daemonise

    也可以通过 systemd 自动监控:

    启用 mdmonitor 服务
    sudo systemctl enable mdmonitor
    sudo systemctl start mdmonitor
    模拟磁盘故障
    sudo mdadm --manage /dev/md0 --fail /dev/sdc
    查看降级状态
    cat /proc/mdstat
    sudo mdadm --detail /dev/md0
    移除故障磁盘
    sudo mdadm --manage /dev/md0 --remove /dev/sdc
    添加新磁盘进行重建
    sudo mdadm --manage /dev/md0 --add /dev/sdf
    监控重建进度
    watch cat /proc/mdstat
    为阵列添加一块热备盘
    sudo mdadm --manage /dev/md0 --add-spare /dev/sdg

    当阵列中有磁盘故障时,热备盘会自动加入重建。

    Swap 空间在物理内存不足时提供额外的虚拟内存。可以通过交换分区或交换文件来实现。

    查看当前 Swap 使用情况
    free -h
    查看所有 Swap 设备
    swapon --show

    从 EL 8 开始,推荐使用 Swap 文件而非 Swap 分区,更加灵活:

    创建 4GB 的 Swap 文件
    sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
    设置正确的权限
    sudo chmod 600 /swapfile
    格式化为 Swap
    sudo mkswap /swapfile
    启用 Swap 文件
    sudo swapon /swapfile
    验证 Swap 已启用
    swapon --show
    free -h
    添加到 fstab 实现开机自动挂载
    echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

    如果需要使用专用分区作为 Swap:

    使用 fdisk 创建 Swap 分区(类型 82)
    sudo fdisk /dev/sdb

    在 fdisk 中执行:n 创建新分区,t 修改类型为 82(Linux swap),w 保存。

    格式化 Swap 分区
    sudo mkswap /dev/sdb1
    启用 Swap 分区
    sudo swapon /dev/sdb1
    添加到 fstab
    echo '/dev/sdb1 none swap defaults 0 0' | sudo tee -a /etc/fstab
    禁用当前 Swap
    sudo swapoff /swapfile
    重新创建更大的 Swap 文件(8GB)
    sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    禁用并删除 Swap 文件
    sudo swapoff /swapfile
    sudo rm /swapfile

    记得同时从 /etc/fstab 中移除对应的行。

    vm.swappiness 参数控制内核使用 Swap 的倾向(0-100):

    • 0 — 尽可能避免使用 Swap(仅在内存极度不足时使用)
    • 10 — 适合数据库服务器,减少 Swap 使用
    • 60 — 系统默认值
    • 100 — 积极使用 Swap
    查看当前 swappiness 值
    cat /proc/sys/vm/swappiness
    临时修改 swappiness
    sudo sysctl vm.swappiness=10
    永久修改 swappiness
    echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-swappiness.conf
    sudo sysctl -p /etc/sysctl.d/99-swappiness.conf

    推荐值:

    场景swappiness
    数据库服务器10
    Web 服务器10-30
    桌面系统60
    内存充足的服务器1-10

    磁盘配额用于限制用户或组在文件系统上的磁盘使用量。

    需要在挂载时启用配额支持:

    编辑 fstab 启用用户配额和组配额
    sudo vi /etc/fstab

    将挂载选项修改为包含 uquota,gquota:

    fstab 示例
    /dev/md0 /mnt/data xfs defaults,uquota,gquota 0 0
    重新挂载文件系统
    sudo umount /mnt/data
    sudo mount /mnt/data

    或者不卸载直接重新挂载:

    重新挂载(不卸载)
    sudo mount -o remount,uquota,gquota /mnt/data
    查看配额状态报告
    sudo xfs_quota -x -c 'report -h' /mnt/data
    查看所有用户配额
    sudo xfs_quota -x -c 'report -u -h' /mnt/data
    查看所有组配额
    sudo xfs_quota -x -c 'report -g -h' /mnt/data
    为用户设置软限制 5GB、硬限制 10GB
    sudo xfs_quota -x -c 'limit bsoft=5g bhard=10g testuser' /mnt/data
    • bsoft — 软限制(可暂时超过,超过后有宽限期)
    • bhard — 硬限制(绝对不可超过)
    设置 inode 配额(限制文件数量)
    sudo xfs_quota -x -c 'limit isoft=10000 ihard=15000 testuser' /mnt/data
    为组设置磁盘配额
    sudo xfs_quota -x -c 'limit -g bsoft=50g bhard=100g devteam' /mnt/data
    查看指定用户的配额使用情况
    sudo xfs_quota -x -c 'quota -u -h testuser' /mnt/data
    设置软限制的宽限期为 7 天
    sudo xfs_quota -x -c 'timer -u 7d' /mnt/data
    1. RAID 不是备份 — RAID 只提供冗余,不能替代数据备份
    2. 监控 RAID 状态 — 定期检查阵列健康,启用邮件告警
    3. 配置热备盘 — 关键阵列应配置热备盘以实现自动重建
    4. 合理规划 Swap — 按 RHEL 9 官方建议:内存 8–64GB 时 swap 至少 4GB;>64GiB 按负载决定、最少 4GiB。「1–2 倍内存」「最大 8GB」是旧经验法则,已被官方替换
    5. 调优 swappiness — 数据库和高性能场景应降低 swappiness 值
    6. 使用配额防止磁盘满 — 多用户环境下配置磁盘配额避免单一用户占满空间