sync命令詳解


  

轉:https://blog.csdn.net/everything1209/article/details/50423679 

1.誰和誰同步?

2.為什么要同步?復制移動的過程不是同步的嗎,都發生了什么事情?

3.內存和硬盤?

數據同步寫入磁盤:sync

Linux系統中,為了加快數據的讀取速度,所以在默認的情況中, 某些已經加載內存中的數據將不會直接被寫回硬盤,而是先緩存在內存當中,如此一來, 如果一個數據被你重復的改寫,那么由於他尚未被寫入硬盤中,因此可以直接由內存當中讀取出來, 在速度上一定是快上相當多的!

不過,如此一來也造成些許的困擾,那就是萬一你的系統因為某些特殊情況造成不正常關機 (例如停電或者是不小心踢到power)時,由於數據尚未被寫入硬盤當中,哇!所以就會造成數據的升級不正常啦! 那要怎么辦呢?這個時候就需要sync這個命令來進行數據的寫入動作啦! 直接在文字接口下輸入sync,那么在內存中尚未被升級的數據,就會被寫入硬盤中!所以,這個命令在系統關機或重新啟動之前, 很重要喔!最好多運行幾次(2-4次)!

雖然目前的 shutdown/reboot/halt 等等命令均已經在關機前進行了 sync 這個工具的呼叫, 不過,多做幾次總是比較放心點~呵呵~

  1. [root@hotapply home]# sync

  2. [root@hotapply home]# sync

sync命令 linux同步數據命令

格式: sync 

用途:更新 i-node 表,並將緩沖文件寫到硬盤中。

功能:sync命令是在關閉Linux系統時使用的。 用戶需要注意的是,不能用簡單的關閉電源的方法關閉系統,因為Linux象其他Unix系統一樣,在內存中緩存了許多數據,在關閉系統時需要進行內存數據與硬盤數據的同步校驗,保證硬盤數據在關閉系統時是最新的,只有這樣才能確保數據不會丟失。一般正常的關閉系統的過程是自動進行這些工作的,在系統運行過程中也會定時做這些工作,不需要用戶干預。 sync命令是強制把內存中的數據寫回硬盤,以免數據的丟失。用戶可以在需要的時候使用此命令。

sync 命令運行 sync 子例程。如果必須停止系統,則運行 sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。

 

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 就不會出現延時了.
 
經驗證,采用此方法,延遲寫入問題可以解決

原文鏈接:https://www.linuxidc.com/Linux/2012-06/61871.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM