Linux sync命令的做用分析

Sync命令
 
在用reboot命令启动unix 系统后,系统提示出错信息,部分应用程序不能正常工做。经仔细检查系统文件,并和初始的正确备份进行比较,发现某些文件确实被破坏了,翻来覆去找不到文件遭破坏的缘由,最后想到了写缓存命令——sync,在reboot前没有运行sync命令,致使了系统文件的改变而不能正常工做。  www.2cto.com  
 
  sync命令的做用是,将有关文件系统的存储器常驻信息送入物理介质内。在暂停系统以前,好比要从新启动机器,必定要去执行sync命令。unix系统运行经验代表,为确保可靠起见,应执行两遍sync命令,这是由于sync命令完成时,并不保证信息实际写到了磁盘上,虽然已经执行了一遍这个命令。在执行sync命令之后,要等待磁盘工做灯灭了(假定有系统工做指示灯的话),再去真正暂停机器的运行或启动机器。
unix系统遭受破坏是随时均可能发生的事情,所以在启动机器或关机以前必定要运行sync命令。记住在任何状况下,慎重地执行sync命令决不会有任何坏处  www.2cto.com  
 
umount时间过长,sync命令的使用
有一个问题,好比 cp 一个文件到SD卡上,是否是首先先将这个文件写到SDRAM上,而后umount的时候再将SDRAM中的内容真正写SD卡上? 我umount的时候会过多一会才出现终端的提示符,根据写入文件的大小肯定 umount的时间?  
后来查了一下资料, Linux文件系统更新是一个复杂的过程,当用户程序对文件系统进行修改之后,例如进行了写操做,文件数据把修改记录在内核缓冲中,在数据没有写到磁盘的时候,依然可以执行用户进程,全部数据的改变都在inode的内容中获得反映。磁盘的数据更新其实是异步进行的,颇有可能在写操做已经完成很长时间之后才真正对磁盘的数据进行更新。

sync命令强制把磁盘缓冲的全部数据写入磁盘,若是在没有把磁盘缓冲区的信息写入磁盘以前终止系统,则磁盘的文件系统就会处在一个不稳定的状态。而在正常模式下即便没有对分区进行umount的操做,在重启以前系统会调用sync命令强制把磁盘缓冲的全部数据写入磁盘,而在急救模式下必须对所挂的分区进行umount的操做,系统才会调用sync命令强制把磁盘缓冲的全部数据写入磁盘,请在急救模式下的朋友注意这个问题。其实“reboot -n(Don’t sync before reboot or halt)”在重启以前不用sync命令强制把磁盘缓冲的全部数据写入磁盘,就很能说明问题。  www.2cto.com  
因此要 cp 完以后要执行 sync 命令将缓冲区的内容写到磁盘中,而后再umount 就不会出现延时了.
 
经验证,采用此方法,延迟写入问题能够解决
相关文章
相关标签/搜索