如何使用 gzip LVM 加速恢复过程?

如何使用 gzip LVM 加速恢复过程?

我正在尝试使用 LVM 创建/恢复备份。它可以工作,但在具有 32GB RAM 和 SSD 的 Idel XEON 上,恢复过程大约需要 8 分钟。根据 htop 和 top,系统甚至无法启动,处理器几乎处于空闲状态,但 SSD 上的速度仅为 45.7 MB/s。

如何加快这个过程?恢复过程如下:

$ sudo gunzip -c snap_vol1-20150904_055547.gz | sudo dd of=/dev/vg0/staging

41738240+0 records in
41738240+0 records out
21369978880 bytes (21 GB) copied, 468.036 s, 45.7 MB/s

答案1

需要快速检查以下事项:

首先,如果您使用单个磁盘,则吞吐量为 90MB/s。根据磁盘和接口,这实际上可能是磁盘能够达到的吞吐量(!)

默认情况下,DD 会进行许多非常小的写入。您可以使用 BS 选项(如 bs=1M)来增加块大小,这将减少写入次数,进而减少 IO 负载。

通过管道发送数据的成本比较高,因为必须将数据复制到相对较小的缓冲区中并再次复制出来,此外还要在 gunzip(顺便说一下,它是单线程的,这是另一个瓶颈)和 dd 之间进行上下文切换。尝试先解压文件,然后 dd 它,并测量每个操作所花费的时间,以了解是什么减慢了您的速度。

答案2

Gunzip 是一个单线程进程,即使使用快速处理器,其速度也常常能达到 40/50 MB/s。

你有两种选择:

  • 使用更快的压缩器,如 lzop 或 lz4
  • 使用多线程 gzip 实现作为 pigz(参见http://zlib.net/pigz/

相关内容