正常写入系统中的内容会首先写入到缓存,然后在由守护进程写入到磁盘,所以在系统高速写入的时候断电,就可能会照成磁盘文件丢失
主要是几个参数决定的:
1. /proc/sys/vm/dirty_ratio 表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据
2. /proc/sys/vm/dirty_background_ratio 表示系统内存的百分比,意思是当写缓冲使用到系统内存多少的时候,pdflush开始向磁盘写出数据
3. /proc/sys/vm/dirty_writeback_centisecs 单位是 1/100秒。缺省是 3000,也就是 30 秒的数据就算旧了,将会刷新磁盘
占比百分之多少,这样就看系统的内存了,系统如果内存比较大,那么就到达了比较大的容量才会写,所以要根据自己的情况来,如果需要快速写,那么占比就需要设置小一点
我使用的参数是:
echo 1 > /proc/sys/vm/dirty_ratio echo 1 >/proc/sys/vm/dirty_background_ratio echo 10 >/proc/sys/vm/dirty_writeback_centisecs echo 262144 >/proc/sys/vm/min_free_kbytes echo 1000 >/proc/sys/vm/dirty_expire_centisecs
我是比较极端的情况,就是需要快速写入,所以这样做,正常情况应该设置大一些
dirty_expire_centisecs设置为10秒这样,/proc/sys/vm/dirty_writeback_centisecs设置为1秒以上
我为了表现出很明显的效果,就这样设置,这样配置了以后,确实发现复制文件从ftp进去,瞬间断电,就能保存起来,否则需要五秒钟左右,但是也看文件大小,大于缓存设置的上限也会立即写入,所以对这些值的设置很重要
参考下面有详细的解释: https://blog.csdn.net/u013463707/article/details/103902976