Frage mdadm raid 1 grub nur auf sda


Ich habe gerade einen CentOS 6.3 64bit Server mit mdadm eingerichtet, aber eine Glühbirne ging weiter und ich stellte fest, dass grub nur auf dem ersten Laufwerk, das ungefähr so ​​viel benutzt wird, und einem Aschenbecher auf einem Motorrad installiert werden würde.

Ich habe mir meinen Verdacht bestätigt:

grub> find /grub/stage1
find /grub/stage1
 (hd0,0)

Also habe ich meine Gerätekarte so aktualisiert, dass sie wie folgt aussieht:

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

(Beachten Sie, dass der Eintrag (hd1) von mir hinzugefügt wurde

Also habe ich versucht, grub auf / dev / sdb zu installieren

Und ich bekomme:

grub> root (hd1,0)
root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... no

Error 15t: File not found

Also habe ich etwas gegoogelt (Leider hat Google gerade einen guten Job gemacht und 100 von grub-Installationsbeispielen aufgenommen, die hier nicht helfen)

Nachdem ich ein paar Hinweise gefunden hatte, versuchte ich:

# grub-install --recheck /dev/sdb

Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

# grub-install /dev/sdb
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

Welche Art von suggerieren grub ist jetzt auch auf / dev / sdb installiert, aber wenn ich noch einmal gucke, bekomme ich immer noch:

grub> find /grub/stage1
find /grub/stage1
 (hd0,0)

getrennte Ausgänge für die 2 Laufwerke:

SDA

Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  500MB   500MB   ext3         1     boot
 2      500MB   81.0GB  80.5GB               2     raid
 3      81.0GB  85.0GB  4000MB               3     raid
 4      85.0GB  3001GB  2916GB               4     raid

SDB

Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  500MB   500MB   ext3         1
 2      500MB   81.0GB  80.5GB               2     raid
 3      81.0GB  85.0GB  4000MB               3     raid
 4      85.0GB  3001GB  2916GB               4     raid

Und mdadm mdstat:

Personalities : [raid1]
md1 : active raid1 sdb3[1] sda3[0]
      3905218 blocks super 1.1 [2/2] [UU]

md2 : active raid1 sdb4[1] sda4[0]
      2847257598 blocks super 1.1 [2/2] [UU]

md0 : active raid1 sda2[0] sdb2[1]
      78612189 blocks super 1.1 [2/2] [UU]

Ist jemand in der Lage, etwas Licht in die Situation zu bringen, fühlt es sich an, als wäre ich im Moment 99% da und vermisse etwas Offensichtliches.

Vielen Dank.

Update bearbeiten:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0               74G   18G   53G  25% /
tmpfs                 580M     0  580M   0% /dev/shm
/dev/sda1             462M   98M  341M  23% /boot
xenstore              580M   64K  580M   1% /var/lib/xenstored

/ ist auf md0, das aus sda2 und sdb2 besteht Swap ist md1, das ist sda3 und sdb3 md2 ist LVM Allerdings / boot ist nur auf / sda1

Ich nehme an, das ist das Problem, würde die Auflösung zu erstellen MD4 und haben es enthalten SDein1 und SDb1

Vielleicht habe ich ein paar Dinge in meinem Kopf durcheinander gebracht, aber ich nahm an, grub war nicht auf einer Partition installiert, sondern die ersten Blöcke des Laufwerks, also sda oder hd0 / 1

Jede Klärung und Beratung wird geschätzt.


6
2018-02-27 18:33


Ursprung


Kannst du bestätigen, dass sda1 und sdb1 die gleichen Dateien enthalten (inkl. Kernel, Initrd, Grub-Stufen etc.), bitte? - Henry S.
Vielleicht ist die Ersteinrichtung auf einer einzelnen Festplatte die Ursache, ich werde den ursprünglichen Post mit mehr Infos aktualisieren - Backtogeek
IIRC grub würde auch von einer als Überfall markierten Partition laden. Wenn Sie also dieses md4 erstellen, halten Sie die beiden Partitionen synchron. Aber ich denke, du musst noch rennen grub-install /dev/sdX für die separaten Festplatten. Weil es beim Start kein MD-Gerät gibt. Der Bootfloader von grub wird in den ersten Blöcken des Platte aber die späteren Phasen sind in der / boot_partition gespeichert. Weil all diese ausgefallenen Menüs nicht in den Raum vor der Partitionstabelle passen. - Henry S.


Antworten:


Dies sollte dein Problem sein

root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83

Führen Sie die folgenden Schritte aus:

  • Erstelle die 2 / boot Partitionen auf / dev / sda1 und / dev / sdb1 - tippe fd ein (Linux autodetect raid) - benutze dein Lieblingswerkzeug (fdisk, cfdisk, gparted, ...) (fd00 für GPT)
  • Denken Sie daran, das bootfähige Flag in beiden Partitionen, sda1 und sdb1, einzuschalten (nicht für GPT)
  • Erzwinge die Festplatten als brandneuen Raid:

    mdadm --zero-superblock /dev/sda1 
    mdadm --zero-superblock /dev/sdb1
    
  • Verwenden Sie beim Erstellen der Raid-Metadaten, die Ihre / boot-Partition sein werden, die Version 0.9. Linux kann neuere Versionen (ohne eine Ramdisk) nicht automatisch erkennen.

    mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1 --metadata=0.9
    
  • Formatieren Sie mit ext2 oder ext3

  • Installieren Sie Ihr Linux Ihrer Wahl OHNE formatieren der / boot

Nach dem ersten Start der Distribution:

  • Korrigieren Sie Ihre / etc / fstab zu Punkt / booten zu / dev / md0 (vielleicht wird es nicht notwendig sein)
  • Installieren Sie grub auf dem 2 Festplatten MBR

    # grub /dev/sda
     grub> root (hd0,0)
     grub> setup (hd0)
     grub> quit
     quit
    
    # grub /dev/sdb
     grub> root (hd1,0)
     grub> setup (hd1)
     grub> quit
     quit
    
  • Editiere deinen Bootloader (Anleitung zu Grub1)

  • Suchen Sie die "Standard" -Linie und fügen Sie die "Fallback" -Option unten hinzu

    vi /boot/grub/menu.lst
    default 0
    fallback 1
    
  • Fügen Sie einen weiteren Eintrag zu Ihrem Bootloader hinzu (in meinem Fall habe ich grub1 gewählt, da es weniger kompliziert ist und es gut genug für meine Bedürfnisse ist), wobei jeder auf die verschiedenen Boot-Partitionen verweist, die Mitglieder des Raids sind:

    title           Debian GNU/Linux, kernel 2.6.32-5-686  (default)
    root            (hd0,0)
    kernel          /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
    initrd          /initrd.img-2.6.32-5-686
    
    title           Debian GNU/Linux, kernel 2.6.32-5-686  (fallback)
    root            (hd1,0)
    kernel          /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
    initrd          /initrd.img-2.6.32-5-686 
    
  • Beachten Sie, dass ich in meinem Fall eine LVM-Schicht auf meinem / md raid habe.

Erledigt. Dies sollte ausreichen, um einen "redundanten" Bootloader zu haben.


4
2018-03-28 12:30



Oder, da / boot ziemlich statisch ist, könnten Sie einfach 2 Partitionen (sda1 und sdb1) erstellen und diese täglich mit rsync synchronisieren. Installieren Sie grub manuell auf beiden Festplatten und verwenden Sie den Standard / Fallback-Trick. - nwildner
Rsync? !! Das ist eine schreckliche Idee! Lass Raid 1 sein Ding machen! Es klingt, als ob das Problem darin besteht, raid1 NACH der Installation von Centos einzurichten. Ich habe gerade abgeschlossen gentoo mit Raid 1 auf der Boot-Partition eingerichtet, aber da Raid Setup VOR der Installation eingerichtet ist, Grub sieht ein Gerät, und Linux RAID installiert den Bootloader auf beiden Festplatten. - GeoSword


Ob Sie diese beiden Laufwerke auf ein anderes Raid1-Array abbilden möchten, liegt ganz bei Ihnen. Es ist eine legitime Wahl, weil Sie dann in der Lage sein würden, grub zu installieren md4 direkt und vermeiden Sie die Hektik, beide Installationen manuell zu verwalten. Ich habe es getan.

Meiner Erfahrung nach ist die Gerätezuordnungsdatei weitgehend irrelevant und ihr Verhalten (wie grub es liest) ist bestenfalls unvorhersehbar, wenn nicht gar beliebig.

Das device Befehl von der Grub-Shell ist viel zuverlässiger. Sie können die Hilfe dazu lesen, aber die grundlegende Syntax spricht für sich selbst:

grub> device (hd0) /dev/md4

Danach wird / dev / md4 zugeordnet hd0 in der gerade laufenden grub-Sitzung, ohne die Gerätezuordnungsdatei zu beachten. Von hier würde man wie gewohnt mit fortfahren root (hd0) und setup (hd0,x). Der Grund für die Installation auf einer Partition wird von Henry S. erklärt.

AFAIK ist das einzige, was abgesehen von dem "Boot-Code" (stage1), der auf die ersten 512 Bytes des Laufwerks (MBR) geschrieben wird, die Nummer der Partition, wo diese Stufe nach dem Menü suchen sollte.

Es ist möglich, das durcheinander zu bringen. Man würde nach dem POST mit einer Eingabeaufforderung statt mit einem Menü begrüßt werden, aber grub bietet Befehle zum "Initialisieren" dieses Menüs von einer anderen Partition (Datei) als die, die bei der Installation angegeben wurde. In der Regel funktioniert es jedoch ohne Eingriff, da das "erste Startlaufwerk" im BIOS als "hd0" erkannt wird.


1
2018-03-22 09:38