Atualização final:
Eu já sabia o que precisava fazer para corrigir esse problema; Eu simplesmente não sabia como fazê-lo. Eu esperava que houvesse alguma ferramenta pronta para fazer isso automaticamente - mas não consegui encontrar nenhuma. Estou aceitando a resposta de Rod porque, apesar de não resolver diretamente o meu problema, ele fornece um histórico muito bom sobre o tamanho do setor e me deu confiança de que o problema era realmente o alinhamento e o endereçamento de partições. Para aqueles que chegam a esta pergunta com o mesmo problema, leia-a com atenção e detalhes, incluindo comentários, antes de fazer qualquer coisa.
No início
Eu tinha um computador e, precisando de mais espaço, comprei uma nova unidade de 500 GB e um gabinete USB. Logo percebi que, se particionasse a unidade no gabinete e a movesse para o computador, ela não reconheceria as partições (e vice-versa). Eu assumi que era um problema com o gabinete e não me preocupei.
Então, tragédia
Um dia maravilhoso, meu computador decidiu não ligar mais. Acontece que a placa-mãe (sem marca, apenas uma grande MADE IN CHINA impressa nela) está morta. Estou usando-o como um servidor de arquivos e agora a unidade de 500 GB está cheia de dados que não posso perder. Agora estou sem dinheiro e não posso comprar um computador novo, então minha única esperança era o gabinete USB "defeituoso".
A investigação
Armado com várias distribuições Linux, um laptop, o VirtualBox e o gabinete, fiz uma análise forense sobre o assunto. O dmesg relatou que o tamanho da partição estava além do final da unidade. Então, examinei as planilhas de dados do disco rígido, calculei as contagens do setor a partir do zero, testei os limites da unidade manualmente com dd e tudo parecia bem, até que eu iniciei o fdisk e ele disse:
Note: Sector size is 4096 (not 512).
Como modesto do fdisk. Esta "nota" foi a raiz de todos os problemas. Depois de mais algumas brincadeiras, essas conclusões foram tiradas:
O gabinete USB não está com defeito.
O controlador SATA na placa-mãe agora morta é o que era "estranho", pelo menos. Como não relatou setores de 4096 bytes no sistema operacional, o sistema operacional criou o MBR com prazer usando endereços de setor de 512 bytes.
Agora, quando tento acessar a partição, o sistema operacional tenta usar os endereços baseados em 512 bytes em uma unidade do setor de 4096 bytes e, é claro, isso não vai funcionar.
A questão
Portanto, como posso corrigir os endereços no MBR para que sejam válidos em um tamanho de setor de 4096 bytes, além de editar manualmente o MBR em um editor hexadecimal e
As partições não estão alinhadas para setores de 4096 bytes. Existe alguma ferramenta disponível para alinhá-los, além de copiar dentro e fora de outra unidade? (Não tenho unidades sobressalentes), ou precisarei criar alguma ferramenta que "mude" os dados para o lado, um pouco por vez? Partições são ext3.
Obrigado!
Atualizar:
Eu descobri que existe uma maneira inteligente de usar o dd para mudar a partição no lugar nesta pergunta: Como mover uma partição no GNU / Linux? Mas não sei se funcionará em uma fatia de um setor. Não posso testá-lo agora, mas o farei quando tiver algum tempo.
Atualização 2:
Então, eu alinhei com sucesso a partição usando o método acima e editei o MBR manualmente em um editor hexadecimal. Assim que eu reconectei o HDD, a partição da lança foi montada automaticamente! Porém, eu não recomendo isso, houve erros de E / S durante o processo e eu poderia ter perdido tudo, veja o comentário na resposta de Rod. Para a outra partição, não correrei riscos e usarei um disco rígido antigo e alinhe os pedaços por vez, copiando os dados e colando-os novamente em uma posição diferente.
fdisk
para editar o MBR (aprendi mais tarde, não há necessidade de editores hexadecimais :)) Você pode alterar cada ponto inicial e tamanho de entrada e revisar as alterações antes de aplicar. Portanto: inicie fdisk
, anote a configuração atual (ou melhor, faça backup do MBR dd
), multiplique o endereço inicial e os valores de tamanho por 8 e altere-os. Certifique-se de verificar tudo com uma calculadora e entender o que os valores significam. Você verá que Size = End - Start + 1, e que fdisk
mostra o tamanho em unidade 1000-sectores, assim você pode precisar para ativar o modo especialista em ver o valor real, etc.