gddrescue --fill-mode = + com um arquivo de mapa de 0x00000000 0x608336000 + deixou a tabela de partições intacta?

2

Primeiramente, executei este comando:

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

Eu só queria um arquivo de mapa para blanking (portanto, /dev/null ). E é assim que meu arquivo .map se parece antes de eu interromper a execução no final ( Ctrl + C 'd):

Em seguida, decidi colocar o disco em branco ( /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         

Então eu corri:

$ 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

Isto é o que o bit inicial do meu arquivo de mapa parece:

# 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  +

Pela minha estimativa, a tabela de partições deve ter sido limpa por causa do

0x00000000  0x608336000  +

Por que isso não aconteceu e o que foi deixado de lado?

    
por zenerguy 28.12.2017 / 15:11

1 resposta

0

What has been blanked?

A pista está aqui:

$ 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
…

Por algum motivo ddrescue decidiu que deveria continuar do meio do disco, como se a primeira metade já tivesse sido preenchida. Desta forma, a tabela de partições foi deixada intacta.

Why […]?

Francamente, não sei dizer. Meus testes com ddrescue 1.19 indicam que isso acontece quando o current_status dentro do mapfile é F , significando "preenchimento de blocos especificados". Este é o caso depois que você interrompe a operação de enchimento. Continuando parece sensato, eu esperaria isso.

Mas, de acordo com a captura de tela ddrescueview , a current_status foi * , "aparando blocos não aparados". Com esse status, não posso replicar o problema, meu ddrescue preenche todos os blocos saudáveis como deveria. Mais uma vez, isso é sensato e esperado.

Você acertou um bug ou alterou o (s) arquivo (s) (e deixou de mencioná-lo aqui) de uma forma que enganou ddrescue . Por exemplo. se você acidentalmente executar isso:

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

e percebeu seu erro ("Espere! Por que está escrevendo tão rápido?"), interrompido no meio do caminho com Ctrl + C , então seu arquivo de mapa conteria F como current_status . Em seguida, você executa o comando adequado e "continua" do meio de /dev/sda .

    
por 29.12.2017 / 01:41