Por que os sistemas Linux podem recuperar dados do Windows? Alguma razão concreta?

3

Histórico: No começo deste ano, tive um problema com uma unidade SSD que o Windows não reconheceria mais. Mas, eventualmente, um inicializável "Parted Magic 2012-10-10" fez o truque. Veja este tópico resolvido . Uma questão, no entanto, ficou comigo como resultado ...

Pergunta: Estou ciente de que o Linux é geralmente um pouco mais técnico e bruto, mas alguém pode esboçar por que um sistema Linux (ou apenas aquele em particular, já que o Ubuntu não faz o truque) é capaz de acessar / comunicar com um meio dispositivo corrompido quando o Windows não é?

  • Eles simplesmente ignoram qualquer indicador potencial de que algo possa estar errado?
  • Existem alguma razão concreta?
  • Foi apenas sorte que esse ambiente específico conseguisse que o SSD respondesse apenas por um tempo limitado?
por Philip Allgaier 23.04.2013 / 18:53

4 respostas

5

Geralmente, isso se resume ao que, exatamente, está sendo acessado e como, exatamente, o dispositivo está falhando. Por exemplo, se o SSD em questão não conseguir recuperar, digamos, o setor 5 e começar a parar assim que algo ler o setor 5, a diferença pode ser simplesmente devido ao acesso de sistemas diferentes ao reconhecer um novo disco.

Quando o Windows detecta um novo disco, ele lê a tabela de partições e automaticamente tenta abrir qualquer sistema de arquivos que saiba ler. Se qualquer uma das estruturas / blocos que estão sendo lidos durante o processo de "montagem" disparar seu SSD defeituoso para dar adeus, a diferença com essa distribuição específica do Linux é simplesmente que ele não pode montar automaticamente todas as partições em questão, ou pode ao montar, basta ler um subconjunto diferente de setores (a implementação do NTFS no Linux é muito diferente da do Windows - enquanto o formato no disco é o mesmo, cabe ao SO quais estruturas julgar necessário ler O Windows pode ler cópias secundárias da MFT, ou pode começar a preceder alguns dados e isso pode ser a diferença. O Ubuntu está em um barco similar - ele não é voltado para recuperação fora da caixa, ele tentará montar qualquer sistema de arquivos que encontrar na mídia recém descoberta, automaticamente. É por essa razão que distribuições especializadas voltadas para a recuperação são uma aposta melhor, já que elas só fazem o que você pede explicitamente para elas, em vez de fazer as coisas automaticamente.

Claro, você pode simplesmente ter tido sorte também. Eu não sei o suficiente sobre o modo de falha do SSD para dizer.

O Linux geralmente não ignora indicadores de que algo está errado. Ele receberá os mesmos erros SCSI do chipset SATA que o Windows - se você olhar no log do kernel, em um disco defeituoso, verá muitas mensagens de erro. Depende de quais programas estão realmente acessando o disco, o que acontecerá a seguir. Se for um software voltado para a recuperação, ele pode tentar reler o mesmo setor um número limitado de vezes, pode ignorá-lo, etc. Normalmente, a melhor aposta é obter uma imagem da unidade com tantos setores lidos da forma mais clara possível e tentar recuperar seus dados dessa imagem (fazer qualquer análise diretamente na unidade é uma má ideia, geralmente, uma vez que sua condição pode piorar e só porque você foi capaz de ler algo uma vez, isso não significa que você será capaz de lê-lo novamente.

    
por 23.04.2013 / 19:08
3

O Windows abstrai o hardware sob uma API para que todas as chamadas para o hardware funcionem da mesma forma uniforme (e presumivelmente segura). Isso significa que, para executar qualquer função em um pedaço de hardware, o MS teve que antecipar seu desejo de executar a tarefa e gravar uma função da API para obter o resultado desejado.

com o linux, há menos abstração, e a abstração é voluntária, então você pode escrever softwares que abordem diretamente o hardware, se você assim escolher, abrindo muitas possibilidades que não são pré-planejadas e pré-implementadas.

    
por 23.04.2013 / 19:06
3

Grande parte disso é a maneira como o ambiente lida com o sistema de arquivos e as ACLs ou o disco rígido.

O Windows fará tudo o que puder por conta própria para obedecer suas ACLs e setores marcados como ruins ou vazios. Portanto, as partições NTFS ou Fat criadas e mantidas no Windows, bem como os MBRs do Windows, serão manipulados pelo Windows conforme marcado pelo Windows.

Além disso, se a unidade estiver falhando, quanto mais você a usar, mais provável será encontrar um grande problema e o ambiente falhará. Então, como o sistema operacional trata, o Windows irá BSOD ou reiniciar, o processo de inicialização do Windows irá lançar mensagens MBR, faltando mensagens de arquivos (NTDLR.dll está ausente ou corrompido) e parar, porque esses arquivos ruins são necessários.

Quando você usa um disco ao vivo, não está contando com nada disso. Um mau MBR é ignorado porque você inicializa o disco. Um setor ruim que corrompeu o NTDLR.dll não é necessário. Tudo está no disco. Você pode então tentar uma leitura. Se ele encontrar um setor 'em branco' ou um bit defeituoso, esse ambiente o manipula, mas foi programado para isso. O Ubuntu provavelmente prefere manter os comportamentos normais do SO e continuar com o que é mais provável que aconteça. O setor está em branco, faça outra coisa. Esse setor é ruim, fique longe, não leia de novo não escreva ou vai causar problemas.

Uma plataforma de recuperação, no entanto, vai querer ler todos os dados. Os marcadores de arquivo dizem que o arquivo deve estar em 0,5, 13 .... se o sistema de arquivos relatar 13 estiver faltando, ignore o cabeçalho em branco e leia o arquivo de qualquer maneira, ou leia o setor defeituoso da melhor maneira possível e tente recuperar .

Além disso, o Windows pode fazer muito isso com aplicativos de terceiros; o Recuva pode encontrar muitos desses arquivos "ausentes", por exemplo. Mas você não quer estar em um ambiente que pode gravar de volta no disco e causar perda permanente.

Simplifiquei isso e adicionei algumas interpretações, mas ele deve preencher alguns espaços em branco para o que você está perguntando.

    
por 23.04.2013 / 19:10
2

Os sistemas Windows tendem a ter todos os tipos de coisas de fundo acontecendo nessa bagunça com o hardware. Em um sistema Windows, quando uma nova unidade é conectada, todos os tipos de processos começam a mexer nela. Se a unidade não for confiável, isso normalmente fará com que ela comece a falhar. Em um sistema Linux, é muito mais provável que a unidade só seja tocada por coisas que você diz especificamente para mexer com ela, permitindo que você acesse a unidade sem acionar nenhum dos modos de falha.

    
por 23.04.2013 / 19:00