Przeniesienie / boot i MBR na nowy dysk


11

Mam serwer CentOS 6 z dwoma dyskami twardymi. Mój stary dysk 3 TB dawał mi pewne problemy, więc przenoszę rzeczy na nowy dysk. Ponieważ moim /i /homepartycjami zarządza LVM, łatwo było migrować je na nowy dysk. Teraz chcę przenieść moją /bootpartycję i MBR, dzięki czemu wszystko się uruchomi.

Załadowałem płytę CD na żywo i rsyncednad /bootpartycją do partycji o tym samym rozmiarze na nowym dysku. Próbowałem również skopiować mój MBR za pomocą następujących poleceń:

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

Po wykonaniu tego zrestartowałem komputer, powiedziałem BIOSowi, żeby nie patrzył na stary dysk twardy podczas cyklu rozruchu i tylko patrzył na nowy dysk, ale wszystko, co skończyłem, to migający kursor.

Czy przegapiłem tutaj krok? Czy jest coś jeszcze, co muszę zrobić, aby uruchomić system i całkowicie usunąć stary dysk?

EDYCJA: Zaczynam myśleć, że rsync nie był sposobem na skopiowanie partycji / boot z jednego dysku na drugi. Na podstawie tego przewodnika zamiast tego spróbowałem użyć polecenia zrzutu. W tym poleceniu skopiowałem starą, odmontowaną partycję rozruchową na nową, pustą, zamontowaną partycję rozruchową.

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

Podczas uruchamiania pojawia się błąd grub 15, który jest lepszy niż migający kursor, ale nie wiem, czy to jest bliżej rozwiązania.


Dlaczego nie zainstalować GRUB-a na nowym dysku?
frostschutz

Za każdym razem, gdy męczyłem się uruchamianiem grub-install, kończyłem się ładowaniem i otrzymywałem tylko monit o grub.
Cloudkiller

Odpowiedzi:


3

Jeśli dwa dyski twarde są tego samego rozmiaru (lub nowy jest większy), dlaczego po prostu nie skopiowałeś starego dysku na nowy dysk? To znaczy

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

Teraz, jeśli nowy dysk twardy jest większy, zmień rozmiary partycji na parted lub gparted. Wszystko to odbywa się przy uruchamianiu z live CD / USB-stick.


Są różnej wielkości. 3 TB było po prostu przesadą dla serwera, więc przeniosłem się do raptora 1 TB, mając nadzieję na zwiększenie prędkości. Niezależnie od tego klonowanie nie stanowi problemu. Przynajmniej część LVM poruszyła się łatwo i wygląda na to, że partycja rozruchowa została skopiowana całkowicie z moim ostatnim zrzutem. Teraz myślę, że problem jest w jakiś sposób związany z moim grubem lub MBR. Myślę, że problem polega na tym, że nie wiem wystarczająco dużo o Grub2 i jego interakcji z LVM, aby to naprawić.
Cloudkiller

użycie dd, który robi trochę dla kopiowania bitów, jest starożytnym sposobem przeprowadzania migracji danych, szczególnie gdy rozmiary dysków są teraz w zakresie terabajtów i częściej rzeczywista ilość danych na dysku jest mniejsza niż 10 GB; czysta, świeża instalacja SUSE z dużą ilością zainstalowanych bibliotek uruchamia mnie około 5 GB na dysku, który umieszczam w jednym pliku i używam karty pamięci 8 GB do przenoszenia tego pliku tar, partycja rozruchowa, czy to EFI czy MBR, uruchamia tylko kilka MB.
Ron

jeśli możesz użyć EFI lub UEFI zamiast BIOS-u i mieć partycję rozruchową EFI za pośrednictwem GPT zamiast partycji rozruchowej MBR i dos, to w prosty sposób po prostu sformatuj partycję EFI jako fat32 i skopiuj te kilka MB powiązanych plików; w przeciwnym razie w przypadku MBR musisz zrozumieć, jak to działa, poprawić adresy w nim dotyczące nowego dysku, a następnie zainstalować nowy MBR na nowym dysku w pierwszym sektorze, aby BIOS mógł poprawnie uzyskać do niego dostęp; EFI jest o wiele lepszy, jeśli twój sprzęt jest zdolny do EFI
ron

a ELILO jest lepsze niż GRUB / GRUB2, za dużo rzeczy w grub, których nigdy nie używam i po prostu komplikuje rzeczy; jeden plik elilo.conf i gotowe! jeśli nie uruchomi się tylko ten jeden plik do sprawdzenia i poprawienia
ron

4

Okazuje się, że problem spowodował użycie rsync lub zrzutu do skopiowania partycji / boot. Na podstawie powyższej odpowiedzi Ericka uruchomiłem płytę CD na żywo w tryb ratunkowy i uruchomiłem następujące polecenia 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

Ponownie uruchomiłem pierwsze dwa dd, aby upewnić się, że wszystko zostało poprawnie skopiowane i nie jest uszkodzone podczas wszystkich testów, które przeprowadziłem. Następnie uruchomiłem trzeci dd, aby skopiować partycję rozruchową ze starego dysku na nowy. Następnie zamknąłem system, wyciągnąłem stary dysk i bez problemu uruchomiłem system CentOS.

Być może wystąpił problem z użyciem zrzutu na zamontowanym dysku, który spowodował, że kopia nie działa poprawnie. Bez względu na to, dd załatwiło sprawę. Dziękuję wszystkim za pomoc.


to dobry przykład ignorancji jest błogość, ponieważ zadziałała. Zadaj sobie pytanie, co zrobiła ratunkowa płyta CD, aby rozwiązać problem w MBR? Czy w systemie są jednocześnie dwa dyski, którym jest sda, a które sdb, a kiedy wyjmiesz stary dysk i masz tylko nowy dysk, czy to się zmieni, a potem zmieni się w sda lub sdb?
Ron

w zależności od tego, co robisz, może to nie mieć znaczenia, ale ogólnie lepiej jest uruchamiać dyski lub identyfikować je za pomocą unikalnej metody, takiej jak identyfikator urządzenia lub identyfikator UUID.
Ron

używanie dd i MBR jest jak używanie punktów i skraplacza w silniku zamiast elektronicznego zapłonu z elektronicznym wtryskiem paliwa (EFI) ... kalambur przeznaczony ... i nie używanie EFI, ponieważ nie jest w pełni zrozumiałe.
Ron

3

Zamiast dd zbudowałem nowy wolumin. Więcej kroków, ale może rozwiązać problemy, niż je kopiować. Miałem zbyt mały / boot, który się zepsuł. Używałem również cento7 z grub2. Więc moje instrukcje wymagałyby pewnych poprawek lub aktualizacji do grub2, jak sugeruje psusi. Próbowałem zanotować zmiany.

UWAGA: Kiedy używam „/ dev / sdx”, zakładam, że wiesz, że „sdx” należy zmienić na dowolną nazwę dysku / woluminu, który chcesz / bootować.

  • Użyj fdisk (nie cfdisk) do partycjonowania z typem 83 (normalna część linux) i oznacz jako bootowalną.
    • Powód dla fdisk: cfdisk uruchamia partycję zbyt wcześnie, bez miejsca dla programu ładującego. Pamiętaj, że moduł ładujący musi zmieścić się przed partycją.
  • Utwórz system plików na partycji. Ext [234], xfs. inni ?.
  • Zamontuj w / boot
  • Skopiuj pliki * .img ze starego / rozruchu do / boot… przynajmniej te, które chcesz zachować.
  • Skopiowałem również pliki vmlinuz- * ze starego / bootowania do / boot… nie jestem pewien, czy jest to potrzebne.
  • Uruchom grub2-install / dev / sdx
    • Uwaga 1: Jeśli używasz grub (zamiast grub2), uważam, że poprawnym poleceniem jest grub-install / dev / sdx
    • Uwaga 2: Instaluje się przed partycją, którą właśnie sformatowaliśmy, więc NIE kieruj jej na / dev / sdx1!
  • Uruchom grub2-mkconfig -o /boot/grub2/grub.cfg
  • Nie zapomnij zaktualizować / etc / fstab dla / boot

odniesienia: 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


2

Problem polega na tym, że nie powinieneś używać dddo kopiowania MBR w ten sposób. Musisz tylko ponownie zainstalować GRUB na nowym dysku, aby uzyskać poprawnie zaktualizowany MBR. MBR zawiera lokalizację pliku grub stage 2, który zmienił się po przywróceniu zrzutu.

Powinieneś także dokonać aktualizacji do grub2, ponieważ starsze wersje grub nie były utrzymywane przez lata, a grub2 nie wymaga partycji innej niż lvm / boot.


Używam grub2, to właśnie instalator CentOS 6 umieścił na moim dysku. Ponadto partycja inna niż lvm / boot była również domyślną instalacją dostarczaną przez CentOS. Wielokrotnie próbowałem ponownie zainstalować grub2 na dysku, ale uciekło mi to.
Cloudkiller
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.