題 是否可以dd您啟動的當前磁盤?


我有一個FreeNAS的副本從現場USB磁盤上運行。而且我想對它進行備份。

在努力避免破壞完美工作系統的同時,我能夠做到 dd 操作系統運行時的磁盤?

或者我必須關閉機器並運行 dd 另一台機器?


20
2018-03-04 16:10


起源




答案:


你可以跑 dd 在運行的磁盤上。應該避免在磁盤結構發生重大變化時這樣做。你也應該 fschk 完成後的目的地。系統在備份期間越安靜越好。

如果要使用`dd',運行冷備份(文件系統已卸載)是最佳選擇。

備份正在運行的系統有更好的選擇。

  • tar 要么 cpio 將讀取文件並合理地處理打開的文件。您可能會錯過備份期間發生的一些更改。
  • rsync 表現得像 tar 關於打開文件,以及備份期間缺少更改。它可用於執行初始備份並非常好地執行增量備份。運行增量備份時,它可以跳過複製文件的未更改部分。

如果要備份包含數據庫數據文件的文件系統,請調查對熱備份的支持。


15
2018-03-04 16:23



使用更高級別工具的好處 - tar, cpio 和 rsync 一切工作 在文件系統中所以這可能是合適的。 dd,OTOH,直接與磁盤塊一起工作,繞過FS。 - Piskvor


它是 技術上可行 (如“射擊自己在腳下”),但非常不可取,特別是如果任何磁盤的分區是可寫的。

想像這個場景:

  • dd 在開始時開始讀取磁盤,并快速地走向終點。
  • 當它在中途時,操作系統會將文件寫入磁盤。該文件有點碎片 - 它的一部分物理上位於磁盤的開頭,另一部分朝向末端。
  • 操作系統沒問題 - 它將文件寫得很好,並將其從寫緩存中推出;它現在正確寫在磁盤上。
  • 問題在於您的備份: dd 已經過去並複制了文件的第一部分,因此當它到達第二部分時將捕獲不一致的狀態 - 每個部分將來自不同的版本!

如果您能夠將USB磁盤上的所有分區重新安裝為只讀,則不應出現此問題(強調“應該 不是“);這需要大量的前期安裝/離線準備和啟動時間設置 / 雖然分區 - 我認為你通常不會重新安裝 / r / o即時,會有許多需要r / w訪問的東西。

因此,運行副本可能不會破壞正在運行的系統,但是 不會給你一個可行的備份,使任務沒有實際意義。我強烈建議將副本脫機 - 這需要關閉機器。


15
2018-03-04 16:24



感謝一個很好的答案,我希望有一個簡單的方法,但你是對的,我無法想像你所指出的好景象。 - stuartc
@stuartc:這需要 重大的 來自FS驅動程序的合作 - 通知複製過程自複制開始以來發生的每個更改,以及它是否達到一致狀態。如果這是一個主要問題,請查看支持快照的文件系統,例如 btrfs。 - Piskvor


您永遠不應該創建已安裝分區的映像。 無論你是否從它開始。

但是你很難嘗試卸載你啟動的分區。


4
2018-03-04 16:23





為此,我用 dump(8) 在FreeBSD上。例如。 dump -auLf /mnt/some-other-disk/root.dmp /

-L 選項允許通過拍攝快照來複製實時文件系統。

可以使用恢復轉儲 restore(8)

它可能只適用於UFS;我不確定。


3
2018-03-06 14:13





令人驚訝的是,有多少備份提示未提及以下內容:

在備份和恢復時,linux系統(以及大多數多線程操作系統)通常需要處於靜止狀態。

當您嘗試對其進行成像時,不能在其上運行操作系統,這是最容易實現的。 

對於備份和還原,它可以掛載,實際上可能必須掛載,但不能由正在運行的操作系統作為其根目錄(/)。


原因: 在包含linux的每個多任務操作系統中,同時存在影響文件的代碼線程,這使得無法進行準確的系統範圍的文件集備份或恢復。

特別是,當您正在抓取文件時,可能還有其他任務創建或刪除文件,這樣您的備份將無法在任何給定時刻表示文件系統的真實準確圖像。如果您嘗試還原此備份,則會導致數據損壞,從而導致崩潰和其他異常。


選項: 備份需要由特殊軟件和/或磁盤系統(例如可以備份正在運行的操作系統的Windows上的Acronis)或外部輔助操作系統訪問您嘗試備份的非運行操作系統文件或恢復。

 所以當你看到網頁告訴你使用時 似曾相識DUP 例如,為了進行備份,這僅適用於 /home 然後,只有你沒有運行任何影響的程序 /home 而你正在運行deja-dup。 (即便如此,除非你真的知道可能通過守護程序觸摸你的文件,否則你可能想要交叉手指。)


0
2017-07-27 01:46