限制 tar 读取速度

限制 tar 读取速度

我正在使用tar机器进行备份。但是,它使用大量 I/O 并减慢了整个机器的速度。

那么有没有办法限制的速度tar

我知道pv,但它只限制速度。因为我使用 进行增量备份tar --listed-incremental,所以这只适用于第一个完整备份(如果只有很小的更改,后续增量备份将消耗大量读取 I/O)。

我尝试结合使用nice和来降低备份的总体优先级ionice,但这并没有真正改变任何东西。

信息:它是 Debian 9 机器,文件驻留在 LVM 卷顶部的 ext4 文件系统上。

答案1

您可以使用 运行 tar 命令ionice。像这样:

ionice -c3 tar --listed-incremental [...]

这将使该tar进程仅在没有其他进程等待 I/O 时才执行 I/O。

在 Debian 中,该ionice实用程序位于 package 中util-linux,因此您可能需要先安装它。

与普通 (cpu)nice实用程序一样,进程的 I/O 调度程序类由其子进程继承。当我计划做需要大量资源的事情时,我不希望用户的 I/O 速度因此变慢。我经常这样启动我的 shell:

nice ionice -c3 bash

那么我从那个 shell 所做的一切都会非常非常好:)

答案2

使用cgroup

mkdir -p /sys/fs/cgroup/blkio/g1
echo "8:0 1048576" > /sys/fs/cgroup/blkio/g1/blkio.throttle.read_bps_device
pgrep -f tar > /sys/fs/cgroup/blkio/g1/cgroup.procs

https://andrestc.com/post/cgroups-io/

相关内容