Laufwerk meldet falschen freien Speicherplatz

7

Also habe ich meine glänzende SATA-SSD gegen eine noch glänzendere PCI-E-SSD ausgetauscht. Ich starte mein Kernbetriebssystem auf der SSD, weil es albern schnell ist. Ich habe dies auf meiner alten SSD getan, also habe ich eine neue EXT4-Partition erstellt und dann nur dddie Daten bearbeitet (sorry, ich kenne den genauen Befehl, den ich ausgeführt habe, nicht mehr) und nach der Neuinstallation von grub habe ich auf der PCI-E-SSD gebootet. Auf den ersten Blick hatte alles perfekt funktioniert und die Dinge liefen schneller als je zuvor.

Aber dann bemerkte ich den freien Speicherplatz auf dem neuen, größeren Laufwerk: Es war fast genau das gleiche wie auf der anderen Festplatte ... Eine Festplatte, die halb so groß war.

Es sieht also so aus, als hätte ich die Dateien falsch kopiert und einige der Metadaten des Dateisystems zusammen damit kopiert.

Tools wie duund Disk Usage Analyzer liefern die richtigen Zahlen. Dinge, die sich mit der Partition (und nicht mit den Dateien) befassen, scheinen zu glauben, dass das Laufwerk 120 GB groß ist

Ich benutze dieses Laufwerk jetzt seit einer Woche, daher ist es nicht mehr mit der alten SSD synchronisiert. Das Speichern der Daten und das erneute Starten ist also kein Job, der mich mit Freude erfüllt, sondern zwei Fragen:

  1. Gibt es eine Möglichkeit, mein Dateisystem zu reparieren, damit es weiß, worum es wirklich geht? fsck e2fsckund badblocksalle scheinen in der Lage zu sein, es zu scannen, ohne ein Problem damit zu finden.

  2. Wenn ich meine alte SSD wieder einstecke, die Daten von meiner PCI-E darauf kopiere und sie dann wieder in ein neues Dateisystem kopiere (z. B. die Daten herum jonglieren), wie geht das am besten? Ich möchte natürlich alle Berechtigungen und Softlinks dort behalten, wo sie sind.

Oli
quelle

Antworten:

4

Das von Ihnen verwendete Tool ddist kein Dateikopierwerkzeug, sondern ein Datenträgerkopierwerkzeug und kopiert Byte für Byte. Dies bedeutet, dass alle Informationen, einschließlich Metadaten zum Speicherplatz in der Partition auf dem Laufwerk, kopiert wurden.

Sie müssen eine vollständige Sicherung Ihrer Dateien durchführen, das Laufwerk formatieren (einschließlich eines vollständigen Paritionsformats), eine neue ext4-Root-Parition erstellen und das Laufwerk austauschen und dann die Dateien kopieren.

Nachdem Sie die Dateien kopiert haben, müssen chrootSie auf das neue System wechseln und den update-grubBefehl ausführen , um das Startsystem auf dem neuen Laufwerk zu installieren.

Oder Sie können einfach eine Neuinstallation von Ubuntu ausführen und Ihre Dateien zurücksetzen.


Was Oli getan hat, um das zu beheben

  1. Auf einer LiveCD gestartet und "Ubuntu testen" ausgewählt
  2. Montierte meine SSD und auch eine andere Festplatte (zum Kopieren)
  3. Ran

    sudo rsync -ax /media/ssd /media/backup-drive/ssd-backup
    

    Dies dauert lange. Ich habe vor dem Kopieren etwas aufgeräumt, hatte aber immer noch 35 GB und während ich Schreibbursts von ~ 120 MB / s bekam, dauerte es eine Weile. rsync gibt Ihnen standardmäßig keine Ausgabe, aber Sie können hinzufügen, --progresswenn Sie eine perverse Menge an Details wünschen (obwohl es zu schnell ging, als dass ich es wirklich lesen könnte - und wahrscheinlich nur die Dinge verlangsamt).

  4. Ich habe versucht, das Laufwerk zu nuklearisieren, habe jedoch Probleme mit "Gerät beschäftigt" von palimpsest (Festplatten-Dienstprogramm) bekommen, also habe ich das Installationsprogramm ausgeführt! Im Installationsprogramm habe ich nur gesagt, dass es ein schönes Dateisystem mit dem gesamten SSD-Laufwerk erstellen soll, und es dann ausgeführt, killall ubiquitynachdem es mit dem Kopieren von Dateien begonnen hat.
  5. Dann habe ich alle Dateien, in die das Installationsprogramm kopiert hat, mit Atomwaffen versehen und dann die Sicherungsdateien zurückkopiert:

    sudo rm -rf /media/ssd/*
    sudo rsync -ax /media/backup-drive/ssd-backup /media/ssd
    
  6. Dann habe ich neu gestartet und festgestellt, dass sich meine UUID geändert hat (offensichtlich, wenn man darüber nachdenkt), sodass grub2 keine Ahnung hatte, wo ich booten sollte, und in die Luft gesprengt habe, also ging ich zurück zur LiveCD. Wenn Sie dies als Leitfaden befolgen, empfehle ich Ihnen, diesen Schritt zu überspringen;)
  7. Grub neu installieren! Ich folgte den Hilfedokumenten und folgte der Chroot-Option. Möglicherweise müssen Sie Ihre bearbeiten, /etc/fstabwährend Sie dort sind.
  8. Starten Sie neu und Sie sollten fertig sein. Ich bin zurück, ich habe eine metrische "Unmenge" an freiem Speicherplatz. Huzzah.
Martin Owens -doctormo-
quelle
Es gibt also keine Korrektur- oder Größenänderungsoperation, die ich ausführen kann? Keine Ursache. Okay, also zu Frage 2: Was ist der richtige / beste Weg, um Dateien aus einer Partition in eine andere zu kopieren?
Oli
Ich hatte rsyncohne Komprimierung rekursiv und mit der Fähigkeit verwendet, wiederherzustellen, wenn es fehlschlägt. Gutes Allround-Kopierwerkzeug.
Martin Owens -doctormo-
Es gibt eine Größenänderungsoperation. Schauen Sie sich die andere Antwort an oder suchen Sie nach "Partition ändern". Das erneute Kopieren ist übertrieben. Sie können dies tun, wenn beim Ändern der Größe etwas schief geht.
Bseibold
4

Eigentlich ist es OK für dddie gesamte Festplatte in eine andere. Dann müssen Sie jedoch die Größe der Partitionen ändern, um die neue, größere Festplatte zu füllen. Sie können das fantastische gpartedTool zur Festplattenpartitionierung verwenden, um dies zu tun. Sie haben auch ihre eigene LiveCD.

vadipp
quelle
4

Ich nehme an, Sie machen so etwas wie:

sudo dd if=/dev/sda98 of=/dev/sda99

Dabei hat / dev / sda98 eine Größe von 12 GB und / dev / sda99 eine Größe von 25 GB.

Offensichtlich sind diese Namen falsch, aber Sie bekommen die Idee.

Sie haben nicht nur die Daten, sondern das gesamte Dateisystem einschließlich aller Metadaten, die beschreiben, was frei ist und was verwendet wird, auf die neue Partition verschoben. Es hat viel freien Speicherplatz, aber dieser freie Speicherplatz wurde nicht in das Dateisystem von / dev / sda99 integriert, sodass er am Ende der Partition versteckt und völlig unbrauchbar ist.

Die Lösung besteht darin, die Größe des Dateisystems in der Partition zu ändern:

sudo resize2fs /dev/sda99

Es funktioniert auf EXT2-, EXT3- und EXT4-Dateisystemen.

Sie sollten zuerst ein Backup erstellen.

Dadurch wird das Dateisystem angewiesen, den gesamten verfügbaren Speicherplatz auf der Partition zu erweitern und den neuen Speicherplatz in die Metadaten des Dateisystems aufzunehmen, damit Dateien darin gespeichert werden können.

Sie können eine größere Partition nur dann auf eine kleinere Partition ddkopieren, wenn Sie sie anweisen, nur so viel mit dem Parameter count zu kopieren. ddKopiert Bit für Bit alles in der Quellpartition auf die Zielpartition. In diesem Fall wird versucht, den gesamten verborgenen / unsichtbaren Bereich zusammen mit dem ursprünglichen Inhalt auf die kleinere Partition zu kopieren. Es hat keine Ahnung oder kümmert sich nicht darum, was es kopiert - es muss überhaupt kein gültiges Dateisystem sein.

John S. Gruber
quelle
0

Ich hatte dieses Problem beim Ändern der Größe einer Linux EX2-Partition mit Paragon Partition Manager unter Windows. Zum Glück hatte ich zwei EX2-Linux-Partitionen mit jeweils Linux-Distributionen. Ich konnte die Linux-Partition booten, deren Größe nicht geändert wurde, und dann mit Gparted die Partition verkleinern und dann wieder erweitern, die dem Dateisystem den freien Speicherplatz nicht ordnungsgemäß zugewiesen hatte. Das hat perfekt funktioniert!

user215334
quelle