我的问题是:我的笔记本电脑有一个相对较慢的磁盘子系统(我不会购买更好的),我使用rsync
对我来说效果很好的系统来备份我的系统。但是,在备份过程中,读取的文件被读入系统的缓冲区/缓存,最终触发交换系统。
例如,运行cat Win10.qcow2 > /dev/null
60 GB 的文件将导致
free -h
total used free shared buff/cache available
Mem: 15Gi 2.2Gi 210Mi 170Mi 13Gi 12Gi
Swap: 30Gi 14Mi 30Gi
如果我写到一个真实的设备,比如我的 USB 备份驱动器,交换开始被使用,最多几个 GB。我vm.swappiness = 0
有/etc/sysctl
就其本身而言,这还不错,但由于我的磁盘系统速度较慢,计算机在响应输入时变得不那么灵活。事实上,慢得令人痛苦。
我想要的是一种限制进程可以消耗的页面缓冲区数量的方法,留出足够的空间来运行较小的命令,例如打开终端。
我尝试过的是 using lxc
,它并没有限制系统使用缓冲区,docker
我还不能完全弄清楚,我正在尝试lxd
运行,但我需要一些时间来解决这个问题。
有一个nocache
我认为可行的程序,但rsync
不输出进度指标。
默认情况下,
rsync
更新备份时,它会创建文件的副本,然后将其移动到位。为避免此步骤,您可以rsync
使用参数直接写入备份--inplace
。根据https://linux.die.net/man/1/rsync: