文件系统异步处理
问了解决文件读写的效率问题, Linux 使用的方式是透过一个称为异步处理 (asynchronously) 的方式。所谓的异步处理是这样的:当系统加载一个文件到内存后,如果该文件没有被更动过,则在内存区段的文件数据会被配置为干净(clean)的。 但如果内存中的文件数据被更改过了,此时该内存中的数据会被配置为脏的 (Dirty)。此时所有的作都还在内存中运行,并没有写入到磁盘中! 系统会不定时的将内存中配置为Dirty的数据写回磁盘,以保持磁盘与内存数据的一致性。 你也可以sync命令来手动强迫写入磁盘。
我们知道内存的速度要比硬盘快的多,因此如果能够将常用的文件放置到内存当中,这不就会添加系统性能吗? 没错!是有这样的想法!因此我们 Linux 系统上面文件系统与内存有非常大的关系:
系统会将常用的文件数据放置到主存储器的缓冲区,以加速文件系统的读/写;
承上,因此 Linux 的物理内存最后都会被用光!这是正常的情况!可加速系统效能;
你可以手动使用 sync 来强迫内存中配置为 Dirty 的文件回写到磁盘中;
若正常关机时,关机命令会主动呼叫 sync 来将内存的数据回写入磁盘内;
但若不正常关机(如跳电、死机或其他不明原因),由于数据尚未回写到磁盘内, 因此重新启动后可能会花很多时间在进行磁盘检验,甚至可能导致文件系统的损毁(非磁盘损毁)。