dd travando - o que fazer sobre isso

dd travando - o que fazer sobre isso

Eu tive dduma queda depois de correr algumas horas. Normalmente com uma mensagem como

Input/output error
68424+1 records in
68424+1 records out
342124883968 bytes (342 GB) copied, 5114.68 s, 66.9 MB/s

Há algo que eu possa fazer sobre isso? Existe alguma maneira de usar a saída? Ou reiniciar de onde parou?

Existe alguma razão para pensar que é porque a partição cujo backup está sendo feito está sendo usada?

Ele sempre trava em torno de 70-80%, geralmente quando a partição deveria ser menos usada.

Como esse processo demora tanto, é difícil tentar coisas diferentes.

Eu envio para uma imagem. Eu provavelmente poderia usar uma partição, mas o LVM está envolvido:

sudo lvmdiskscan
/dev/centos/swap [       3.89 GiB] 
/dev/sda1        [     500.00 MiB] 
/dev/centos/root [      50.00 GiB] 
/dev/sda2        [     465.27 GiB] LVM physical volume
/dev/centos/home [     411.38 GiB] 
/dev/sdb1        [     931.51 GiB] 
3 disks
2 partitions
0 LVM physical volume whole disks
1 LVM physical volume


dd conv=sync,noerror if=/dev/centos/home bs=2000000   of=/run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.image
dd: error reading '/dev/centos/home': Input/output error
171062+1 records in
171063+0 records out
342126000000 bytes (342 GB) copied, 4625.3 s, 74.0 MB/s
220856+2 records in
220858+0 records out
441716000000 bytes (442 GB) copied, 6138.1 s, 72.0 MB/s

Sexta-feira de manhã ddrescue --sector-size=2048 --cluster-size=$((256*512)) --sparse --verbose /dev/centos/home /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.map

GNU ddrescue 1.18.1 About to copy 441714 MBytes from /dev/centos/home to /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image Starting positions: infile = 0 B, outfile = 0 B Copy block size: 131072 sectors Initial skip size: 32 sectors Sector size: 2048 Bytes

Press Ctrl-C to interrupt rescued: 441714 MB, errsize: 8192 B, current rate: 0 B/s ipos: 342124 MB, errors: 1, average rate: 60675 kB/s opos: 342124 MB, run time: 2.02 h, successful read: 9 s ago Finished

Mas extundelete sd7c_dd.image --restore-directory /home/ob/p -o /tmp/tt extundelete: Bad magic number in super-block when trying to open filesystem sd7c_dd.image

/dev/mapper/centos-home on /home type xfs (rw,relatime,attr2,inode64,noquota) 

Responder1

Você nunca deve executar ddem um sistema de arquivos montado, pois isso pode corromper a imagem, especialmente. se você quiser fazer um backup. Você pode querer usar tarem vez disso.

Se você tiver certeza de que o dispositivo estánãofalhando, você pode usar os sinalizadores seek(para buscar N blocos no arquivo de saída) e skip=N(para pular N blocos da entrada). Em um sistema Linux, você pode usar o dmesgcomando para obter o log atual do kernel.

Se você não tiver certeza se o dispositivo do qual deseja copiar pode estar falhando, recomendo usar ddrescuepara obter uma imagem do dispositivo. Essa ferramenta não anula erros de leitura e registra as posições dos blocos que não conseguiu ler corretamente.

Responder2

Se você está tentando copiar a imagem de uma partição que está em uso, você está se preparando para uma queda muito forte. Copiar uma partição como esta requer que nada esteja sendo gravado nela. De forma alguma.

Se você puder desativar a partição, poderá usar o ddrescue, que foi projetado para ler discos e partições com setores defeituosos. Uma invocação típica para extrair /dev/sda1para o arquivo de imagem /media/sda1.imgseria assim:

ddrescue --sector-size=2048 --cluster-size=$((64*512)) --sparse --verbose /dev/sda1 /media/sda1.img /media/sda1.map

Os tamanhos de setor e cluster configurados ddrescuepara leitura de unidades de 64 MB. Você pode tentar aumentar para 128 MB ou até 256 MB, mas esteja ciente de que isso não aumentará necessariamente o rendimento.

No seu caso particular, sua partição de origem é na verdade um volume LVM, então isso é uma grande ajuda: você pode tirar um instantâneo da partição para fazer backup. Neste exemplo eu chamei isso de home-snap.

lvcreate --snapshot --name home-snap --size 1G /dev/centos/home
ddrescue --sector-size=2048 --cluster-size=$((64*512)) --sparse --verbose /dev/centos/home-snap /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.image /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.map
lvremove -y /dev/centos/home-snap

Responder3

Se o dispositivo for maior que os 342 GB que copiou, provavelmente há um setor defeituoso neste disco.

Você pode usar seeke skipcom valores idênticos para retomar.

dd <your previous options here ...> seek=68424 skip=68424 conv=notrunc

68424provavelmente produzirá o mesmo erro de E/S novamente, então você terá que aumentá-lo. Você não disse qual tamanho de bloco usou (e estou com preguiça de fazer as contas). Para pular regiões de erro menores, você pode preferir um tamanho de bloco menor (então você terá que se adaptar seeke skipde acordo).

Não use conv=noerror,isso corrompe as coisas. Se você encontrar mais erros, use ddrescue, é uma ferramenta que lida melhor com erros de leitura do que com erros ddde leitura.

informação relacionada