gddrescue --fill-mode=+ 带有映射文件 0x00000000 0x608336000 + 是否保持分区表完好无损?

gddrescue --fill-mode=+ 带有映射文件 0x00000000 0x608336000 + 是否保持分区表完好无损?

我首先运行了这个命令:

ddrescue --force /dev/sda /dev/null HGST_RMA.map

我只是想要一个用于消隐的地图文件(因此/dev/null)。这是.map我在最后中断运行之前的文件的样子(Ctrl+ C'd it):

ddrescueview

然后我决定清空磁盘(/dev/zero):

$ sudo ddrescue --force --fill-mode=+ /dev/zero /dev/sda HGST_RMA.map
GNU ddrescue 1.21
Press Ctrl-C to interrupt
Initial status (read from mapfile)
filled size:     266742 MB,  filled areas:         43
remaining size:  233363 MB,  remaining areas:     151
Current status
filled size:  500106 MB,  filled areas:    194,  current rate:  55115 kB/s
remain size:        0 B,  remain areas:      0,  average rate:  71200 kB/s
current pos:  500107 MB,  run time:     54m 37s
Finished         

然后我跑了:

$ fdisk -l /dev/sda
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xbf7dbd9f

Device     Boot    Start       End   Sectors   Size Id Type
/dev/sda1           2048  62916607  62914560    30G 83 Linux
/dev/sda2       62916608  67110911   4194304     2G 82 Linux swap / Solaris
/dev/sda3       67110912 976773167 909662256 433.8G 83 Linux

这是我的地图文件的初始部分:

# Mapfile. Created by GNU ddrescue version 1.21
# Command line: ddrescue --force --fill-mode=+ /dev/zero /dev/sda HGST_RMA.map
# Start time:   2017-12-28 17:37:14
# Current time: 2017-12-28 18:31:57
# Finished
# current_pos  current_status
0x7470BFD000     +
#      pos        size  status
0x00000000  0x608336000  +
0x608336000  0x00001000  -
0x608337000  0x380B8DD000  +
0x3E13C14000  0x00001000  -
0x3E13C15000  0x00224000  +

根据我自己的估计,分区表应该被清除,因为

0x00000000  0x608336000  +

为什么这还没有发生并且什么已经被清空了?

答案1

什么已被清空?

线索就在这里:

$ sudo ddrescue --force --fill-mode=+ /dev/zero /dev/sda HGST_RMA.map
Initial status (read from mapfile)
filled size:     266742 MB,  filled areas:         43
remaining size:  233363 MB,  remaining areas:     151

由于某种原因,ddrescue决定从磁盘中间继续,好像前半部分已经填满。这样分区表就保持完整。


为什么 […]?

ddrescue坦白说,我说不出来。我对1.19 的测试表明current_status,当地图文件内部的F意思是“填充指定块”时,就会发生这种情况。这是在您中断填充操作后的情况。继续似乎是合理的,我预料到了这一点。

但根据您的ddrescueview屏幕截图,current_status显示为*“修剪未修剪的块”。在这种状态下,我无法复制该问题,我的系统会ddrescue按应有的方式填充所有健康块。再次强调,这是合理的,也是意料之中的。

要么你遇到了错误,要么你修改了文件(但忘记在这里提及),从而误导了别人ddrescue。例如,如果你不小心运行了这个:

sudo ddrescue --force --fill-mode=+ /dev/zero /dev/null HGST_RMA.map

并意识到自己的错误(“等等!为什么写得这么快?”),用Ctrl+中途中断C,那么您的 mapfile 将包含Fcurrent_status接下来,您运行正确的命令,它会从 的中间“继续” /dev/sda

相关内容