Linux
使用 conv=noerror,sync 執行時,dd 輸出文件大於輸入文件
我正在嘗試使用以下命令在我的一台伺服器上備份 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 字元或某種文本消息組成,這些文本消息並不打算重定向到文件。