So ändern / vergrößern / vergrößern Sie eine Nicht-LVM-ext4-Partition

20

Ich habe bereits im Forum gesucht, konnte aber keine passende Antwort finden:

Ich habe einen Ubuntu Server 10.04 als KVM Host und ein Gastsystem, auf dem auch 10.04 läuft. Das Hostsystem verwendet LVM und es gibt drei logische Volumes, die dem Gast als virtuelle Blockgeräte zur Verfügung gestellt werden - eines für /, eines für / home und eines für Swap. Der Gast war ohne LVM aufgeteilt worden.

Ich habe das logische Volume im Hostsystem bereits vergrößert - der Gast erkennt die größere virtuelle Festplatte erfolgreich. Diese virtuelle Festplatte enthält jedoch eine "gute alte" Partition, die immer noch die alte geringe Größe hat.

Die Ausgabe von fdisk -l ist

me@produktion:/$ LC_ALL=en_US sudo fdisk -l

Disk /dev/vda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ce7

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        3917    31455232   83  Linux

Disk /dev/vdb: 2147 MB, 2147483648 bytes
244 heads, 47 sectors/track, 365 cylinders
Units = cylinders of 11468 * 512 = 5871616 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2bf7

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         366     2095104   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 43, 28)
Partition 1 has different physical/logical endings:
     phys=(260, 243, 47) logical=(365, 136, 44)

Disk /dev/vdc: 225.5 GB, 225485783040 bytes
255 heads, 63 sectors/track, 27413 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027f25

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        9138    73398272   83  Linux

Die Ausgabe von Parted Print All ist

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4         boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2146MB  2145MB  primary  linux-swap(v1)


Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

Ich möchte erreichen, dass die Partition / dev / vdc1 einfach vergrößert oder verkleinert wird, sodass der gesamte vom virtuellen Blockgerät / dev / vdc zur Verfügung gestellte Speicherplatz genutzt wird. Das Problem ist, dass, wenn ich das mit trennte zu tun versuche, es sich beschwert:

(parted) select /dev/vdc                                                  
Using /dev/vdc
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

(parted) resize 1                                                         
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start?  [1049kB]?                                                         
End?  [75.2GB]? 224GB                                                     
Error: File system has an incompatible feature enabled.  Compatible features are has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs
or debugfs to remove features.

Was kann ich also tun? Dies ist ein kopfloses Produktionssystem. Was ist ein sicherer Weg, um diese Partition zu vergrößern? Ich kann es jedoch nicht aushängen - das ist also nicht das Problem.

Edit: Cfdisk zeigte einen kleinen freien Speicherplatz unpartitioniert, dann die Partition (gekennzeichnet als "boot" und Linux / ext3) und dann den Rest des unpartitionierten Speicherplatzes. Nach dem Löschen der Partition und dem erneuten Erstellen mit cfdisk - cfdisk zeigt einen großen partitionierten Bereich (was für mich in Ordnung wäre) und als Dateisystem nur "Linux" an.

Resize2fs gibt diesen Fehler zurück resize2fs 1.41.11 (14-Mar-2010) resize2fs: Bad magic number in super-block while trying to open /dev/vdc1 Couldn't find valid filesystem superblock

Mischa
quelle

Antworten:

18

Auf dieser Seite wird angegeben, wie Sie die Bereitstellung aufheben, löschen, die Partition mit der gewünschten Größe neu erstellen und die Partition mit resize2fs erweitern können. Die resize2fs Manpage stimmt zu.

Ich weiß, dass "Partition löschen" beängstigend klingt, aber es ändert die Daten überhaupt nicht. Es ändert nur das, was auf den Container verweist. Solange du es nicht tust mkfs.ext4, solltest du in Ordnung sein.

Der Startpunkt Ihrer Partition muss derselbe sein, ansonsten kann das Betriebssystem nicht interpretieren, was dahinter steckt. Der Endpunkt kann dann weiter entfernt sein, um eine größere Partition zu erstellen.

Ich denke, der Fehler im Kommentar hängt mit dem Verschieben des Startpunkts zusammen. Sie müssen es genau an dem Punkt starten, an dem es gestartet wurde. Der Endpunkt kann sich bewegen.

Kredit psusi für das Vorschlagen fdisk statt cfdisk und bestätigt den Startpunkt Ausgabe.

RobotHumans
quelle
Okay, ich habe die Partition mit cfdisk gelöscht und eine neue erstellt. Aber dann konnte ich die Größe nicht mehr ändern und kann es auch nicht mehr mounten.
Mischa
resize2fs 1.41.11 (14-Mar-2010) resize2fs: Ungültige magische Zahl im Superblock beim Versuch, / dev / vdc1 zu öffnen. Es wurde kein gültiger Superblock für das Dateisystem gefunden.
Mischa
1
Tatsächlich zeigte cfdisk einen kleinen freien, nicht partitionierten Speicherplatz, dann die Partition (gekennzeichnet als "boot" und Linux / ext3) und dann den Rest des nicht partitionierten Speicherplatzes. Nach dem Löschen der Partition und dem erneuten Erstellen mit cfdisk - cfdisk zeigt einen großen partitionierten Bereich (was für mich in Ordnung wäre) und als Dateisystem nur "Linux" an.
Mischa
8
Sie müssen die Partition neu erstellen, damit sie genau auf dem Sektor startet, den sie ursprünglich ausgeführt hat. Mit cfdisk ist das nicht möglich. Verwenden Sie fdisk oder parted und versetzen Sie sie in den Sektor-Modus.
Psusi
1
Gibt es eine Möglichkeit, die Größe der ext4-Partition so zu ändern, dass der Start der Partition verschoben wird? Da ich freien Speicherplatz vor der aktuellen ext4-Partition habe, nicht auf der Rückseite ... Zum Glück habe ich mehr freien Speicherplatz als die Partition groß ist, könnte ich also Folgendes tun: Entfernen Sie die Rückseite, und ändern Sie die Größe der verschobenen auf die gesamte Größe? aber das scheint mir im moment ein schrecklicher hack zu sein ...
codeling
6

Ein Beispiel:

/ dev / sdb2 ist die / boot-Partition. Es ist 100 MB, was ziemlich klein ist. Um diese ext4-Partition auf einem laufenden System zu vergrößern, gehen Sie wie folgt vor (als root oder sudo):

umount / boot

getrennt / dev / sdb

(geteilter) Druck

Modell: ATA Patriot Torqx 2 (scsi)
Festplatte / dev / sdb: 32,0 GB Sektorgröße
(logisch / physisch): 512B / 512B
Partitionstabelle: msdos

Anzahl Anfang Ende Größe Typ Dateisystem Flags
1 1049 KB 12,9 GB 12,9 GB primärer Typ = 83
2 12,9 GB 13,0 GB 107 MB primärer ext4-Typ = 83

(getrennt) rm 2

(getrennt) mkpart

Partitionstyp? primär / erweitert? primärer
Dateisystemtyp? [ext2]?
Start? 12,9 GB
Ende? 13,4 GB

(getrennt) aufhören

resize2fs / dev / sdb2

resize2fs 1.42.6 (21. September 2012) Das
Dateisystem unter / dev / sdb2 ist unter / boot gemountet. Online-Größenänderung erforderlich
old_desc_blocks = 1, new_desc_blocks = 2
Das Dateisystem in / dev / sdb2 ist jetzt 498688 Blöcke lang.

getan!

Alle Daten bleiben erhalten. / boot ist einsatzbereit und 472 MB groß (trennte sich nicht so sicher mit den Größen, lesen Sie das Handbuch, um zu wissen, warum)

Alle Daten wurden zuvor nur vorsorglich gesichert. Ich empfehle dasselbe zu tun.

Verwenden Sie den folgenden Befehl, um den Prozess zu finden, der das Abmelden von / boot stoppt, wenn dies fehlschlägt:

lsof / boot

Viel Glück!

user157258
quelle
2
Sie müssen Einheiten von Sektoren verwenden, nicht GB, um sicherzustellen, dass Sie sie genau an derselben Stelle erhalten.
Psusi
0

Wenn Sie versuchen, eine Partition zu löschen und neu zu erstellen, könnte es sein, dass Sie beim Start Ihrer Partition unter 2048 Probleme haben, mit denen ich zu tun hatte resize2fs.

Couldn't find valid filesystem superblock.

Ab der fdisk-Version 2.17.2 werden Sie von fdisk IIUC gezwungen , ab 2048 zu beginnen, um sicherzustellen, dass Ihre Festplatte "richtig ausgerichtet" ist. Wenn also Ihre ursprüngliche Partition vor 2048 gestartet wurde, steht Ihnen eine holprige Fahrt bevor, um die Partition neu zu erstellen.

Der beste Ansatz ist, rsync beim Klonen einer Festplatte auszuführen .

Hendry
quelle