• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

System spiegeln - Probleme mit mkinitrd

rund

Newbie
Moin moin,
ich habe hier zwei Server, einen primären und einen Backup-Server.
Damit der Backup-Server die Daten des Primärsystems hat, hat dieser ein eigenes Linux unter dem ich per rsync die Daten des Primärsystems auf zwei seperate Partitionen (Nach der Anleitung von http://www.afokken.de/linux/mirror.php) kopiere.
Damit ich von den Backupdaten einen Nutzen habe soll die kopierte Partition am Backup-Server bootbar sein. Ich habe folgende Partionsaufteilung am Backup-Server (eigenes Linux)

Code:
/dev/disk/by-id/scsi-SATA_WDC_WD800JD-75M_WD-WMAM9CAK2132-part6 /                    ext3       acl,user_xattr        1 1
/dev/disk/by-id/scsi-SATA_WDC_WD800JD-75M_WD-WMAM9CAK2132-part1 /Dalek               ext3       acl,user_xattr        1 2
/dev/disk/by-id/scsi-SATA_WDC_WD800JD-75M_WD-WMAM9CAK2132-part2 /Dalek/home          ext3       acl,user_xattr        1 2
/dev/disk/by-id/scsi-SATA_WDC_WD800JD-75M_WD-WMAM9CAK2132-part7 /home                ext3       acl,user_xattr        1 2
/dev/disk/by-id/scsi-SATA_WDC_WD800JD-75M_WD-WMAM9CAK2132-part5 swap                 swap       defaults              0 0

Der Primärserver wird unter /Dalek mit folgendem Script gespiegelt:

Code:
#!/bin/sh
# Skript zum Spiegeln von PC1 nach PC2.
# Dieses Skript muß an die jeweiligen Gegebenheiten angepasst werden.
# Nach der Anpassung die folgende Zeile entfernen:
#exit 1

# Nach Ausführung dieses Skripts muss die Datei /etc/fstab
# des pc2-Grundsystems kopiert und von Hand angepasst werden.

# Dieses Skript soll nur auf PC2 laufen
if [ "$HOSTNAME" != "Cyberman" ]; then
  echo "Aufruf '$0' nur auf Cyberman zulässig"
  exit 1
fi

# Variablen
rscmd="rsync -az -v --numeric-ids --delete --delete-after -e ssh"
rhost="dalek:"
root_dir="/Dalek"
home_dir="/Dalek/home"

# Mirror-Partitionen auf PC2 mounten:
mount /dev/sda1 $root_dir
mount /dev/sda2 $home_dir

# Systemverzeichnisse nur einrichten:
test ! -d $root_dir/boot && (mkdir $root_dir/boot; chmod 755 $root_dir/boot)
test ! -d $root_dir/media && (mkdir $root_dir/media; chmod 755 $root_dir/media)
test ! -d $root_dir/media/cdrom && (mkdir $root_dir/media/cdrom; chmod 755 $root_dir/media/cdrom)
test ! -d $root_dir/media/floppy && (mkdir $root_dir/media/floppy; chmod 755 $root_dir/media/floppy)
test ! -d $root_dir/lost+found && (mkdir $root_dir/lost+found; chmod 755 $root_dir/lost+found)
test ! -d $root_dir/mnt && (mkdir $root_dir/mnt; chmod 755 $root_dir/mnt)
test ! -d $root_dir/proc && (mkdir $root_dir/proc; chmod 555 $root_dir/proc)

# Systemverzeichnisse kopieren:
$rscmd  $rhost/bin        $root_dir
$rscmd  $rhost/boot       $root_dir
$rscmd  $rhost/dev        $root_dir
# Nächste Zeile evt. um --exclude=/etc/sysconfig/network/ifcfg-eth-id-* ergänzen (s. Text)
$rscmd  $rhost/etc        $root_dir --exclude=/etc/fstab --exclude=/etc/mtab
$rscmd  $rhost/home       $home_dir
$rscmd  $rhost/lib        $root_dir
$rscmd  $rhost/opt        $root_dir
$rscmd  $rhost/root       $root_dir
$rscmd  $rhost/sbin       $root_dir
$rscmd  $rhost/srv        $root_dir
$rscmd  $rhost/sys        $root_dir
$rscmd  $rhost/tftpboot   $root_dir
$rscmd  $rhost/tmp        $root_dir
$rscmd  $rhost/usr        $root_dir
$rscmd  $rhost/var        $root_dir

# Mirror-Partitionen wieder unmounten:
umount $root_dir
umount $home_dir

exit 0

Damit die Partition bootbar ist habe ich in der menu.lst von grub folgenden Eintrag hinzugefügt:
Code:
###Dalek Mirror - Only boot this in case of emergency - Booting will cause dublicate IPs###
title Dalek Mirror - Will cause dublicate IP if Dalek server is still online!
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.22.5-31-default root=/dev/sda6 vga=0x31a resume=/dev/sda5 splash=silent showopts
    initrd /boot/initrd-2.6.22.5-31-default

Das Booten von der Partition schlägt leider fehl, da in der initrd-File noch die alte Partition per ID referenziert ist, die Platte des Backupservers aber eine andere ID hat:
Code:
drivers/hid/usbhid/hid-core.c: v2.6: USB HID core driver
..................Could not find /dev/disk/by-id/<primäre_Platte>-part6.
Want to fall back to /dev/hda6 ? (Y/n)
y
Waiting for device /dev/hda6 to appear: ........................not found -- exiting to /bin/sh

$ (shell)


Um den Fehler zu beheben muss ich - soweit ich das verstanden habe - das initrd-Image neu erzeugen.
Ich hab allerdins noch kein gutes Manual dazu gefunden und bin auch mit der Manpage nicht zurecht gekommen.
Kann mir einer sagen, wie ich bei der hier vorliegenden Konstellation mit mkinitrd ein Bootimage erstellen kann?
Alle bisherigen Versuche endeten darin, dass der Backup-Server wieder das eigene Linux gebootet hat, aber USB nicht mehr funktioniert hat (incl. Tastatur/Maus).

Die Fstab des gespiegelten Linux habe ich auch angepasst, aber soweit ich das verstanden habe kommt die ja erst später zum Einsatz und sollte hier noch keine Rolle spielen.
 
A

Anonymous

Gast
Je nach dem was du genau damit bezwecken willst, sind da leider in deinem Script ein paar Dinge drin die irgendwo zwischen kontraproduktiv, fehlerhaft, unnütz, bis hin zu gefählich sind. Unter Anderem solltest du dir folgende Zeilen mal etwas genauer anschauen und überlegen was du damit bezwecken willst:
Code:
 test ! -d $root_dir/lost+found && (mkdir $root_dir/lost+found; chmod 755 $root_dir/lost+found)
$rscmd $rhost/boot       $root_dir
$rscmd  $rhost/dev        $root_dir
# Nächste Zeile evt. um --exclude=/etc/sysconfig/network/ifcfg-eth-id-* ergänzen (s. Text)
$rscmd  $rhost/etc        $root_dir --exclude=/etc/fstab --exclude=/etc/mtab
$rscmd  $rhost/tmp        $root_dir
$rscmd  $rhost/sys        $root_dir

Der aktuelle Fehler kommt dadurch da du derzeit in deiner menu.lst versuchst das System mit dem falschem Kernel und falscher initrd zu booten.

Wenn das so wie ich das verstanden habe funktionen soll, müsste (je nach verwendeten Distributionsstand) nach dem kopieren der Daten ein wahrscheinlich recht kompliziertes Script das System auf dem anderen Rechner jedesmal neu an den anderen Rechner anpassen und bootbar machen, da du sämtliche Konfigurationen die geändert werden müssten mit dem nächsten sync wieder überschreibst. Das ändern der fstab wird bei weitem nicht ausreichen, ein neu erstellen einer angepassten initrd würde etwas weiterhelfen, dein LAN und andere Hardware damit aber immer noch nicht richtig konfiguriert. In den letzten Jahren hat sich doch einiges geändert das in deinem Script derzeit überhaupt nicht berücksichtig ist.

robi
 
OP
R

rund

Newbie
Hi,
naja... in meinem Script ist übertrieben, ich hab das halt so im Netz gefunden (s link im Topic) und als einfache Variante akzeptiert.
Die beiden Server dürften sich in der Hardware nicht sehr unterscheiden (Dell MT Optiplex 745 und Dell MT Optiplex 755), ich hatte gehofft, dass nur die CPU anders ist, aber zumindest die Platte hatte sich dann doch geändert.

Wenn das so nicht funktioniert, wie könnte es denn zum Beispiel gehen?
 
Ich denke mal, das Umstellen von der Plattenkennung UID auf die alte Version mit sdx sollte viele Probleme lösen. IN dem anderen PC ist ja zwangsläufig ne andere Platte verbaut und schon gibts unterschiedliche UIDs
 
Oben