
A questão é bastante simples. Há algum tempo procuro uma resposta, mas não tenho certeza se obtive a resposta correta. Como erros podem facilmente destruir minha unidade e meus dados, eu realmente quero que as coisas fiquem claras.
Estou executando o Ubuntu em um SSD de 250 GB ( /dev/sda
) que possui duas partições, cada uma com cerca de 125 GB. O sda1 é montado /
e o sda2 é montado em /home
. Agora quero mover tudo para um novo SSD de 1 TB (digamos que seja /dev/sdc
) e expandir cada unidade para 500 GB. Depois de alguma pesquisa, propus duas abordagens:
Faça
dd if=/dev/sda of=/dev/sdc
para clonar todo o disco. Depois disso, devo obter um disco inicializável com duas partições de 125 GB e algum espaço não alocado. Certo? Então preciso redimensionar o sdc1 e o sdc1 para 500 GB com algo como gparted. O redimensionamento pode demorar, certo?A segunda abordagem é formatar primeiro a nova unidade, fazer duas partições de 500 GB. Faça
dd if=/dev/sda1 of=/dev/sdc1
edd if=/dev/sda2 of=/dev/sdc2
clone ambas as partições. Neste ponto, este disco não deve ser inicializável, certo? Para torná-lo inicializável, preciso copiar o bootloader para o novo. Tudo que preciso são os primeiros 446 bytes. Então eudd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
possodd if=/tmp/mbrsda.bak of=/dev/sdc bs=446 count=1
. Ao fazer isso, tornei-o inicializável e também preservei a tabela de partições para 500 GB + 500 GB. Essa abordagem me impedirá de redimensionar o disco.
E para ambas as abordagens, preciso alterar o UUID no /etc/fstab
arquivo. Isso pode ser feito primeiro montando a nova unidade após a clonagem: sudo mount /dev/sdc1 /mnt/
e editando o /mnt/etc/fstab
arquivo.
Estou certo sobre tudo isso?
Algum risco potencial de estragar minha unidade antiga aqui?
Responder1
Sempre que você usa dd
(também conhecido como d
isk d
estroyer), existe a possibilidade de bagunçar seus dados. dd
não tem salvaguardas para gravar acidentalmente sua nova unidade na unidade antiga. A única coisa que o mantém funcionando corretamente é ter MUITO cuidado ao digitar os comandos corretamente e não confundir a origem e os destinos. if=
e of=
estão a apenas um pequeno toque de tecla digitado incorretamente um do outro!
O outro problema é que ele dd
é lento e desgasta desnecessariamente o SSD de destino. A maioria das partições normalmente não chega perto de 100% de utilização. Usar dd
para copiar uma partição com muito espaço livre acaba copiando CADA BYTE dessa partição, mesmo os bytes que na verdade não contêm nenhum dado alocado!
Aqui está o que eu faria se fosse meu sistema:
- Faça uma captura de tela da tabela de partição do seu SSD antigo para referência posterior, quando configurarmos a tabela de partição do seu novo SSD.
- Conecte o novo SSD ao computador e desconecte o SSD antigo. Manter o SSD antigo desconectado torna impossível destruir qualquer um dos nossos dados preciosos enquanto realizamos um trabalho potencialmente destrutivo.
- Inicialize a partir do pen drive USB de instalação do Ubuntu no modo Linux Live. Certifique-se de que seu BIOS sempre inicialize o pendrive no modo legado/MBR em vez do modo UEFI, pois parece que seu sistema antigo está usando MBR. Se minha suposição for inválida, certifique-se de que seu BIOS inicialize o pendrive no modo UEFI. Misturar as coisas tornaria muito mais difícil instalar o grub corretamente mais tarde.
- Use
gparted
para configurar seu novo SSD com a tabela de partição desejada e formatar os sistemas de arquivos. Tente manter tudo igual à tabela de partições do seu antigo SSD (além dos tamanhos das partições e UUIDs). Não se esqueça de marcar o/
sistema de arquivos raiz como active/ bootable, assim como seu antigo SSD. - Agora que todo o trabalho perigoso de edição da partição foi concluído, você pode desligar com segurança e adicionar o SSD antigo conectado ao computador.
- Inicialize o pen drive USB ativo do Linux novamente com as duas unidades conectadas desta vez. Não inicialize a partir do SSD antigo (precisamos manter o sistema inativo para fazer uma boa cópia limpa dele).
Depois de inicializado, abra um terminal e comece a trabalhar com esses comandos para copiar os dados do seu SSD antigo para o novo SSD. Ao contrário de using
dd
, ocp
comando é muito mais à prova de erros porque você não pode destruir nada copiando um sistema de arquivos vazio sobre seu sistema de arquivos antigo - não há nada copiado nesse caso! Além disso, podemos montar o SSD antigo no modo “somente leitura” para evitar qualquer possibilidade de modificação do SSD antigo.mkdir oldroot newroot oldhome newhome sudo mount -o ro /dev/sda1 oldroot sudo mount -o ro /dev/sda2 oldhome ls oldroot ls oldhome
Verifique se você consegue ver seus dados antigos. Se tudo o que você vê é um sistema de arquivos vazio, talvez você tenha o dispositivo "/dev/sdXX" errado...
sudo mount -o noatime /dev/sdc1 newroot sudo mount -o noatime /dev/sdc2 newhome ls newroot ls newhome
Verifique se tudo o que você vê é um sistema de arquivos vazio como destino. Se tudo estiver bem, emita os seguintes comandos para copiar todos os seus arquivos preservando todas as configurações de contexto de permissões/propriedade/SELinux:
sudo cp -Rfax oldroot/* newroot/ sudo cp -Rfax oldhome/* newhome/
Feito isso, desmonte tudo e sincronize as gravações em cache com o armazenamento persistente:
sudo umount oldroot sudo umount oldhome sudo umount newroot sudo umount newhome sync
Agora você pode desligar e desconectar com segurança o SSD antigo para que não possamos destruir nada nele enquanto trabalhamos para tornar o novo SSD inicializável.
Inicialize o computador usando o pen drive USB no modo Linux Live com apenas o novo SSD conectado. Abra um terminal e comece a trabalhar com estes comandos:
mkdir newroot sudo mount -o noatime /dev/sda1 newroot sudo chroot newroot /bin/bash mount -t devtmpfs udev /dev mount -t proc proc /proc mount -t sysfs sysfs /sys nano -w /etc/fstab
Agora você precisa modificar o
fstab
arquivo para corresponder aos números UUID com o que quer que estejam em seu novo SSD. Você pode abrirgparted
para ver sua tabela de partições e descobrir quais são os novos UUIDs. Quando terminar, pressione CTRL-X e salve as alterações do fstab no disco.update-grub grub-install /dev/sda
Se tudo estiver funcionando corretamente, configure o grub e instale-o no MBR do seu novo SSD. Após a instalação do grub, você deve desmontar todas as coisas que montamos anteriormente no ambiente chroot antes de sair. Caso contrário, o Ubuntu terá dificuldade em desmontar a partição Linux de forma limpa quando você desligar.
umount /sys umount /proc umount /dev exit sudo umount newroot sync
E aí está! Esperamos que seu novo SSD seja inicializável e que tudo esteja bem agora.
Responder2
acabei de usargpartedpara migrar meu Ubuntu 18.04 de um SATA para outro. O Gparted fornece uma GUI fácil de usar com opções de copiar e colar, e até os UUIDs são os mesmos, então não precisei atualizar /etc/fstab
ou instalar o grub no novo disco. Foi muito tranquilo, então ainda não verifiquei o que aconteceu por baixo, mas durante o processo de copiar e colar,imagem e2(8)foi realmente invocado. Novamente, tudo isso foi baseado em minha própria experiência, corrijam-me e obrigado.
Responder3
Posto isso aqui, mais para compartilhar minha experiência e menos para responder à pergunta postada. No entanto, meu objetivo era o mesmo declarado do OP.
Comecei com um sistema de inicialização dupla em um SSD de 512 GB, que continha algumas partições: EFI, algo reservado pela Microsoft, a partição do sistema Windows, a partição do sistema Linux, a partição inicial do Linux e algo de recuperação.
Meu objetivo era migrar tudo para um SSD de 2 TB.
Inicializei o computador a partir de um Ubuntu Live-USB e clonei todo o SSD para o novo SSD usando o arquivo dd
. Comprei um pequeno gabinete para SSDs NVMe que pode ser conectado via USB.
O novo SSD foi usado totalmente intacto: sem formatação, sem partições, sem nada.
Após a clonagem com dd
troquei os SSDs, ou seja, retirei o SSD pequeno do computador e instalei o novo.
O Linux inicializou sem problemas, mas o Windows executou alguns diagnósticos/reparos que não levaram a nada.
Em seguida, inicializei o sistema a partir do Ubuntu Live-USB novamente e iniciei o gparted
.
gparted
relatou algum erro na tabela GPT que se ofereceu para reparar. Escolhi a opção de reparo e redimensionei e movai as partições existentes. Depois de tudo feito, para minha surpresa, o Windows também inicializou sem erros.
Estou agradavelmente surpreso que todo esse caso de clonagem tenha corrido tão bem.
Fiz isso de novo esta semana, novamente com uma máquina de inicialização dupla.
- Inicie o computador com o pequeno SSD ainda dentro usando um Live-USB
- Monte o novo SSD em um gabinete e conecte-o
- Copie os discos usando
dd
- Quando
dd
terminar, iniciegparted
o reparo da tabela GPT, redimensione e mova as partições - Desligue o computador e troque os SSDs
- Ambos os sistemas operacionais inicializaram perfeitamente
Algumas notas:
- Certifique-se de que o BitLocker esteja totalmente desabilitado, se o SSD antigo contiver uma partição do Windows
- Se você esquecer de iniciar
dd
alguma opção que mostre o progresso, consulteesta resposta. Você pode enviardd
um sinal, fazendo com que ele exiba informações de progresso sem atrapalhar sua operação.
Responder4
eu usariaimagem parcialpara copiar as partições uma de cada vez. Depois de copiar a primeira partição, aumente seu tamanho. O redimensionamento será muito rápido porque você não precisará mover nenhuma partição adjacente. Em seguida, copie a segunda partição e redimensione-a para caber no restante do espaço.
A maneira mais fácil de fazer isso é inicializar a partir deSystemRescueCDe fazer tudo a partir desse ambiente. Você pode criar uma unidade USB inicializável para não precisar de um CD real.