温馨提示×

centos分卷速度为何很慢

小樊
41
2026-09-21 12:29:53
栏目: 智能运维

在 CentOS(或一般 Linux)下进行分卷(压缩/打包分卷,如 tar + split,或 zip -s 等)速度很慢,通常不是“分卷”本身的问题,而是整体 I/O、CPU 或参数配置导致的。下面按常见原因给你梳理:


一、最常见原因

1. 磁盘 I/O 成为瓶颈(最常见)

分卷本质上还是 读原文件 + 写多个分卷文件

常见慢点:

  • 源文件和分卷输出在同一块机械硬盘
  • 磁盘本身有坏道 / 负载高
  • 使用了网络存储(NFS / CIFS)

✅ 建议:

iostat -x 1

%util 是否接近 100%

优化:

  • 源盘 → 目标盘分开
  • 用 SSD
  • 避免 NFS 上直接分卷

2. 压缩算法太重(CPU 瓶颈)

如果你用的是:

tar czf - | split

zip -9 -s 1g

gzip -9 / zip -9 非常吃 CPU

✅ 检查 CPU:

top

看是不是 gzip / zip 占满单核

✅ 优化:

  • -1 或默认压缩
  • pigz(多线程 gzip)
tar cf - dir | pigz | split -b 1G - file.tar.gz.

3. split 本身不是慢点

split 只是按字节切文件,几乎不耗资源

如果你发现:

tar czf - | split

慢 → 慢在 tar czf


二、文件系统 & 参数问题

4. 小文件极多(几万~几百万)

分卷慢 ≠ 切文件慢
而是 tar 遍历小文件慢

表现:

  • CPU 不高
  • 磁盘 util 不高
  • 但就是慢

✅ 优化:

  • 先打包不压缩
tar cf - dir | split
  • 或先用 find | cpio

5. 分卷大小设置不合理

例如:

split -b 10M

→ 生成成千上万个文件
→ 文件系统 metadata 开销大

✅ 建议:

  • 分卷 ≥ 100M(常用 1G / 2G)

三、CentOS 特有因素

6. SELinux 影响(较少但存在)

某些目录(如 /var/www)开启 SELinux 时:

  • 读文件触发策略检查
  • 轻微拖慢

可临时验证:

setenforce 0

7. 老内核 / 老 coreutils

CentOS 7 的 split / tar 版本较老
在超大文件时效率一般

✅ 可选:

  • pv 观察瓶颈
tar cf - dir | pv | split

四、快速定位方法(推荐)

看是 CPU 还是 IO 慢

tar czf test.tar.gz bigfile
  • 慢 → CPU
  • 快,但 | split 慢 → IO / 文件系统

五、典型加速方案汇总

最快组合(大文件)

tar cf - dir | split -b 2G - out.tar.

要压缩且快

tar cf - dir | pigz | split -b 2G - out.tar.gz.

小文件多

tar cf - dir | split -b 2G

如果你愿意,可以告诉我:

  • CentOS 版本
  • 分卷命令
  • 文件类型(大文件 / 小文件)
  • 磁盘类型(HDD / SSD / NFS)

我可以直接给你最优命令

0