RAID 与 Swap 管理
本文涵盖三个关键的存储管理主题:使用 mdadm 创建和管理软件 RAID 阵列、创建和调优 Swap 空间,以及使用 XFS 磁盘配额控制磁盘使用。
软件 RAID 基础 (mdadm)
Section titled “软件 RAID 基础 (mdadm)”RAID 级别概述
Section titled “RAID 级别概述”| RAID 级别 | 最少磁盘数 | 冗余 | 可用空间 | 适用场景 |
|---|---|---|---|---|
| RAID 0 | 2 | 无 | N x 磁盘大小 | 高性能、非关键数据 |
| RAID 1 | 2 | 镜像 | 1 x 磁盘大小 | 系统盘、关键数据 |
| RAID 5 | 3 | 单盘容错 | (N-1) x 磁盘大小 | 通用存储 |
| RAID 10 | 4 | 镜像+条带 | N/2 x 磁盘大小 | 数据库、高 IOPS |
安装 mdadm
Section titled “安装 mdadm”sudo dnf install mdadm -y在创建 RAID 阵列之前,确认磁盘没有现有分区:
lsblklsblk -f /dev/sdb /dev/sdcsudo blkid /dev/sdb /dev/sdcsudo wipefs -a /dev/sdbsudo wipefs -a /dev/sdc创建 RAID 1(镜像)
Section titled “创建 RAID 1(镜像)”sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdccat /proc/mdstatsudo mdadm --detail /dev/md0创建 RAID 5
Section titled “创建 RAID 5”sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd创建 RAID 10
Section titled “创建 RAID 10”sudo mdadm --create /dev/md2 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde格式化并挂载 RAID 阵列
Section titled “格式化并挂载 RAID 阵列”sudo mkfs.xfs /dev/md0sudo mkdir -p /mnt/raidsudo mount /dev/md0 /mnt/raidecho '/dev/md0 /mnt/raid xfs defaults 0 0' | sudo tee -a /etc/fstab保存 RAID 配置
Section titled “保存 RAID 配置”mdadm 配置必须保存,否则重启后阵列可能无法自动组装:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.confsudo dracut --force监控 RAID 阵列
Section titled “监控 RAID 阵列”cat /proc/mdstatsudo mdadm --detail /dev/md0sudo mdadm --monitor --mail=admin@example.com --delay=300 /dev/md0 --daemonise也可以通过 systemd 自动监控:
sudo systemctl enable mdmonitorsudo systemctl start mdmonitor模拟磁盘故障与重建
Section titled “模拟磁盘故障与重建”sudo mdadm --manage /dev/md0 --fail /dev/sdccat /proc/mdstatsudo mdadm --detail /dev/md0sudo mdadm --manage /dev/md0 --remove /dev/sdcsudo mdadm --manage /dev/md0 --add /dev/sdfwatch cat /proc/mdstatsudo mdadm --manage /dev/md0 --add-spare /dev/sdg当阵列中有磁盘故障时,热备盘会自动加入重建。
Swap 管理
Section titled “Swap 管理”Swap 空间在物理内存不足时提供额外的虚拟内存。可以通过交换分区或交换文件来实现。
查看当前 Swap 状态
Section titled “查看当前 Swap 状态”free -hswapon --show创建 Swap 文件
Section titled “创建 Swap 文件”从 EL 8 开始,推荐使用 Swap 文件而非 Swap 分区,更加灵活:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096sudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfileswapon --showfree -hecho '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab创建 Swap 分区
Section titled “创建 Swap 分区”如果需要使用专用分区作为 Swap:
sudo fdisk /dev/sdb在 fdisk 中执行:n 创建新分区,t 修改类型为 82(Linux swap),w 保存。
sudo mkswap /dev/sdb1sudo swapon /dev/sdb1echo '/dev/sdb1 none swap defaults 0 0' | sudo tee -a /etc/fstab调整 Swap 大小
Section titled “调整 Swap 大小”增大 Swap 文件
Section titled “增大 Swap 文件”sudo swapoff /swapfilesudo dd if=/dev/zero of=/swapfile bs=1M count=8192sudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile删除 Swap
Section titled “删除 Swap”sudo swapoff /swapfilesudo rm /swapfile记得同时从 /etc/fstab 中移除对应的行。
Swappiness 调优
Section titled “Swappiness 调优”vm.swappiness 参数控制内核使用 Swap 的倾向(0-100):
- 0 — 尽可能避免使用 Swap(仅在内存极度不足时使用)
- 10 — 适合数据库服务器,减少 Swap 使用
- 60 — 系统默认值
- 100 — 积极使用 Swap
cat /proc/sys/vm/swappinesssudo sysctl vm.swappiness=10echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-swappiness.confsudo sysctl -p /etc/sysctl.d/99-swappiness.conf推荐值:
| 场景 | swappiness |
|---|---|
| 数据库服务器 | 10 |
| Web 服务器 | 10-30 |
| 桌面系统 | 60 |
| 内存充足的服务器 | 1-10 |
XFS 磁盘配额 (xfs_quota)
Section titled “XFS 磁盘配额 (xfs_quota)”磁盘配额用于限制用户或组在文件系统上的磁盘使用量。
启用 XFS 配额
Section titled “启用 XFS 配额”需要在挂载时启用配额支持:
sudo vi /etc/fstab将挂载选项修改为包含 uquota,gquota:
/dev/md0 /mnt/data xfs defaults,uquota,gquota 0 0sudo umount /mnt/datasudo mount /mnt/data或者不卸载直接重新挂载:
sudo mount -o remount,uquota,gquota /mnt/data查看配额状态
Section titled “查看配额状态”sudo xfs_quota -x -c 'report -h' /mnt/datasudo xfs_quota -x -c 'report -u -h' /mnt/datasudo xfs_quota -x -c 'report -g -h' /mnt/data设置用户配额
Section titled “设置用户配额”sudo xfs_quota -x -c 'limit bsoft=5g bhard=10g testuser' /mnt/data- bsoft — 软限制(可暂时超过,超过后有宽限期)
- bhard — 硬限制(绝对不可超过)
sudo xfs_quota -x -c 'limit isoft=10000 ihard=15000 testuser' /mnt/datasudo xfs_quota -x -c 'limit -g bsoft=50g bhard=100g devteam' /mnt/data查看特定用户配额
Section titled “查看特定用户配额”sudo xfs_quota -x -c 'quota -u -h testuser' /mnt/datasudo xfs_quota -x -c 'timer -u 7d' /mnt/data- RAID 不是备份 — RAID 只提供冗余,不能替代数据备份
- 监控 RAID 状态 — 定期检查阵列健康,启用邮件告警
- 配置热备盘 — 关键阵列应配置热备盘以实现自动重建
- 合理规划 Swap — 通常建议 Swap 大小为物理内存的 1-2 倍(最大不超过 8GB)
- 调优 swappiness — 数据库和高性能场景应降低 swappiness 值
- 使用配额防止磁盘满 — 多用户环境下配置磁盘配额避免单一用户占满空间