温馨提示×

ubuntu环境如何提高磁盘性能

小樊
42
2025-12-31 23:07:50
栏目: 智能运维

Ubuntu 磁盘性能优化实用指南

一 基线评估与清理

  • 评估现状:用命令查看空间与占用(如:df -hdu -h --max-depth=1 /path),定位大目录与异常增长点;用 lsblk 核对磁盘与分区布局。
  • 快速清理:清理 APT 缓存与无用包(sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove),删除旧内核(谨慎保留当前与上一个版本),清理系统日志与临时文件(如 journalctl --vacuum-time=7d 清理 7 天前日志)。
  • 图形化辅助:使用 Disk Usage Analyzer(Baobab) 直观定位大文件;用 StacerBleachBit 批量清理浏览器缓存、缩略图、应用缓存与隐私痕迹。
  • 说明:释放空间可避免“磁盘满/接近满”导致的性能劣化与抖动,是后续调优的基础步骤。

二 文件系统与挂载参数

  • 选择文件系统:通用场景优先 Ext4;需要快照/校验/压缩可评估 Btrfs/XFS
  • 减少元数据写入:在 /etc/fstab 中为数据盘或可接受风险的场景加入 noatime(必要时 nodiratime),示例:
    • UUID=xxx /data ext4 defaults,noatime,nodiratime 0 2
  • SSD 的 TRIM:
    • 在线丢弃:在 fstab 加入 discard(简单但可能有轻微性能波动)。
    • 周期丢弃:推荐定时任务执行 fstrim -av(如每周一次),更可控。
  • 日志权衡:关闭 Ext4 日志可降写放大,但断电/崩溃风险上升;确需关闭可用 tune2fs -O ^has_journal /dev/sdX && e2fsck -f /dev/sdX,恢复用 -O has_journal
  • 写屏障:在确保有电池/UPS或底层具备写缓存一致性时,才考虑 barrier=0;数据库等关键负载不建议关闭。

三 调度器与虚拟环境优化

  • 物理机/SSD:优先 noop(或 deadline);机械盘可选 deadlinebfq。查看与临时设置:
    • cat /sys/block/sdX/queue/scheduler
    • echo noop > /sys/block/sdX/queue/scheduler
  • 虚拟机(KVM/QEMU):
    • 使用 virtio-blk 半虚拟化驱动;存储控制器选 virtio
    • 宿主机存储为机械盘时,宿主机侧调度器用 noop/deadline;存储为 SSD/NVMe 时,宿主机侧可用 mq-deadline
    • 虚拟机磁盘缓存模式常用 writeback(权衡一致性与性能),并确保宿主机启用 virtio 与合适的 I/O 虚拟化。

四 内存与交换策略

  • 适度降低换出倾向:将 vm.swappiness 设为 10–30(桌面/通用服务器),减少不必要的 swap 写入;仅在大内存且明确不需要 swap 的场景再考虑更低值。
  • 压缩内存与 ZRAM:启用 zram-config 提供压缩内存交换,缓解内存压力并降低磁盘 swap 使用。
  • 临时目录放入内存:将 /tmp/var/tmp(必要时 /var/log)挂载为 tmpfs,减少 SSD 写放大(注意内存占用与日志留存策略)。
  • 示例 fstab 条目:
    • tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
    • tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

五 阵列与卷管理以及验证

  • RAID/LVM:
    • 提升并发与可靠性可选 RAID10(性能与冗余均衡);仅追求吞吐可用 RAID0(无冗余)。
    • LVM 条带化可提升并行度,示例:lvcreate -i 2 -I 64 -L 10G vg_name lv_name(2 路条带、条带单元 64KB)。
  • 对齐与分区:确保 4K 对齐(SSD/NVMe 强烈建议),使用 GPT 分区表适配大容量磁盘。
  • 基准与监控:
    • 顺序性能:hdparm -tT /dev/sdX
    • 综合 I/O:fio --name=randread --filename=testfile --bs=4k --size=1G --readwrite=randread --runtime=60 --time_based
    • 实时监控:iostat -x 1iotop
  • 风险提示:修改调度器、关闭日志/屏障、调整 RAID/LVM 等,务必在测试环境验证并准备回滚方案;生产环境变更前做好数据备份。

0