PageCache中需要回写到磁盘的数据为脏数据。在应用程序通知系统保存脏数据时,应用可以选择直接将数据写入磁盘(O_DIRECT),或者先写到PageCache(非O_DIRECT模式)。非O_DIRECT模式,对于缓存在PageCache中的数据的操作,都在内存中进行,减少了对磁盘的操作。
系统中提供了以下参数来调整策略:
# echo 2000 > /proc/sys/vm/dirty_expire_centisecs
echo 8 > /proc/sys/vm/dirty_background_ratio
如果加大了脏数据的缓存大小和时间,在意外断电情况下,丢失数据的概率会变多。因此对于需要立即存盘的数据,应该采用O_DIRECT模式避免关键数据的丢失。