Unidade relatando espaço livre incorreto

7

Então eu troquei meu SSD brilhante SATA por um SSD PCI-E ainda mais brilhante. Eu corro meu sistema operacional principal no SSD porque é bobinho rápido. Eu fiz isso no meu SSD antigo, então criei uma nova partição EXT4 e, em seguida, apenas dd ed os dados (desculpe, eu não sei o comando exato que eu corri mais) e depois de reinstalar o grub, eu iniciei no PCI-E SSD. À primeira vista tudo funcionou perfeitamente e as coisas estavam correndo mais rápido do que nunca.

Mas então eu notei o espaço livre em disco na unidade nova, maior: era quase exatamente o mesmo que estava no outro disco ... Um disco que tinha metade do seu tamanho.

Portanto, parece que copiei os arquivos incorretamente e copiei alguns dos metadados do sistema de arquivos junto com ele.

Ferramentas como du e Disk Usage Analyzer voltam com os números corretos. Coisas que olham para a partição (e não os arquivos) parecem pensar que a unidade é de 120 GB

Estou usando essa unidade há uma semana, por isso estou fora de sincronia com o antigo SSD, então despejar os dados e começar de novo não é um trabalho que me enche de alegria, mas duas perguntas:

  1. Existe uma maneira de corrigir meu sistema de arquivos para que ele saiba exatamente o que está acontecendo? fsck e2fsck e badblocks all parecem conseguir digitalizá-lo sem encontrar um problema.

  2. Se eu conectar meu antigo SSD, copiar os dados do meu PCI-E para ele e copiá-los de volta para um novo sistema de arquivos (por exemplo, manipular os dados), qual é a melhor maneira de fazer isso? aquele? Eu obviamente quero manter todas as permissões e softlinks onde eles estão.

por Oli 28.01.2011 / 17:40

4 respostas

4

A ferramenta que você usou dd não é uma ferramenta de cópia de arquivos, é uma ferramenta de cópia de disco e copia byte para byte. Isso significa que todas as informações, incluindo metadados sobre a quantidade de espaço na partição da unidade, foram copiadas.

Você precisa fazer um backup completo de seus arquivos, formatar a unidade (incluindo um formato de parição completo), criar uma nova partição raiz e uma unidade swap e depois copiar os arquivos.

Depois de copiar os arquivos, você precisará chroot para o novo sistema e executar o comando update-grub para instalar o sistema de inicialização na nova unidade.

Ou você pode simplesmente executar uma nova instalação do Ubuntu e colocar seus arquivos de volta.

O que Oli fez para corrigir isso

  1. Inicializou em um LiveCD e selecionou "Experimente o Ubuntu"
  2. Montado meu SSD e também outro disco (para copiar)
  3. Ran

    sudo rsync -ax /media/ssd /media/backup-drive/ssd-backup
    

    Isso leva muito tempo. Eu fiz alguma limpeza antes de copiar, mas ainda tinha 35GB e enquanto eu estava recebendo rajadas de gravação de ~ 120MB / s, demorou um pouco. O rsync não lhe dará saída por padrão, mas você pode adicionar --progress se você quiser uma quantidade perversa de detalhes (embora tenha se movido muito rápido para eu realmente lê-lo - e provavelmente apenas diminuiu a velocidade).

  4. Eu tentei ligar a unidade, mas estava recebendo problemas de "dispositivo ocupado" do palimpsest (Utilitário de Disco), então eu corri o instalador! No instalador, eu disse a ele para criar um sistema de arquivos legal usando toda a unidade SSD e depois executei killall ubiquity depois que ele começou a copiar os arquivos.
  5. Então eu deletei todos os arquivos que o instalador havia copiado, depois copiei os arquivos de backup:

    sudo rm -rf /media/ssd/*
    sudo rsync -ax /media/backup-drive/ssd-backup /media/ssd
    
  6. Então eu reiniciei e descobri que meu UUID tinha mudado (óbvio quando você pensa sobre isso), então o grub2 não sabia de onde inicializar e explodiu, então voltei para o LiveCD. Se você está seguindo isso como um guia, sugiro que você pule esta etapa;)
  7. Reinstale o grub! Eu segui os documentos de ajuda e segui a opção chroot. Você pode achar que precisa editar seu /etc/fstab enquanto estiver lá.
  8. Reinicie e você deve terminar. Estou de volta, tenho uma métrica "oodle" de espaço livre. Huzzah.
por Martin Owens -doctormo- 28.01.2011 / 17:48
4

Na verdade, não há problema em dd de todo o disco em outro. Mas então você precisa redimensionar as partições para preencher o novo disco maior. Você pode usar a incrível ferramenta de particionamento de disco gparted para fazer isso. Eles também têm seu próprio LiveCD.

    
por vadipp 25.05.2012 / 14:24
4

Eu suponho que você está fazendo algo como:

sudo dd if=/dev/sda98 of=/dev/sda99

onde / dev / sda98 tem um tamanho de 12GB e / dev / sda99 tem 25GB de tamanho.

Obviamente, esses nomes estão errados, mas você tem a idéia.

O que você fez foi mover não apenas os dados, mas todo o sistema de arquivos, incluindo todos os metadados que descrevem o que é livre e usado, para a nova partição. Ele tem muito espaço livre, mas o espaço livre não foi incorporado ao sistema de arquivos em / dev / sda99, então está oculto no final da partição e completamente inutilizável.

A solução é redimensionar o sistema de arquivos localizado na partição:

sudo resize2fs /dev/sda99

funciona em sistemas de arquivos EXT2, EXT3 e EXT4.

Você deve fazer um backup primeiro.

Isto irá dizer ao sistema de arquivos para expandir em todo o espaço disponível na partição, incorporando o novo espaço nos metadados dos sistemas de arquivos para que os arquivos possam ser armazenados nele.

Você não pode copiar uma partição maior para uma partição menor com dd , a menos que você diga para copiar apenas com o parâmetro count. dd faz um bit para copiar bit de tudo na partição de origem para a partição de destino, nesse caso ele tenta copiar todo o espaço oculto / invisível para a partição menor juntamente com o conteúdo original. Não tem idéia ou se importa com o que está copiando - não precisa ser um sistema de arquivos válido.

    
por John S Gruber 11.10.2012 / 15:50
0

Eu tive esse problema ao redimensionar uma partição Linux EX2 usando o Paragon Partition Manager no Windows. Felizmente eu tive duas partições EX2 Linux, cada uma com distribuições Linux nelas. Eu era capaz de inicializar na partição Linux que não havia sido redimensionada, e então usei o Gparted para diminuir e depois expandir novamente a partição que não tinha alocado corretamente o espaço livre para o sistema de arquivos. Isso funcionou perfeitamente!

    
por user215334 13.11.2013 / 12:24