Neues System parallel installieren

schnurps

Member
Hallo,

im Moment benutze ich FBSD 5.4. Jetzt ist mir eine Platte meines Raid 5 kaputt gegangen und wegen eines Defekts am Raidcontroller lässt sich das Raid 5 auch nicht mehr neu aufbauen.
Meine Überlegung geht dahin, dass ich mir eine neue Platte nehme, die unter beispielsweise
/newsystem mounte, darauf per chroot o.ä. ein aktuelles System lauffähig mit allen für mich wichtigen Diensten installiere und wenn alles gut läuft, im Bootmanager das zu bootende System umschalte und alles läuft weiter, nur unter einem neuen System.
Danach kann ich einfach die restlichen zwei Platten des kaputten Raid 5 entfernen und das alte Raid auflösen.

Ist das in etwa so richtig oder hab ich einen Denkfehler drin? Mein Ansinnen ist, die Downtime so gering wie möglich zu halten und im Notfall wieder das alte System booten zu können.

Ich freue mich auf Antworten

Schnurps
 
Hallo eine Methode hierfür steht in /usr/src/UPDATING ziemlich am Ende (STABLE=bestehendes System CURRENT=neues System):

Code:
To cross-install current onto a separate partition
        --------------------------------------------------
        # In this approach we use a separate partition to hold
        # current's root, 'usr', and 'var' directories.   A partition
        # holding "/", "/usr" and "/var" should be about 2GB in
        # size.

        <make sure you have good level 0 dumps>
        <boot into -stable>
        make buildworld
        make buildkernel KERNCONF=YOUR_KERNEL_HERE
        <maybe newfs current's root partition>
        <mount current's root partition on directory ${CURRENT_ROOT}>
        make installworld DESTDIR=${CURRENT_ROOT}
        cd src/etc; make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
        make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
        cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
        <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
        <reboot into current>
        <do a "native" rebuild/install as described in the previous section>
        <maybe install compatibility libraries from src/lib/compat>
        <reboot>

So in etwa hab' ich's auch gemacht, als ich auf meinem Reechner aus der i386 Installation eine amdd64 Installation gemacht hab.

Wenn es sich um die gleiche HW-Plattform und den gleichen source-stand handelt kann man IMHO auf das neubauen der Welt und des Kernels in CURRENT verzichten.

HTH
chaos
 
geht das vielleicht mit dd if of auch?
Dann hast du zwar kein neues System aufgesetzt, sondern nur eine Kopie des jetzigen erstellt, die downtime ist aber ein einziger Restart, denn du weißt ja, dass alles läuft und am Platz ist.
 
Mit dd würd ich sowas nicht machen.
Wenns ums reine Kopieren geht, dann nimm rsync mit passenden[ TM] Optionen.
 
Mit dd würd ich sowas nicht machen.
Wenns ums reine Kopieren geht, dann nimm rsync mit passenden[ TM] Optionen.

ich würde es wahrscheinlich auch mit rsync probieren, aber das geht soviel ich weiß nicht über Partitionsgrenzen und es nimmt auch keine swap oder Partitionsattribute mit. Mit dd kann ein Device in allen Eigenschaften abgebildet werden, sofern das Zieldevice wenigstens gleich groß ist.
Das ist ganz sicher keine endgültige Lösung, hält aber garantiert die Downtime niedrig um das System erst mal wieder hinzukriegen.
Jedenfalls habe ich damit schon bei einigen Systemen gute Erfolge gehabt, allerdings speziell bei solchen Systemen, die ich nicht weiter kenne und mir Experimente zu gewagt erschienen, besonders wenn eine Neuinstallation nicht einfach möglich war (wegen nicht mehr vorhandener Quellen und so). Das ist bei OpenSource Produkten ja ein wenig anders und deshalb, ja, würde ich es wohl auch mit rsync probieren.
Du kannst alle Rechte und Eigentümer erhalten und Links als Links übertragen und so fort. So übertrage ich mein home-Verzeichnis in der Regel auf einen neuen Rechner und sichere meine Daten regelmäßig mit der Crontab und einem rsync Aufruf.
 
Jetzt bin ich total verwundert.
Im Augenblick laufen noch beide Raids im Rechner. Das alte ist /dev/da2 und das neue ist /dev/da0.
Mithilfe von dump/restore habe ich alle Daten von der alten Platte auf die neue kopiert.
Vorher habe ich mithilfe der Freebsd CD und "sysinstall" die Partitionen vorbereitet.
Jetzt sieht meine mounttabelle so aus:

/dev/da2s1a /
/dev/da0s1g /home
/dev/da0s1f /tmp
/dev/da0s1d /usr
/dev/da0s1e /var

Das passiert, wenn ich mithilfe des Bootmanagers von der neuen Platte starte. Er mountet sich alle Partitionen von der neuen Platte aber / wird von der alten benutzt.
Andersherum ist es, wähle ich die zweite Platte am Bootmanager aus. Dann sieht es so aus:

/dev/da0s1a /
/dev/da2s1g /home
/dev/da2s1f /tmp
/dev/da2s1d /usr
/dev/da2s1e /var

Jetzt weiss ich nicht mehr weiter. Wo ändere ich genau diese Information?
Zustandegekommen ist das Ganze wahrscheinlich durch das setzen des Bootflags im Raidcontroller. Dadurch ist aus da2 da0 geworden und aus da0 ist da2 geworden.

Wie kann ich diesem Durcheinander ein Ende bereiten?

Für Ratschläge bin ich gerne offen.
 
Ähm, also in /etc/fstab kannst du das ja alles einstellen... Häng doch einfach die alten Platten ab und dann guck, ob was bootet. Zur Not halt im Single User-Modus. Dort solltest du dann in der Lage sein, deine gewünschten Partitionen erstmal von Hand zu mounten, um sie dann später in /etc/fstab einzutragen.

Oder habe ich jetzt irgendwas übersehen?
 
Von welcher Platte er anfängt müsstest du auch im Bios einstellen können.
 
Meine fstab sieht folgendermassen aus:

/dev/da0s1b none
/dev/da0s1a /
/dev/da0s1g /home
/dev/da0s1f /tmp
/dev/da0s1d /usr
/dev/da0s1e /var

Gemountet hat er auch fast alles so, aber eben auch nur fast. Die Mounttabelle sieht so aus:

/dev/da2s1a on /
devfs on /dev
/dev/da0s1g on /home
/dev/da0s1f on /tmp
/dev/da0s1d on /usr
/dev/da0s1e on /var

da0 ist die neue Platte
da2 die alte Platte

Ja wo kommt jetzt dieses /dev/da2xxx her? das muss irgendwo im MBR so drinstehen bzw. im Bootmanager. Ich seh aber grad nicht mehr durch.

Im BIOS kann ich die Reihenfolge der Platten nicht angeben, da die Platten an einen Highpoint Rocketraid S-ATA Controller als Raid angeschlossen sind. In dessen BIOS kann ich einem bestimmten Raid ein Bootflag setzen. Im Rechner BIOS tauchen die Raids dann nicht mehr auf.

Wenn ich im RAID Bios der alten Platte das Bootflag gebe, bootet auch schön die alte Platte, nur sieht da die Mounttabelle genau andersherum aus. siehe weiter oben. die fstab allerdings ist auch da korrekt, allerdings anstelle da0xxx steht da eben alles mit da2.

Ich meine, der Bootmanager ist falsch konfiguriert, aber wie mach ich es jetzt richtig?

Vielleicht kann mir wieder jemand auf die Sprünge helfen.

Vielen Dank fürs lesen.

Schnurps
 
hi schnurps
versuch es doch mal mit einem neuen bootloader und lass den mbr von dem neu schreiben :)
dazu lächele ich, weil es wirklich gemein ist.
welchen mbr von welcher Platte innerhalb eines raid?
ich habe keine Ahnung, was da wie passiert, erinnere aber auch, dass ein raid-Verband über einen Kotroller als eine einzige Platte mit einem einzigen mbr angesprochen wurde. Wie das auch bei dir scheint.
Nun denn.
welchen boot-loader verwendest du denn? und wie kam es dazu?
eben erst musste ich erleben, dass grub die Platten anders zählen kann, als das OS, welches ihn installiert. Da ist Vorsicht geboten.
Dann, du hattest ja ein laufendes System mit nur einem Raid? wie war das damals? auch da2? wieso wird der neue raid nun als da0 erkannt, was doch normalerweise die erste Platte sein sollte?
Kannst du mal versuchen, die Kontroller zu tauschen? so dass die Platten dran bleiben, der Steckplatz verändert wird. Ich vermute einfach, dass der Kontroller mit niedrigerem Interrupt und daher höherem Steckplatz die nummer 0 bekommt. Seine Platten dann da0... und so fort. Als einziger Kontroller, war das egal, aber nun gibt es Verwirrung im System!
 
Hallo pit234a,

alle Platten hängen am gleichen Controller. Wie ich schon erwähnte, setze ich im BIOS des Controllers ein Bootflag. Nach meinen Beobachtungen ist je nachdem, welches Raid des Controllers das Bootflag gesetzt hat gleich da0. Das andere ist da2. da1 ist die einzelne Platte, die im ersten Raid nicht mehr vorhanden ist, aber immer noch eingebaut ist. Ich benutze diese da1 aber nicht.

Wie genau setzte ich den boot-loader neu und welche Parameter übergebe ich wie und wo genau. Kann man den aktuellen MBR auslesen und evt. korrigieren? Das wär's doch im Grunde genau.
Der Bootloader, den ich verwende, ist der Standard FBSD Loader. Allerdings ist im Moment sogar noch der FBSD Bootmanager am Start, den ich allerdings gar nicht brauche, weil ich nur FBSD auf der Maschine laufen habe.

Grüße
Schnurps
 
da will ich mich mit Ratschlägen äußerst bedekt halten, denn ich habe mir selbst schon mehrere MBR zerschossen, weil ich was falsch gemacht habe.
Zunächst, ziemlich sicher und unverfänglich, solltest du unbedingt sichern, was du hast. Dazu geht ein dd if=/dev/Platte of=name bs=512 count=1 und wie gesagt, das solltest du mit allen Platten machen und name, also der Speicherort, sollte dir zugänglich sein, auch wenn du dein System nicht mehr starten kannst, also am ehesten nicht innerhalb des Systems und gar nich auf der Platte selbst ablegen. Evtl musst du dein System mit einer Live-CD starten und den gespeicherten MBR gerade so wieder zurückschieben, um wieder Funktionalität zu erzielen.
Als nächstes solltest du die Plattengeometrie merken, also möglichst genau die Größen und start und Endpunkte der Partitionen etwa mit fdisk auslesen und speichern und schließlich noch die /etc/fstab, dann solltest du gerüstet sein.
Der MBR enthält neben des Startprogramms nämlich auch noch die Partitionstabelle und wenn die zerschossen ist, sind immer noch alle Daten an ihrem Platz und ich konnte schon mehrfach weiter machen, weil ich dann nur die Partitionen neu anlegte und genau die gleichen Angaben wählte, dann die Partitionstabelle schrieb ohne zu formatieren und einfach Glück hatte.
In /boot werden mehrere mbrs gehalten, sie fallen durch die genaue Größe von 512 B auf. Du kannst zwar eine Ausgabe mit cat machen und tatsächlich Unterschiede sehen, doch lesen ist was anderes. Mein KDE beinhaltet ein Browser-Plugin, das Anzeige von Binär-Dateien genannt ist und das kann eine Darstellung.
Code:
0000:0000 | FC 31 C0 8E   C0 8E D8 8E   D0 BC 00 7C   89 E6 BF 00 | ü1À.À.Ø.ÐŒ.|.æ¿.
0000:0010 | 06 B9 00 01   F3 A5 89 FD   B1 08 F3 AB   FE 45 F2 E9 | .¹..ó¥.ý±.ó«þEòé
0000:0020 | 00 8A F6 46   BB 20 75 08   84 D2 78 07   80 4E BB 40 | ..öF» u..Òx..N»@
0000:0030 | 8A 56 BA 88   56 00 E8 FC   00 52 BB C2   07 31 D2 88 | .Vº.V.èü.R»Â.1Ò.
0000:0040 | 6F FC 0F A3   56 BB 73 19   8A 07 BF 87   07 B1 03 F2 | oü.£V»s...¿..±.ò
0000:0050 | AE 74 0E B1   0B F2 AE 83   C7 09 8A 0D   01 CF E8 C5 | ®t.±.ò®.Ç....ÏèÅ
0000:0060 | 00 42 80 C3   10 73 D8 58   2C 7F 3A 06   75 04 72 05 | .B.Ã.sØX,.:.u.r.
0000:0070 | 48 74 0D 30   C0 04 B0 88   46 B8 BF B2   07 E8 A6 00 | Ht.0À.°.Fž¿².èŠ.
0000:0080 | BE 7B 07 E8   B2 00 8A 56   B9 4E E8 8E   00 EB 05 B0 | Ÿ{.è²..V¹Nè..ë.°
0000:0090 | 07 E8 B0 00   30 E4 CD 1A   89 D7 03 7E   BC B4 01 CD | .è°.0äÍ..×.~ŒŽ.Í
0000:00A0 | 16 75 0D 30   E4 CD 1A 39   FA 72 F2 8A   46 B9 EB 16 | .u.0äÍ.9úrò.F¹ë.
0000:00B0 | 30 E4 CD 16   88 E0 3C 1C   74 F1 2C 3B   3C 04 76 06 | 0äÍ..à<.tñ,;<.v.
0000:00C0 | 2C C7 3C 04   77 C9 98 0F   A3 46 0C 73   C2 88 46 B9 | ,Ç<.wÉ..£F.sÂ.F¹
0000:00D0 | BE 00 08 8A   14 89 F3 3C   04 9C 74 0A   C0 E0 04 05 | Ÿ.....ó<..t.Àà..
0000:00E0 | BE 07 93 C6   07 80 53 F6   46 BB 40 75   08 BB 00 06 | Ÿ..Æ..SöF»@u.»..
0000:00F0 | B4 03 E8 59   00 5E 9D 75   06 8A 56 B8   80 EA 30 BB | Ž.èY.^.u..Vž.ê0»
0000:0100 | 00 7C B4 02   E8 47 00 72   86 81 BF FE   01 55 AA 0F | .|Ž.èG.r..¿þ.Uª.
0000:0110 | 85 7C FF BE   85 07 E8 19   00 FF E3 B0   46 E8 24 00 | .|ÿŸ..è..ÿã°Fè$.
0000:0120 | B0 31 00 D0   EB 17 0F AB   56 0C BE 78   07 E8 EB FF | °1.Ðë..«V.Ÿx.èëÿ
0000:0130 | 89 FE E8 03   00 BE 85 07   AC A8 80 75   05 E8 04 00 | .þè..Ÿ..¬š.u.è..
0000:0140 | EB F6 24 7F   53 BB 07 00   B4 0E CD 10   5B C3 8A 74 | ëö$.S»..Ž.Í.[Ã.t
0000:0150 | 01 8B 4C 02   B0 01 56 89   E7 F6 46 BB   80 74 13 66 | ..L.°.V.çöF».t.f
0000:0160 | 6A 00 66 FF   74 08 06 53   6A 01 6A 10   89 E6 48 80 | j.fÿt..Sj.j..æH.
0000:0170 | CC 40 CD 13   89 FC 5E C3   20 20 A0 0A   44 65 66 61 | Ì@Í..ü^Ã  .Defa
0000:0180 | 75 6C 74 3A   A0 0D 8A 00   05 0F 01 06   07 0B 0C 0E | ult:...........
0000:0190 | 83 A5 A6 A9   0D 0C 0B 0A   09 08 0A 0E   11 10 01 3F | .¥Š©...........?
0000:01A0 | BF 44 4F D3   4C 69 6E 75   F8 46 72 65   65 42 53 C4 | ¿DOÓLinuøFreeBSÄ
0000:01B0 | 66 BB 44 72   69 76 65 20   00 00 80 8F   B6 00 00 00 | f»Drive ....¶...
0000:01C0 | 00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00 | ................
0000:01D0 | 00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00 | ................
0000:01E0 | 00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00 | ................
0000:01F0 | 00 00 00 00   00 00 00 00   00 00 00 00   00 00 55 AA | ..............Uª
Naja, weiß net, wie das hier dargestellt wird, hänge mal noch einen screenshot dazu.
Informationen darüber, was wo steht, findest du in http://de.wikipedia.org/wiki/Mbr und ich denke mir, dass es Tools zur gezielten Bearbeitung geben muss, fand aber nie welche. Meine Idee ist daher, mit dd if of zu arbeiten, leider verstehe ich die Syntax nicht richtig.
Es ist aber möglich, gezielte Teile aus dem mbr mit dd zu sichern und auch wieder gezielt zurück zu sichern, so dass auch ausgetauscht werden könnte. Jedenfalls geht es, davon las ich in einer man-Page zu einem GNU-Tool, das Partitionen retten kann (weiß nicht mehr, wie es hieß, gpart?), den mbr ohne Partitionstabelle zu schreiben, doch die Syntax ist irgendwie seltsam gewesen und nutzte weitere Optionen von dd, die ich nicht verstand.
Ich habe also dazu auch nur ein ganz grundlegendes Verständnis und einige Haarsträubende Erfahrungen hinter mir. Ein einfacher Ansatz könnte für dich aber sein, einen Bootmanager wie grub zu nutzen und damit den mbr neu zu bauen. Ob er von Raids läuft, weiß ich nicht.
Oder evtl nimmst du da1 zum Booten im Bios und wählst von hier deine /boot auf dem raid.
Oder du versuchst vielleicht, aus /boot/boot0 oder boot1 die ersten 440B in deinen mbr zu nehmen, anschließend evtl kein bootbares System mehr, aber vielleicht auch genau richtig.
Jedenfalls habe ich mit sysinstall keine großen Erfolge gehabt, einen beschriebenen mbr nach meinen Wünschen zu beinflussen. Ist er aber leer, also Jungfräulich, dann geht es gut und somit hast du also dann auch hier eine Chance, was zu retten, wenn du einen entsprechenden mbr aus irgendeiner Platte deines Systems nimmst, von der noch nicht gebootet wurde. boot0 oder boot1 sind auch so was, weiß aber nicht mehr, welcher was ist. Werde wohl doch alt.
 

Anhänge

  • boot0.png
    boot0.png
    107,4 KB · Aufrufe: 274
Zurück
Oben