Linux

使用 conv=noerror,sync 執行時,dd 輸出文件大於輸入文件

  • April 11, 2014

我正在嘗試使用以下命令在我的一台伺服器上備份 LVM:

dd bs=4M conv=noerror,sync if=/dev/vg_volgroup/LvmName | ssh myuer@myip “dd of=/home/myuser/LvmName bs=4M conv=noerror,sync”

我正在讀取此 LVM 的磁碟有一個壞扇區返回:

dd: 讀取 `/dev/vg_volgroup/Lvmname’: 輸入/輸出錯誤

224+1 記錄

225+0 記錄輸出

943718400 字節 (944 MB) 複製,1313.12 秒,719 kB/s

由於這個壞扇區,我使用 conv=noerror,sync

原始 LVM 為 100GB,輸出 LVM 為 130GB,並且還在增長。有誰知道這是為什麼或我做錯了什麼?

據我所知 noerror 用零填充有缺陷的塊,但我不清楚這將如何使 LVM 更大。

有沒有人有任何提示或想法?

更新:

使用 kill -USR1 pid

其中 pid 是 dd 程序發送數據的 pid 返回以下內容:

601+1 記錄

601+0 記錄輸出

2520776704 字節 (2.5 GB) 已複製,4457.14 秒,566 kB/s

然而,輸出文件現在大小為 154GB。

您應該檢查輸出文件以找出其中的內容。了解文件中的內容有助於確定文件的來源。作為一個起點,你可以head -c10k /home/myuser/LvmName | hexdump -C嘗試tail -c10k /home/myuser/LvmName | hexdump -C

我的猜測是,它將主要由 NUL 字元或某種文本消息組成,這些文本消息並不打算重定向到文件。

引用自:https://serverfault.com/questions/588400