Hier ist meine Situation:
- Zwei dedizierte Server im selben Rechenzentrum mit Gigabit-Ethernet dazwischen.
- Beide dedizierten Server wurden in einer auf Debian Squeeze basierenden Rettungsumgebung mit zusätzlichen Tools und Dienstprogrammen gestartet. Außerdem viel tmp-Speicherplatz (32 GB RAM auf beiden Boxen) zum Herunterladen von Software, Installieren von Paketen und / oder Kompilieren nach Bedarf.
- Beide dedizierten Server verfügen über ca. 3 TB nutzbaren Speicherplatz.
- Der "Quell" -Server verfügt über 4 x 1,5 TB Festplatten in Hardware RAID-10 mit einem Adaptec 4-Port-Controller.
- Der "Ziel" -Server verfügt über 2 x 3 TB Festplatten in Hardware RAID-1 mit einem Adaptec 2-Port-Controller - dieselbe Generation wie der andere, jedoch unterschiedliche Anzahl von Ports.
- Die Anzahl der verwendbaren Blöcke
/dev/sda
unterscheidet sich um weniger als 10 MB, aber das Array des Zielservers ist aus irgendeinem Grund einige Megabyte kleiner. - Beide RAID-Arrays sind so konfiguriert, dass sie die gesamte Festplattenoberfläche aller einzelnen Festplatten verwenden, um ein einziges RAID-Volume zu erstellen.
- Das Betriebssystem startet im MBR-Modus. Es wird kein UEFI-Boot verwendet.
Was ich machen will; was ich vorhabe zu tun:
- Kopieren Sie auf Blockebene das gesamte Betriebssystem-Image (dieses besteht nur aus dem GRUB2-Bootloader in der GPT-Partitionstabelle, / boot partition und / partition) vom "Quell" -Server auf den "Ziel" -Server.
- Wenn möglich , sollte die Kopie "live" erfolgen: Dies bedeutet, dass ich nicht genügend Speicherplatz habe, um eine ordnungsgemäße Datei des Disk-Images auf der Zielseite zu speichern, es sei denn, ich entpacke das Disk-Image als Kopie auf die Festplatte findet statt . Die Gigabit-Ethernet-Verbindung zwischen den Servern ist zuverlässig genug, damit ich damit vertraut bin, und ich werde natürlich
fsck
an beiden Enden (Quelle und Ziel) ausgeführt, um zu überprüfen, ob das Dateisystem vor und nach der Übertragung in Ordnung ist. - Übertragen Sie nach Möglichkeit keine Blöcke über das Netzwerk, die nicht von den einzelnen Dateisystemen in jeder Partition verwendet werden (alle Partitionen sind als ext4 formatiert). Dies liegt daran, dass mehr als 50% der "Quell" -Diskette freien Speicherplatz in der
/
Partition haben. - Passen Sie die Größe der
/
Partition so an, dass beim Kopieren die Größe so geändert wird, dass sie in die gerade noch kleinere Größe der Zielfestplatte passt. - Stellen Sie nach erfolgreichem Kopieren jedes Volume bereit und korrigieren Sie Verweise auf statische IPs, um die IPs des neuen Servers wiederzugeben. (Kann das ohne weitere Hilfe ganz gut machen)
Meine Fragen:
- Sollte ich zuerst die Differenz (in Bytes) zwischen der Größe
/dev/sda
jedes Servers berechnen und dann verwendene2resize
, um die Größe der/
Partition auf der Quellseite zerstörungsfrei zu reduzieren , damit sie in den Bereich der Zielseite passt? - Sollte ich
dd
auf dem Raw-Block-Gerät/dev/sda
von der Quelle bis zum Ziel (überssh
) ausgeführt werden oder sollte ich ein gleichwertiges Partitionslayout auf dem Ziel erstellen unddd
auf jeder Partition ausführen ? Beachten Sie, dass beim gleichzeitigen Behandeln einer Partition das Problem des Bootloaders auftritt. Wenn ich jedoch keine Partition gleichzeitig ausführe, muss ichdd
wissen, dass die Datenübertragung beendet werden muss, sobald so viele Bytes geschrieben wurden, wie das Ziel aufnehmen kann (wodurch hoffentlich das Ende der/
Partition im letzten Block "geschlossen" wird , was logischerweise "rechts von" allen anderen Partitionen im Partitionslayout der Quelle liegt).
Ein paar verschiedene. Besonderheiten:
- Das Host-Betriebssystem auf der Quellbox ist Ubuntu Server 12.04, auf dem mehrere OpenVZ-Gäste ausgeführt werden
- Da beide Boxen zur Rettung gestartet werden, ist ein direkter Festplattenzugriff möglich, ohne dass das laufende Betriebssystem Änderungen an den zugrunde liegenden Daten erwartet.