温馨提示×

ubuntu怎样优化磁盘性能

小樊
31
2025-12-19 08:09:44
栏目: 智能运维

Ubuntu磁盘性能优化实用指南

一 基础清理与空间回收

  • 清理 APT 缓存与旧包:执行 sudo apt autoremovesudo apt clean,可快速释放 /var/cache/apt/archives 下可能占用的数 GB 空间。
  • 删除旧内核:先通过 uname -r 确认当前运行内核,再用 dpkg --list | grep linux-image 列出已安装内核,最后 sudo apt purge linux-image-<旧版本>-generic 删除不再需要的版本(务必保留当前运行内核)。
  • 日志与临时文件:用 sudo journalctl --vacuum-time=30d 保留最近 30 天 的 systemd 日志;按需清理 /var/log/ 下的旧日志;用户级缓存如缩略图与回收站可用 rm -rf ~/.cache/thumbnails/ ~/.local/share/Trash/**。
  • 可视化与交互式定位大文件:安装并使用 Baobab(磁盘占用可视化)与 ncdu(交互式目录大小分析,适合定位 >100MB 的大文件)。
  • Snap 与容器残留:Snap 默认保留至少 2 个旧版本,可用 snap list 查看并用 sudo snap remove --purge <包名> 清理;Docker 可用 docker system prune -a --volumes 清理未使用的镜像、容器与卷。
  • 建议:清理前先备份重要数据,避免误删系统关键目录。

二 SSD 与文件系统优化

  • 对齐与分区:安装或分区时尽量保证 4K 对齐;减少过多小分区有助于顺序与合并写。
  • 挂载选项:在 /etc/fstab 为 ext4 分区添加 noatime(必要时配合 nodiratime)以减少元数据写入;如设备与内核支持,可启用 discard 以定期下发 TRIM,示例:
    • UUID=xxx / ext4 defaults,noatime,nodiratime,discard 0 1
  • 日志权衡:ext4 默认启用 日志(journal) 提升一致性;若追求写入更少且能接受断电风险,可在离线环境用 tune2fs -O ^has_journal /dev/sdX 关闭,并用 e2fsck -f /dev/sdX 检查;验证可用 dmesg | grep EXT4 查看 “mounted filesystem without journal”。
  • 验证 TRIM 支持:用 hdparm -I /dev/sdX | grep “TRIM supported” 确认 SSD 支持 TRIM;内核自 2.6.33 起支持 TRIM。
  • 说明:现代内核已能较好处理 SSD 写入放大与调度,如无特殊需求不必过度牺牲日志与一致性。

三 内核与 I O 调度

  • 调度器选择:查看当前调度器 cat /sys/block/sdX/queue/scheduler。对 SSD虚拟化 环境,优先 noop(或 deadline);传统 cfq 已不推荐。
  • 持久化设置:
    • 物理机/虚拟机通用:在 /etc/rc.local 中加入 echo noop > /sys/block/sdX/queue/scheduler(确保 rc.local 有执行权限)。
    • GRUB 方式(部分环境):在 /etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT 中加入 elevator=noop,执行 sudo update-grub 后重启。
  • 虚拟机的额外要点:在 KVM/QEMU 中使用 virtio-blk 作为磁盘控制器,并在虚拟化平台将磁盘缓存模式设为 writeback 可显著提升 I/O 性能(需权衡数据安全策略)。

四 内存与交换策略

  • 减少换出倾向:调整 vm.swappiness(默认 60)。桌面/内存充足场景可设为 10–30;若主要运行内存密集型应用且可接受 OOM 风险,可更低(如 1–10),但一般不建议设为 0(可能导致内存紧张时无法回收)。
  • 压缩内存交换:启用 zram-config(Ubuntu 提供该软件包)以 zram 作为交换空间,降低磁盘交换压力并提升响应。
  • 查看与临时调整:用 cat /proc/sys/vm/swappiness 查看;临时调整 sudo sysctl -w vm.swappiness=<值>;永久调整写入 /etc/sysctl.conf
  • 说明:降低 swappiness 会减少磁盘写入,但过度降低可能在内存紧张时触发 OOM Killer

五 监控与验证

  • 性能测试:
    • 顺序吞吐:hdparm -tT /dev/sdX
    • 灵活 I/O:使用 fio 进行随机/顺序、并发等场景测试,例如:
      • fio --name=randread --filename=testfile --bs=4k --size=1G --readwrite=randread --runtime=60 --time_based
  • 运行时监控:
    • iostat(磁盘 I/O 统计)
    • iotop(按进程实时 I/O)
  • 建议:在调整前后进行对比测试,观察 吞吐、IOPS、延迟CPU iowait,以验证优化成效。

0