Movendo / inicializar e MBR para uma nova unidade

11

Eu tenho um servidor CentOS 6 com dois discos rígidos. Minha antiga unidade de 3 TB está me dando alguns problemas, então estou mudando as coisas para uma nova unidade. Como minhas partições /e /homesão gerenciadas por um LVM, foi fácil migrá-las para a nova unidade. Agora, quero passar pela minha /bootpartição e pelo MBR que inicia tudo.

Carreguei um CD ao vivo e rsyncedsobre minha /bootpartição para a mesma partição de tamanho na minha nova unidade. Também tentei copiar meu MBR com os seguintes comandos:

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1

Depois de fazer isso, reinicializei, disse ao meu BIOS para não olhar para o disco rígido antigo durante o ciclo de inicialização e apenas olhar para o novo disco, mas tudo o que eu acabei usando foi um cursor piscando.

Perdi um passo aqui? Ou há outra coisa que preciso fazer para inicializar as coisas para que eu possa remover completamente minha unidade antiga?

EDIT: Estou começando a pensar que o rsync não era o caminho para copiar a partição / boot de uma unidade para outra. Com base neste guia , tentei usar o comando dump. Neste comando, copiei minha partição de inicialização antiga e desmontada para a minha nova partição de inicialização vazia e montada.

dump -0f - /dev/sdaX | (cd /mnt/boot; restore -rf -) 

Estou recebendo um erro grub 15 na inicialização, que é melhor do que um cursor piscando, mas não sei se isso está mais próximo de uma solução.

Cloudkiller
fonte
Por que não instalar o grub na nova unidade?
Frostschutz
Cada vez que eu cansei de executar o grub-install, acabei inicializando e recebendo apenas um prompt do grub.
Cloudkiller

Respostas:

3

Se os dois discos rígidos são do mesmo tamanho (ou o novo é maior), por que você não copiou o disco antigo para o novo? Ou seja,

dd if=/dev/sda of=/dev/sdb

Agora, se o novo disco rígido for maior, altere os tamanhos das partições com parted ou gparted. Tudo isso foi inicializado a partir de um CD / stick USB ao vivo.

erik
fonte
Eles são de tamanhos diferentes. 3tb foi apenas um exagero para o servidor, então mudei para um raptor de 1tb na esperança de obter um pouco mais de velocidade. Independentemente disso, a clonagem não parece ser o problema. Pelo menos a parte do LVM se moveu facilmente e parece que a partição de inicialização foi copiada completamente com meu último despejo. Agora acho que o problema está de alguma forma relacionado ao meu grub ou ao MBR. Eu acho que o problema é que eu não sei o suficiente sobre o grub2 e como ele interage com os LVMs para corrigi-lo.
Cloudkiller
o uso de dd, que está copiando um pouco para a cópia de bits, é uma maneira antiga de fazer uma migração de dados, especialmente quando os tamanhos de disco estão agora na faixa de terabytes e, na maioria das vezes, a quantidade de dados reais é inferior a 10 GB no disco; uma instalação limpa e fresca do SUSE com muitas bibliotecas instaladas me executa em torno de 5 GB no disco, que eu tar em um arquivo e uso um cartão de memória de 8 GB para mover esse arquivo tar, a partição de inicialização, seja EFI ou MBR, executa apenas alguns MB.
ron
se você pode usar EFI ou UEFI em vez de BIOS, e possuir uma partição de inicialização EFI via GPT, em vez de uma partição de inicialização MBR & dos, facilita as coisas basicamente apenas formate a partição EFI como fat32 e copie esses poucos MB de arquivos relacionados; caso contrário, para o MBR, você precisa entender como ele funciona, corrigir os endereços contidos no novo disco e instalar o novo MBR no novo disco do primeiro setor para que o BIOS possa acessá-lo adequadamente; EFI é muito melhor se o seu hardware é EFI capaz
ron
e o ELILO é melhor que o GRUB / GRUB2, muita coisa no grub que eu nunca uso e apenas complica as coisas; um arquivo elilo.conf e pronto! se isso não acontecer inicialização apenas que um arquivo de olhar para dentro e correta
ron
4

Acontece que o uso do rsync ou dump para copiar a partição / boot estava causando o problema. Com base na resposta de Erick acima, iniciei um CD ao vivo no modo de recuperação e executei os seguintes comandos dd.

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1
dd if=/dev/sda1 of=/dev/sdb1

Eu executei os dois primeiros dds novamente apenas para garantir que tudo foi copiado corretamente e não corrompido em todos os testes que eu estou fazendo. Em seguida, executei o terceiro dd para copiar a partição de inicialização do meu disco antigo para o novo. Depois disso, desliguei, peguei minha unidade antiga e inicializei sem problemas no meu CentOS.

Deve ter havido algum problema causado pelo uso de despejo em uma unidade montada que fez com que a cópia não funcionasse corretamente. Independentemente disso, dd fez o truque. Obrigado por sua ajuda a todos.

Cloudkiller
fonte
este é um bom exemplo de ignorância é felicidade, uma vez que funcionou. Pergunte a si mesmo o que o CD de resgate fez para corrigir o problema no MBR? Ter dois discos no sistema ao mesmo tempo, qual é sda e qual é sdb, e quando você remove o disco antigo e possui apenas o novo disco, isso muda e se torna sda ou sdb?
ron
dependendo do que você está fazendo, isso pode não importar, mas geralmente é melhor inicializar ou identificar discos por algum método exclusivo, como por ID do dispositivo ou UUID.
ron
usar dd e MBR é como usar pontos e condensador em um motor, em vez de ignição eletrônica com injeção eletrônica de combustível (EFI) ... trocadilhos ... e não usar EFI porque não é totalmente compreendido.
ron
3

Em vez de dd, criei um novo volume. Mais etapas, mas podem corrigir problemas em vez de copiá-los. Eu tinha um boot muito pequeno que foi corrompido. Eu também estava usando cento7 com grub2. Portanto, minhas instruções exigiriam alguns ajustes ou atualização para o grub2, como sugerido pela psusi. Eu tentei notar as mudanças.

NOTA: Quando eu uso "/ dev / sdx", suponho que você saiba que o "sdx" precisa ser alterado para qualquer que seja o nome do disco / volume que você deseja que seja / boot.

  • Use fdisk (não cfdisk) para particionar com o tipo 83 (parte normal do linux) e marque como inicializável.
    • Razão do fdisk: o cfdisk inicia a partição muito cedo, sem espaço para o carregador de inicialização. Lembre-se de que o carregador de inicialização precisa caber antes da partição.
  • Tornar o sistema de arquivos na partição. Ext [234], xfs. outras?.
  • Montar em / boot
  • Copie os arquivos * .img de / boot antigos para / boot ... pelo menos os que você deseja manter.
  • Também copiei os arquivos vmlinuz- * do antigo / boot para o / boot ... não tenho certeza se isso é necessário.
  • Execute grub2-install / dev / sdx
    • Nota 1: Se você estiver usando o grub (em vez do grub2), acredito que o comando correto seja grub-install / dev / sdx
    • Nota 2: Isso é instalado antes da partição que acabamos de formatar, para NÃO apontar para / dev / sdx1!
  • Execute grub2-mkconfig -o /boot/grub2/grub.cfg
  • Não se esqueça de atualizar / etc / fstab para / boot

referências: http://www.ocztechnologyforum.com/fo...226#post373226 http://www.patriotmemory.com/forums/...ead.php?t=3696 http://thunk.org/tytso /blog/2009/02/...se-block-size/ https://ubuntuforums.org/showthread.php?t=1528529 https://wiki.centos.org/HowTos/Grub2

Art Hill
fonte
2

O problema é que você não deve estar usando ddpara copiar o MBR dessa maneira. Você simplesmente precisa reinstalar o grub na nova unidade para obter um MBR atualizado corretamente . O MBR contém o local do arquivo do estágio 2 do grub, que foi alterado quando você restaurou o dump.

Você também deve atualizar para o grub2, pois o legado do grub não é mantido há anos e o grub2 não requer uma partição não lvm / boot.

psusi
fonte
Estou usando o grub2, é o que o instalador do CentOS 6 colocou no meu disco. Além disso, a partição não lvm / boot também foi a configuração padrão fornecida pelo CentOS. Tentei reinstalar o grub2 várias vezes na unidade, mas fazê-lo funcionar foi algo que me escapou.
Cloudkiller