FetchLinux 环境下的 Linux 存储优化实操指南
一 基线评估与监控
- 建立可复现的基线:用fio跑读写混合与顺序/随机场景,记录IOPS、带宽、延迟;用iostat -x 1、vmstat 1、sar -d观察设备利用率、队列、await、svctm 等;用iotop定位进程级热点。
- 健康与寿命:用smartctl -a /dev/sdX查看SMART健康与磨损计数;对SSD启用并定时执行fstrim(例如每周),减少写入放大与垃圾回收抖动。
- 容量与增长:用ncdu、**du -shx /**定位大目录与异常增长,为后续清理与扩容提供依据。
二 文件系统与挂载选项
- 选型建议:通用场景优先ext4或XFS;需要快照/校验/在线扩容可评估Btrfs(注意其稳定性与特性取舍)。
- 挂载优化:对数据盘常用组合为noatime(减少元数据写)、barrier=1(保障断电一致性,机械盘强烈建议;SSD 在掉电风险可控时可评估关闭以换取吞吐,但需有 UPS 或日志策略兜底)、data=ordered/journal(ext4 的权衡)。示例:
- ext4:/dev/sdb1 /data ext4 defaults,noatime,barrier=1,data=ordered 0 2
- xfs:/dev/sdb1 /data xfs defaults,noatime 0 2
- 调优细节(ext4):创建文件系统时结合负载选择块大小(-b)、inode 密度(-i)与保留块比例(-m);例如大文件为主可适当增大块与 inode 间距,减少寻址与元数据压力;大容量盘可将保留块从默认5%下调(如1–2%)以释放空间(系统盘谨慎)。
- 空间回收:对Btrfs按需执行balance与scrub;对XFS定期执行xfs_fsr做碎片整理(机械盘更有收益)。
三 磁盘阵列与 I O 调度
- RAID 策略:读多写少可侧重RAID10(高并发与可靠性);容量/成本优先可选RAID5/6(注意写惩罚与重建窗口);纯吞吐且可容忍故障的场景才考虑RAID0。阵列条带大小(stripe size)应与典型 I/O 大小匹配(数据库常选64–128KB,大文件顺序流可更大)。
- I/O 调度器:
- SSD/NVMe:优先none/mq-deadline(减少调度开销,保障低延迟)。
- 机械盘:mq-deadline或cfq更稳;高并发随机 I/O 倾向 deadline。
临时切换示例:echo mq-deadline > /sys/block/sdX/queue/scheduler(重启失效,写入 udev 规则持久化)。
四 空间清理与容量管理
- 快速释放空间:清理包管理器缓存(yum clean all 或 dnf clean all)、删除旧日志与临时文件、移除无用软件包(yum autoremove);用ncdu逐级定位大文件/目录并归档或迁移。
- 分层与归档:冷热数据分层,将历史归档至对象存储/外部盘;对可压缩且访问不频繁的数据使用gzip/bzip2压缩归档。
- 配额与治理:对用户/项目启用磁盘配额防止单主体占满;建立定期清理脚本与cron任务,避免日志与缓存无限增长。
- 在线扩容:使用LVM在不中断业务的情况下扩展逻辑卷,再扩展文件系统(如 resize2fs/xfs_growfs),为业务增长预留弹性。
五 备份与恢复策略
- 增量同步:rsync -a --delete /src /dst 做目录/系统增量备份,适合日常与快速回滚;系统级备份务必排除**/proc、/sys、/dev、/tmp、/run**等虚拟与临时文件系统。
- 全量快照:tar czvf backup_$(date +%F).tar.gz --exclude={“/proc”,“/sys”,“/dev”,“/tmp”,“/run”} / 获取一致性归档,便于离线保存与迁移。
- 自动化与验证:用cron定时执行备份脚本,并定期校验归档完整性与可恢复性(如 tar -tzvf 校验、抽样恢复演练)。