Wie kann ich die Größe der ext4-Partition unter Debian erweitern?

26

Ich habe ein Laufwerk mit dieser Konfiguration:

fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000f1b8b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2612    20971520   83  Linux
/dev/sda3           60736       60801      525312   82  Linux swap / Solaris

Es sind 478 GB nicht zugewiesener Speicherplatz vorhanden. Wie füge ich diesen Speicherplatz zu / dev / sda1 hinzu, ohne die Daten zu verlieren, die sich derzeit auf / dev / sda1 befinden? (das Dateisystem ist ext4).

HINWEIS: Es handelt sich um einen Server mit nur SSH, keine GUI zum Ausführen von Dingen wie gparted.

Seb
quelle
Ich kann den Server netbooten und ihn verwenden, während das Laufwerk nicht gemountet ist.
Seb
Dieser spezielle Punkt wurde innerhalb der SE-Standorte bereits mehrmals behandelt. Es ist am besten, vor dem Posten einer Frage ein wenig mehr Nachforschungen anzustellen.
mdpc
Siehe auch askubuntu.com/a/937351/621883, insbesondere die Antwort mit growpart und resize2fs war für mich nützlich.
klor

Antworten:

38

Vergrößern Sie die Partition: fdisk -u /dev/sda.

p Um die Partitionstabelle auszudrucken, notieren Sie sich die Nummer, den Anfang, das Ende und den Typ von sda1.

Löschen Sie es d:

Erstellen Sie es mit der gleichen Nummer (1) neu, beginnen Sie und tippen Sie es mit einem größeren Ende (achten Sie darauf, dass es sich nicht mit anderen Partitionen überschneidet). Versuchen Sie, die Objekte an einer Megabyte-Grenze auszurichten, die für end vorgesehen ist , und geben Sie ein Vielfaches von 2048 minus 1 an. Ändern Sie bei Bedarf den Typ mit t(für Partitionen mit einem extXoder einem btrfsDateisystem ist der Standardwert in 83Ordnung).

Dann wschreiben und qaufhören.

Die Partitionstabelle wurde geändert, der Kernel kann dies jedoch nicht berücksichtigen, da einige Partitionen gemountet sind.

Wenn jedoch in Verwendung befindliche Partitionen nur vergrößert werden, sollten Sie den Kernel zwingen können, das neue Layout zu übernehmen:

partx /dev/sda

Wenn dies fehlschlägt, müssen Sie neu starten. Das System sollte gut booten.

Ändern Sie dann die Größe des Dateisystems, damit es sich auf die Größe der vergrößerten Partition ausbreitet:

resize2fs /dev/sda1

Was für ext4wird auch auf einem Live-FS gut funktionieren.

Stéphane Chazelas
quelle
Ich weiß, dass dies alt ist, aber werden dadurch die Daten beibehalten, wenn Sie die Partition löschen?
Kanadier Luke REINSTATE MONICA
3
@CanadianLuke, ja, das Löschen der Partition in fdisk ändert nur die Partitionstabelle. Wenn Sie es in der gleichen Größe neu erstellen, ändert sich nichts. Die Daten werden nur geändert, wenn Sie eine Partition verkleinern und eine andere logische oder erweiterte Partition in der Mitte der Partition erstellen. In diesem Fall wird der Partitionsdatensatz für diese erweiterte / logische Partition über einige Daten dort geschrieben.
Stéphane Chazelas
Dies funktioniert auch hervorragend für ntfs-Partitionen (mit einem vorhandenen Volume, mit Daten).
Kenny Evitt
Das klingt vernünftig, aber was ist, wenn ich Extended, Linux LVM und Linux Swap / Solaris-Partitionen habe, die am Ende der Linux-Partition beginnen? Soll ich diese Partitionen löschen? Ich mache mir Sorgen, dass in diesem Fall das Dateisystem nicht startet, da Linux LVM möglicherweise am selben Anfang und Ende verwendet wird. Und ich möchte auch keine Daten verlieren.
Cyan
@cyan Ändern der Größe eines logischen LVM-Volumes mit ext4 FS oder Ändern der Größe einer Partition, die als physisches Volume für LVM verwendet wird, sind unterschiedliche Fragen mit unterschiedlichen Verfahren.
Stéphane Chazelas
7

Sie können dies nicht sicher tun, während die Partition gemountet ist. Dies bedeutet, dass Sie eine andere Partition booten und von dort aus ausführen müssen.

gpartedist eine nette, einfache GUI für diesen Zweck. In unserem gelöschten Kommentaraustausch, den Sie erwähnt haben, würde er nicht starten, weil "nicht auf die Anzeige zugreifen kann" - dies impliziert, dass Sie nicht in X sind. da es eine GUI ist, wird es ohne das nicht funktionieren.

Wenn Sie keine andere Partition verwenden möchten , benötigen Sie natürlich eine Live-CD oder ähnliches - ich denke, sie werden normalerweise mit gparted geliefert. Ihre beste Wette ist wahrscheinlich die aktuelle gparted Live-CD , die eine einigermaßen aktuelle stabile Version zu haben scheint (und auf eine CD passt , was gut ist, da die "Live-CD" schnell zur "Live-DVD" wird).

Ich habe noch nie ein Problem verursacht, aber natürlich stelle zuerst dein wichtiges Problem wieder her.

Goldlöckchen
quelle
Ich kann gparted nicht verwenden, da ich nur SSH-Zugriff habe (es ist ein Headless-Server). Ich kann die Festplatte aushängen, da das System nicht auf / dev / sda läuft.
Seb
1
Wenn Sie keinen physischen Zugriff auf das System haben , tun und kann somit nicht sinnvoll aushängen und die Partition ändern, ich glaube , Sie Glück sind out, oder zumindest in sehr lückenhaft Gebiet - zum Beispiel könnten Sie versuchen , zu verwenden , fdiskwährend montiert, Wählen Sie (x) pert, (c) ändern Sie die Anzahl der Zylinder. Aber ich habe das nicht getan und würde es nur tun, wenn es absolut keine andere Wahl gäbe.
Goldlöckchen
Ich habe gerade gesagt, dass ich die Partition aushängen kann. Ich kann sogar den gesamten Server netbooten und von einem anderen Server aus zugreifen, was wie die Verwendung einer Live-CD wäre (nur ohne GUI).
Seb
@ Seb: meine schlechte, sorry.
Goldlöckchen
2

Ich weiß, dass dies ein sehr altes Problem ist, aber viele Menschen suchen nach dieser Lösung.

Für dieses Beispiel haben Sie die folgende typische Situation. Am Anfang befindet sich eine einzelne Partition, und am Ende befindet sich eine Auslagerungspartition. es ist nicht gut, weil Swap stark belastet sein kann und das Ende der gedrehten Festplatte der langsamste Teil davon ist. was ich vorschlage

  1. Erstellen Sie zu Beginn eine Startpartition. Warum am Anfang? Viele Tools haben Probleme mit dem Ende einer großen Festplatte über 2 TB. Nach dem Booten Partition sollte Swap-Partition sein. Dies ist für die Leistung. Der Rest der Festplatte sollte für andere Partitionen verwendet werden.

Aber was ist mit dieser Situation? Ich empfehle nicht, sda1 zu erweitern. Ich schlage vor, andere Partitionen nach sda1 & sda2 zu erstellen, gemountet als /homeund /usr. In diesen Verzeichnissen werden die meisten Benutzer- und Systemdaten gespeichert, und es ist möglich, Daten sicher von diesen Verzeichnissen auf neue Partitionen zu verschieben.

  1. Aber. (zweites "aber") Wenn Sie weiterhin Ihre aktuelle Struktur beibehalten möchten, sollten Sie zuerst die Swap-Partition entfernen. Sie sollten tauschen, bemerken Sie dies in /etc/fstab. Wenn swapon mitteilt (siehe man), dass kein Swap verwendet wird, können Sie ihn mit dem Partitionstool (fdisk oder ähnlichem) entfernen.

    Wenn Sie diese Partition nicht haben, können Sie Ihre sda1 vergrößern. Mit fdisksollten Sie zunächst Partition drucken. Es ist zum Erinnern, wo es beginnt. Zweitens entfernen Sie die Partition mit der Taste 'd'. Keine Panik, nichts wird auf die Festplatte geschrieben :). Nach dem Ausdruck ist keine Partition auf der Festplatte vorhanden.

    Als nächstes erstellen Sie eine neue Partition, aber seien Sie vorsichtig. Sehen Sie, auf welchem ​​Sektor die ursprüngliche Partition gestartet wurde. Schreiben Sie die gleiche Nummer. Danach schauen Sie sich das Ende an. fdiskfordert Sie zur Eingabe des letzten verfügbaren Sektors auf. Verwenden Sie den Taschenrechner, und geben Sie in Ihrem Kopf an, wie viel Swap in Kilobyte benötigt wird. Multiplizieren Sie es mit 2 und subtrahieren Sie diese Nummer von der letzten von fdisk angegebenen Sektornummer. Partition erstellen. Drucken Sie dies aus (es befindet sich immer noch im temporären fdisk-Speicher), und sehen Sie, dass alles in Ordnung ist.

    Nach dem Drücken der Taste 'w' wird eine neue Partitionierung auf das Laufwerk geschrieben. Sie sehen, dass alle Informationen synchronisiert wurden oder die Synchronisierung fehlgeschlagen ist. Wenn dies fehlschlägt, können Sie den Befehl partx / dev / sda aufrufen, um die Synchronisierung durchzuführen. Wenn dies weiterhin fehlschlägt, sollten Sie Ihr System neu starten. Nach dem Neustart haben Sie eine größere Partition vorbereitet, das darauf befindliche Dateisystem ist jedoch immer noch kleiner. Du solltest es anbauen. EXT4 ist on the fly anbaubar :), benutze resize2fs /dev/sda1es dafür.

    Sie müssen keinen Neustart durchführen usw. Zuletzt sollten Sie die Swap-Partition wiederherstellen. Benutze einfach wieder fdisk und erstelle eine neue Partition als Swap. Nach dem Schreiben von 'w' wird das Gerät sda2 wiederhergestellt. Bereiten Sie die Swap-Struktur mit vor mkswap /dev/sda2, entfernen Sie die Bemerkungen zum Swap-On /etc/fstabund machen Sie es schließlich swapon -a. Schauen Sie mit Swapon oder Top-Befehl, Swap ist aktiviert.

Ich weiß, das ist eine sehr lange Erklärung. Ich hoffe, es wird für jeden verwendbar sein. Beachten Sie, meiner Meinung nach ist das xfs-Dateisystem viel besser. Leider unterstützt dieses Dateisystem das Verkleinern nicht, ohne vorübergehend an einen anderen Ort zu kopieren, aber das Verkleinern wird selten verwendet. Es ist schön, xfs nimmt für seine eigenen Metadaten nur sehr wenig Platz ein und ist in vielerlei Hinsicht schneller als ext4.

Ein weiterer Hinweis: Verwenden Sie zum Partitionieren besser LVM als mittlere Ebene. Danach ist jede Größenänderung viel einfacher. Die Leistung ist vergleichbar, natürlich können Sie eine Mischung aus Festplattenmanagement verwenden. Sie können in gemeinsamen Raw-Partitionen und LVM verwenden.

Znik
quelle
Vielen Dank an slm für nette Sprachkorrekturen: D
Znik