Existe alguma maneira de impedir que uma unidade defeituosa desapareça de / dev?

3

Estou tentando recuperar uma partição em uma unidade defeituosa com o ddrescue. Eu corro:

$ sudo ddrescue -r -1 -v /dev/sdd3 OUT.img dd_rescue_logfile

e parece ser ótimo por um tempo, mas após cerca de uma hora, a "taxa atual" cai para zero porque a unidade desapareceu de / dev. Para trazer a unidade de volta, a única coisa que posso pensar é reiniciar o sistema e executar o comando ddrescue para retomar de onde parei. Isso dificulta muito a execução do programa, pois não posso simplesmente deixá-lo e esquecê-lo por alguns dias - tenho que monitorá-lo constantemente para garantir que o disco não desapareça. Eu já vi esse comportamento tanto no Arch linux quanto no Fedora 22.

Eu assumo que em algum ponto, o kernel tem problemas ao acessar a unidade e a remove de / dev. Existe alguma maneira de evitar isso? Para dizer ao kernel para manter o dispositivo lá mesmo que pareça estar quebrado ou não existente?

    
por Tal 25.07.2015 / 09:20

1 resposta

2

Você pode ser capaz de detectá-lo novamente sem reinicializar, descarregando / carregando novamente o módulo correto (ou apenas desconectando e vinculando novamente o driver).

Por exemplo:

[  978.527221] sd 11:0:0:1: [sdk] Attached SCSI removable disk
#~> echo 11:0:0:1 > /sys/bus/scsi/drivers/sd/unbind
#~> echo 11:0:0:1 > /sys/bus/scsi/drivers/sd/bind
[ 5572.027119] sd 11:0:0:1: [sdk] Attached SCSI removable disk

Ou se isso não funcionar e você não tiver outros dispositivos conectados ao mesmo controlador, você poderá desvincular e vincular todo o controlador, por exemplo, por meio de /sys/bus/pci/drivers/ahci/ se for AHCI.

Eu não tenho nenhum HDD defeituoso para testar se realmente funcionaria, mas usei esse método antes para forçar a re-detecção de cartões MicroSD / MMC em slots que não eram hot-pluggable por padrão.

Quanto a ddrescue reduzindo a velocidade para zero, você pode querer ver se ele suporta a opção -a, --min-read-rate=<bytes> , portanto, seria de se esperar? considere regiões lentas como defeituosas e pule-as. No pior dos casos, você terá que monitorar o disco do lado de fora e forçosamente reiniciar o ddrescue .

    
por 25.07.2015 / 10:56