Umzug auf ein größeres Laufwerk unter Linux


7

Ich habe eine Linux-Box, die auf einem Nicht-Root-Volume-Laufwerk keinen Speicherplatz mehr hat. Was ist der beste Weg, um zu einem größeren Laufwerk zu wechseln?

Ich glaube, ich starte im Einzelbenutzermodus, formatiere, mounte das neue Laufwerk, führe einen magischen Kopierbefehl aus, der Links, Berechtigungen, Dateidaten und alles andere beibehält, hebe dann das alte Laufwerk auf, mounte das neue Laufwerk als alten Namen und starte neu.

Klingt das richtig? Vermisse ich etwas Vorschläge? Tipps? Weiß jemand, was der Befehl cp sein würde?

Dies ist eine Ubuntu-Maschine.

Antworten:


10

Wenn Sie Ihr aktuelles Layout angegeben haben (die Ausgabe von reicht aus fdisk -l, wenn Sie kein LVM verwenden, die Ausgabe von " fdisk -l", " pvdisplay -C", " vgdisplay -C" und " lvdisplay -C", wenn Sie LVM verwenden) und das Laufwerk / die Partition, die Sie erweitern möchten, Wir könnten eine genauere Antwort geben.

Angenommen, mit "Nicht-Root-Volume-Laufwerk" ist ein Laufwerk mit einer einzelnen Partition gemeint, das das Volume enthält, das Sie auf eine neue Festplatte erweitern möchten. Die alte Festplatte wird als SDB (und die Partition darauf SDB1) angezeigt, die vorhandene Partition ist ein ext2- oder ext3-Dateisystem, in dem sich die neue Festplatte befindet und als einzelnes Volume (z. B. sdc1) partitioniert ist und das Sie vollständig auf die neue Festplatte verschieben möchten, um die alte zu entfernen. Folgendes funktioniert:

  1. Sichern Sie die Daten für alle Fälle
  2. Beenden Sie alle Dienste und anderen Prozesse, die auf das Volume / dev / sdb1 zugreifen
  3. umount es
  4. dd if=/dev/sdb1 of=/dev/sdc1
  5. fsck /dev/sdc1 -C 0
  6. resize2fs /dev/sdc1 -p
  7. Passen Sie alle Zeiger auf das alte Gerät (dh in / etc / fstab) auf das neue an
  8. Dienste erneut einbinden und neu starten
  9. Entfernen Sie das alte Laufwerk beim nächsten Ausschalten der Maschine. Möglicherweise möchten Sie es eine Weile als Notfallsicherung aufbewahren, falls sich herausstellt, dass das neue Laufwerk ein Blindgänger ist

Bearbeiten: "-C 0" auf fsck und "-p" auf resize2fs weisen die jeweiligen Dienstprogramme an, Fortschrittsinformationen auszugeben, während sie ihre Arbeit erledigen. Der Größenänderungsvorgang sollte ziemlich schnell sein (normalerweise dauert es nur sehr lange, wenn ein Volume kleiner wird, da in diesem Fall mehr Daten verschoben werden müssen). Wenn Sie pv installiert haben, können Sie in Schritt 3 auch Fortschrittsinformationen erhalten, indem Sie den Aufruf von dd durch "pv / dev / sdb1> / dev / sdc1" ersetzen.

edit 2: Dies ist eine gute Option für ziemlich vollständige Volumes, da sie zunächst Block für Block kopiert werden und daher keine Laufwerksköpfe um die Dateisystemstrukturen kümmern müssen (so dass das Kopieren so schnell wie das langsamere von "the" erfolgt Geschwindigkeit, mit der das alte Laufwerk Massenlesen kann "und" die Geschwindigkeit, mit der das neue Laufwerk Massenlesen kann ") und es gibt keine Verwechslungen mit festen Verbindungen, Geräteknoten oder anderen speziellen Elementen im Dateisystem - für Volumes, die es sind Ziemlich leer finden Sie eine der cp / cpio-basierten Methoden viel schneller, da nicht alle leeren Blöcke von Festplatte zu Festplatte kopiert werden


4

Ich bevorzuge rsync für diese Art von Job, denn wenn irgendetwas den Kopiervorgang unterbricht, können Sie den rsync einfach erneut ausführen und er wird dort fortgesetzt, wo er aufgehört hat, nicht wieder am Anfang.

Sie können rsync auch ausführen, während das System normal ausgeführt wird (obwohl es langsamer ist, während rsync Dateien kopiert). Wenn Sie bereit sind, auf das neue Laufwerk umzuschalten, fahren Sie entweder alles herunter, was auf das alte Laufwerk geschrieben wird (einschließlich Benutzerprozess, Dämon, Cron-Jobs usw.), oder starten Sie den Einzelbenutzermodus neu und führen Sie den rsync erneut aus , um das neue Laufwerk mit allen Änderungen zu synchronisieren, die während der ersten Ausführung von rsync aufgetreten sind.

Prozess ist ungefähr:

  • Installieren Sie ein neues Laufwerk
  • Partitionieren und formatieren Sie es mit Ihrem bevorzugten Dateisystem
  • montieren Sie es
  • rsync alte fs zu neuen fs
  • Starten Sie im Einzelbenutzermodus neu
  • rsync wieder
  • Bearbeiten Sie / etc / fstab, um neue fs anstelle von alten zu mounten
  • Neustart erneut (oder Herunterfahren und Entfernen des alten Laufwerks zuerst)

Wenn dies in Zukunft wahrscheinlich erneut auftritt oder wenn Sie die Kapazität des alten und des neuen Laufwerks nutzen möchten, sollten Sie LVM für das neue Laufwerk verwenden. Synchronisieren Sie dann die Daten mit dem Laufwerk und bearbeiten Sie es fstab wie oben. Sobald das System auf der LVM-Volume-Gruppe ausgeführt wird, können Sie das alte Laufwerk (und / oder zusätzliche neue Laufwerke) zur Volume-Gruppe hinzufügen und die Größe der fs ändern.


1

Mein Lieblings-Dateisystem Copy-Fu:

(cd /src; tar cf - .) | (cd /dst; tar xpf -)

Ich bin allerdings gespannt, was andere vorschlagen. Da Sie das gesamte Dateisystem verschieben, gibt es wahrscheinlich bessere Möglichkeiten. Oh, befindet sich das ursprüngliche Dateisystem auf einem LVM-Volume?


Nein. sehr sehr alte Maschine
Stu

0

Ich war schon immer an cpio interessiert:

cd /src; find . -print | cpio -dpum /dst


0

Wenn es nicht das Stammverzeichnis ist und das Laufwerk ( /usr/sbin/lsof | grep '/path/to/mount/point) nicht verwendet wird, sollten Sie nicht im Einzelbenutzermodus booten müssen.

Ich würde es tun cp -a, wenn es nicht LVM ist. Aber wie ich mich erinnere, benötigt Ubuntu (zumindest Version 9) die alternative Installations-CD. Ich weiß nichts über andere Versionen.


0

Wenn Sie lvm haben, können Sie dies im laufenden Betrieb tun, ohne Dienste neu zu starten oder zu stoppen. Wenn Ihr System das Hot-Plug-In der Laufwerke unterstützt, können Sie die Laufwerke auch ersetzen. - Partitionieren Sie die neue Festplatte - pvcreate die neue Partition - pvcreate new_disk - Erweitern Sie Ihre Volume-Gruppe auf die neue Partition vgextend datavg new_disk - pvmove old_disk new_disk

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.