#Archlinux 性能优化

在优化我的 archlinux 时和 deepseek 的聊天记录汇总

##Arch Linux Btrfs 性能优化及 Swap/Zram 配置总结

###挂载选项优化建议

###Btrfs Swapfile 的创建与挂载

###Zram 与 Swapfile 协同配置

###验证与检查

fstab
# ============================================================================
# Btrfs 子卷挂载(使用 noatime,调整压缩级别,添加 autodefrag)
# ============================================================================

# 根目录(系统)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /          btrfs rw,noatime,compress=zstd:1,ssd,discard=async,space_cache=v2,autodefrag,subvol=/@ 0 0

# /home(用户数据,压缩收益高)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /home      btrfs rw,noatime,compress=zstd:1,ssd,discard=async,space_cache=v2,autodefrag,subvol=/@home 0 0

# /root(root 用户家目录)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /root      btrfs rw,noatime,compress=zstd:1,ssd,discard=async,space_cache=v2,autodefrag,subvol=/@root 0 0

# /var/log(日志文件,压缩收益低且频繁写入,禁用压缩)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /var/log   btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@log 0 0

# /var/cache(缓存,禁用压缩)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /var/cache btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@cache 0 0

# /opt(可选软件,按需可保留压缩)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /opt       btrfs rw,noatime,compress=zstd:1,ssd,discard=async,space_cache=v2,autodefrag,subvol=/@opt 0 0

# /.snapshots(快照元数据,无需压缩)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /.snapshots btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@snapshots 0 0

# /var/lib/libvirt(虚拟机磁盘,建议禁用 CoW 而非压缩,此处挂载保留压缩选项但实际会由 chattr 覆盖)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /var/lib/libvirt btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@libvirt 0 0

# /var/lib/ollama(AI 模型,大文件,建议禁用压缩)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /var/lib/ollama btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@ollama 0 0

# /var/lib/docker(容器存储,禁用压缩)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /var/lib/docker btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@docker 0 0

# /var/lib/containers(Podman 等,禁用压缩)
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /var/lib/containers btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@containers 0 0

# ============================================================================
# Swap 子卷挂载(@swap 独立挂载到 /swap)
# ============================================================================
UUID=fcb0aa3e-7abd-474d-9104-d82d9464697e /swap      btrfs rw,noatime,compress=no,ssd,discard=async,space_cache=v2,subvol=/@swap 0 0

# ============================================================================
# Swapfile 激活(低优先级,作为 Zram 的后备)
# ============================================================================
/swap/swapfile none swap sw,pri=10 0 0

# ============================================================================
# tmpfs(/tmp 内存文件系统)
# ============================================================================
tmpfs /tmp tmpfs rw,nodev,nosuid,noexec,size=4G 0 0

###挂载选项优化建议

###Swapfile 的创建与挂载

##chattr 命令与文件属性

###chattr 基本概念

###chattr 与 chmod 的区别

##NTFS 分区挂载与权限问题

###NTFS 挂载权限解决方案

#另一组对话

用户计划在新笔记本(星曜14 AI9 365,32GB内存)上配置双硬盘(1TB主盘 + 2230系统盘),安装Windows + Arch Linux双系统,运行Colibri大模型项目,要求高性能、数据共享、Btrfs快照等特性。

##硬盘与文件系统规划

###2230系统盘选型与速度要求

###文件系统性能对比

###读写速度受文件系统影响

##分区与子卷方案设计

###双硬盘分区布局(最终推荐)

1TB主盘(Windows侧重)

2230系统盘(Linux侧重)

###Btrfs子卷布局建议

###关键设计决策说明

##Swap与ZRAM配置策略

###Swap的作用与方案对比

###针对32GB内存 + Colibri(需25GB)的推荐配置

###Btrfs上Swapfile的正确配置

bash
# 在@swap子卷挂载后,确保子卷已禁用CoW
sudo chattr +C /swap
sudo dd if=/dev/zero of=/swap/swapfile bs=1M count=16384 status=progress
sudo chmod 600 /swap/swapfile
sudo mkswap /swap/swapfile
sudo swapon /swap/swapfile

##挂载参数优化

###当前配置问题分析(用户现有配置)

###新机器推荐挂载参数矩阵

系统核心子卷(@@home@log@cache

fstab
UUID=xxx  /          btrfs  rw,noatime,compress=zstd:2,ssd,discard=async,space_cache=v2  0 0

(去掉 autodefrag

高负载/大文件子卷(@containers@docker@ollama

fstab
UUID=xxx  /var/lib/containers  btrfs  rw,noatime,nodatacow,ssd,discard=async,space_cache=v2  0 0

(关闭压缩和CoW)

Swap专用子卷(@swap

fstab
UUID=xxx  /swap      btrfs  rw,noatime,nodatacow,noauto  0 0

/tmp子卷

fstab
UUID=xxx  /tmp       btrfs  rw,noatime,nodatacow,ssd,discard=async,space_cache=v2  0 0

##/tmp自动清理方案

###使用systemd-tmpfiles管理(推荐)

创建 /etc/tmpfiles.d/tmp.conf

conf
# 清理/tmp下超过1天未被访问的文件
d /tmp 1777 root root 1d

###备选方案(不推荐)

使用cron定时任务:0 3 * * * /usr/bin/find /tmp -type f -atime +1 -delete

##跨系统数据共享方案

###NTFS D盘(文档、视频等低频数据)

###Ext4 Data分区(模型权重等高性能数据)

##启动引导方案

###GRUB能否引导另一硬盘的Windows

###/boot子卷与GRUB兼容性

###替代启动加载器

##性能优化原则总结

  1. 优先保证可用内存容量,而非追求内存速度:OOM Kill是最大性能杀手。
  2. 区分对待不同负载:系统/日志保留压缩;模型/容器/swap关闭CoW和压缩。
  3. 善用ZRAM + Swapfile双层策略:ZRAM做高速缓冲,Swapfile做最后防线。
  4. 避免全局优化陷阱autodefrag对大文件无益,应全局移除。
  5. 硬件是根本:32GB内存是运行Colibri的门槛,NVMe SSD顺序读5000MB/s以上为佳。

本总结涵盖从硬盘选型、分区规划、文件系统对比、挂载参数优化、Swap/ZRAM配置到跨系统共享的全部关键决策点,可直接作为新机器部署的操作指南。