在 CentOS 上 extract(解压)速度慢,常见原因和解法如下,按「最常见 → 进阶」给你一套可落地的优化方案。
top
iostat -x 1
重点看:
| 格式 | 慢 | 快 |
|---|---|---|
| tar.gz | tar zxvf |
pigz |
| tar.bz2 | tar jxvf |
pbzip2 |
| tar.xz | tar Jxvf |
xz -T0 |
示例:
# 多线程解压 gzip
tar -I pigz -xf file.tar.gz
# xz 多线程
xz -d -T0 file.tar.xz
安装:
yum install -y pigz pbzip2
❌ 不要解压到:
✅ 建议:
mkdir /dev/shm/extract
tar -xf file.tar.gz -C /dev/shm/extract
(内存盘,仅适合临时)
或解压到 SSD / 本地盘
❌ 慢:
scp file.tar.gz host:/tmp && ssh host "tar zxvf /tmp/file.tar.gz"
✅ 快:
echo deadline > /sys/block/sda/queue/scheduler
或(CentOS 8+):
echo mq-deadline > /sys/block/sda/queue/scheduler
sysctl -w vm.vfs_cache_pressure=50
sysctl -w vm.swappiness=10
mount -t tmpfs tmpfs /mnt/tmp -o size=8G
tar --no-same-owner --no-same-permissions -xf file.tar.gz
cat file.tar | parallel --pipe --recend '' tar -xf -
tarfile 很慢 → 用 subprocess + tarcommons-compress + 多线程如果你愿意,可以告诉我:
我可以直接给你最优命令。