Wie kann ich die Größe von Partitionen mithilfe der Befehlszeile ändern, ohne eine GUI auf einem Server zu verwenden?


45

Ich habe nur über ein Terminal Zugriff auf den Server und kann keine grafischen Tools wie GParted verwenden!
Ich möchte eine neue Partition aus einem Teil des Stammverzeichnisses (ca. 768 MB) für Swap erstellen.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock

Antworten:


37

Sie können eine Partition nicht verkleinern / bearbeiten, wenn eine der Partitionen auf dem Speichergerät aktiviert ist. Um das Root-Dateisystem abzuhängen und zu bearbeiten, muss das Betriebssystem heruntergefahren werden. Starten Sie dann ein Live-System und bearbeiten Sie die Partition wie in den anderen Antworten beschrieben.

Alternative Lösung: Auslagerungsdatei

Als Alternative zum Erstellen einer vollständigen Partition bietet eine Auslagerungsdatei die Möglichkeit, ihre Größe im laufenden Betrieb zu ändern , und kann insgesamt leichter entfernt werden. Swap-Datei kann Hot-Plug-fähig sein . Das heißt, es kann hinzugefügt und entfernt werden, ohne dass das Betriebssystem abgemeldet oder ausgeschaltet werden muss.

  1. Erstellen Sie eine 512-MB-Datei mit dem Namen /swapfile. Dies wird unsere Auslagerungsdatei sein.

    fallocate -l 512M /swapfile  
    

    ODER

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Legen Sie die richtigen Berechtigungen fest (da es sich bei einer weltweit lesbaren Auslagerungsdatei um eine große lokale Sicherheitsanfälligkeit handelt):

    chmod 600 /swapfile
    
  3. Formatieren Sie die Datei nach dem Erstellen der richtigen Größe zum Auslagern:

    mkswap /swapfile
    
  4. Aktivieren Sie die Auslagerungsdatei:

    swapon /swapfile
    
  5. Bearbeiten /etc/fstabund fügen Sie einen Eintrag für die Auslagerungsdatei hinzu:

    /swapfile none swap defaults 0 0
    

Weitere Informationen finden Sie im Arch Linux Wiki .


Ich denke das ist die einfachste und effizienteste Antwort =)! Gibt es Auswirkungen auf die Verwendung einer Datei anstelle einer Partition?
Alaa Ali

2
Geringe Leistung, wenn die Datei fragmentiert ist. Es gibt keinen Leistungsvorteil für eine zusammenhängende Auslagerungsdatei oder eine Partition. Beide werden gleich behandelt.
Totti

1
Ich denke, das ist die beste Lösung. Da Sie Partitionen (Tabellen) nicht formatieren, verkleinern oder auf andere Weise ändern, besteht keine Gefahr des Datenverlusts.
R110,

28

Zuallererst ist es wichtig zu wissen, dass Sie die Größe nicht ändern können, um Ihre Stammpartition zu verkleinern, wenn Sie sie verwenden (dies wird als Online-Verkleinerung bezeichnet). Sie können es nur online anbauen. Dies wird vom resize2fsBefehl unterstützt. Ich werde folgendes annehmen:

  • Sie möchten Ihre Informationen auf der Root-Partition nicht verlieren.
  • Sie haben keinen physischen Zugriff auf die Festplatte, um eine Live-CD zu verwenden. Dies kann für eine virtuelle oder eine entfernte Umgebung gelten. Bei einem virtuellen System können Sie weiterhin von einer LiveCD booten, wenn Sie die VM so einstellen, dass sie von einer LiveCD bootet. Dies setzt voraus, dass die VM die Ausgabe der Desktop-GUI von einem Ort aus unterstützt, an dem Sie die Gparted-App ausführen würden, um die Größe einfach zu ändern. Aber da dies weniger wahrscheinlich ist, gehe ich davon aus, dass Sie dies nicht können.

Es gibt zwei Arten von Partitionen, deren Größe Sie ändern können, die LVM-Partitionen oder die Logical Volume Manager-Partitionen, die die Online-Größenänderung (Verkleinerung / Vergrößerung) seit der Erstellung der Galaxie unterstützen, und die Standardpartitionen, die die meisten von uns verwenden. Derzeit ist das btrfs-Dateisystem (das sich noch in der Entwicklung befindet) das einzige, das eine vollständige Online-Größenänderung (Shrink / Grow) zu fast 100% unterstützt. Ich werde erklären, wie man die normalen Partitionen macht, die die meisten von uns im ext4-Dateisystem verwenden.

Ändern der Größe (Vergrößerung) der Partition

Um Ihre Partition zu vergrößern, können Sie dies mit dem gemounteten Root tun. Um dies zu tun, machen Sie einfach:

sudo resize2fs /dev/sda1

Vorausgesetzt, Sie haben bereits den leeren Platz zum Zusammenführen bereit. Danach empfehle ich einen Neustart, damit die Änderungen korrekt wirksam werden. Der obige Befehl würde die Größe auf das maximal zulässige Maß ändern. Wenn Sie die Größe auf eine bestimmte Größe ändern möchten, fügen Sie einfach die Größe am Ende hinzu:

sudo resize2fs /dev/sda1 25G

Beachten Sie, dass Sie das "." Nicht verwenden können, wenn Sie 25,4 GB angeben möchten. Sie müssten eine Maßeinheit nach unten gehen. In diesem Fall von GB nach MB, so würde es so aussehen:

sudo resize2fs /dev/sda1 25400M

Auf diese Weise haben Sie eine Partition von 25,4G

Ändern der Größe (Verkleinern) der Partition

Das Verkleinern der Partition erfolgt in zwei Schritten:

  • Reduzieren Sie die Größe des Dateisystems um den erforderlichen Betrag.
  • Reduzieren der Größe des zugrunde liegenden Blockgeräts auf die Größe des Dateisystems.

Bevor Sie die Kapazität eines Dateisystems reduzieren können, müssen Sie die Größe des Blockgeräts (das eine Partition oder ein logisches Volume sein kann) reduzieren. Da dies für keines der ext * -Dateisysteme verfügbar ist, können Sie es nicht von 20 GB auf 19,5 GB verkleinern, um das 500-MB-Swap-Dateisystem zu erstellen.

Auch Ext4 unterstützt das Online-Verkleinern nicht. Wenn Sie es versuchen, erhalten Sie Folgendes:

Bildbeschreibung hier eingeben

Ihre einzige Wette, soweit ich weiß, ist entweder:

  • Installieren Sie eine andere Ubuntu-Version auf demselben Server (auf einer anderen Partition), mit der Sie die Root-Partition des ursprünglichen Ubuntu-Servers verkleinern können.

  • Installieren Sie den Ubuntu-Server von Grund auf neu mit der tatsächlich gewünschten Größe

  • Verwenden Sie das Ubuntu Server Live Image, um die Größe der Partition zu ändern. In diesem Fall müssen Sie zu diesem Bildschirm gelangen:

    Bildbeschreibung hier eingeben

    Und wählen Sie die Option Größe ändern, wie im Bild oben gezeigt. Von dort aus wählen Sie die neue Größe aus, da Sie von hier aus die Einheit aushängen und verkleinern können, wenn Sie möchten.

Als zusätzliche Hilfe dient hier der gparted-Dateisystem-Suppor http://gparted.org/features.php, der eine sehr detaillierte Liste der unterstützten Dateien enthält und angibt, ob die Größe vollständig online geändert werden kann. Btrfs ist unter ihnen.


Ich bin gespannt, gibt es andere Dateisysteme, die das Online-Verkleinern unterstützen? zfs oder btrfs vielleicht?
Seth

Ich habe unten einen Link hinzugefügt. Der Kernel muss dies auch unterstützen, wenn die Größe des Dateisystems online korrekt geändert werden soll.
Luis Alvarado

Ich habe Ubuntu-Server auf VMware-Maschine und seine Festplattengröße ist 120G. Aber nach der ersten Lösung bekomme ich diesen Fehler: Das Dateisystem ist schon 27262720 Blöcke lang. Nichts zu tun!
Dr.jacky

1
Vielen Dank an Mr.Hyde. Es gab mehrere Probleme mit Workstation 10 und sogar 11. Ich würde 12 empfehlen und für Ubuntu würde ich auch entweder auf die neueste oder die neue LTS aktualisieren, da es auch einige Probleme gab. In meinem Fall habe ich VMware Workstation 12.0.1 und Ubuntu 15.10 64 Bit.
Luis Alvarado

3
Aus der resize2fs-Manpage:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow

6

Die Antwort hängt davon ab, ob Sie die zu verkleinernde Partition entfernen können oder nicht. In Ihrem Fall können Sie die Partition wahrscheinlich nicht aushängen. Unter Linux (UNIX / MAC OS) bezieht sich das Mounten einer Partition auf die Verwendung des Dateisystems und die Zuordnung zum Mount-Punkt (in Ihrem Fall /). Das Aufheben der Bereitstellung bedeutet, dass Sie das Dateisystem nicht mehr verwenden und die Zuordnung zum Bereitstellungspunkt entfernen. Sie können das Dateisystem mit Ihrem Betriebssystem nicht aushängen.

Wenn die Partition nicht gemountet werden kann

Nehmen wir an, Sie möchten eine 200-GB-ext4-Partition verkleinern, auf die /dev/sda4gemountet wurde /data. Es enthält derzeit Musik und Filme oder ähnliches, sodass Sie es vorübergehend aushängen können. Sie möchten einen 4-GB-Swap erstellen.

sudo umount /dev/sda4

um die Partition abzuhängen.

sudo resize2fs /dev/sda4 196G

Ändern der Größe des ext4-Dateisystems auf 196 GB, vorausgesetzt, es ist genügend Speicherplatz vorhanden. Jetzt müssen Sie die Partition verkleinern. Ich bin derzeit der Meinung, dass Sie verwenden müssen, cfdiskum die vorhandene Partition zu löschen und eine kleinere Partition an ihrer Stelle neu zu erstellen. Sie können dann auch eine neue Partition für den Swap erstellen.

sudo cfdisk /dev/sda 

Sie erhalten eine textbasierte Benutzeroberfläche, mit der Sie Ihre Partitionstabelle überprüfen können. Ich würde Ihnen empfehlen, printdie Partitionstabelle an dieser Stelle auf eine Datei oder einen Bildschirm zu legen und die aktuelle Konfiguration als Backup zu notieren. Sie können dann /dev/sda4und deletedie Partition auswählen . An seiner Stelle free spacewird angezeigt. Verwenden Sie newdiese Option , um eine neue Partition mit 196 GB an deren Stelle zu erstellen, und legen Sie den Typ auf ext4 fest. Wechseln Sie dann zum nachfolgenden freien Speicherplatz, und erstellen Sie die 4-GB-Swap-Partition mit Typ swap. Hinweis: Ich habe diese Befehle nicht getestet, da ich /momentan nicht mit meinen herumspielen kann.

Wenn die Partition nicht abgehängt werden kann

Sie können eine gemountete ext3 / 4-Partition nicht verkleinern (siehe Manpage von resize2fs). Während Sie Ihr Betriebssystem /ausführen, können Sie die Bereitstellung nicht aufheben /. Das heißt, Sie müssen ein anderes Betriebssystem booten (z. B. von einem USB-Stick), um die Änderungen vorzunehmen.

In Ihrem Fall handelt es sich wahrscheinlich um einen Remote-Server (auf KVM), sodass Sie möglicherweise nicht über USB / ein Live-Betriebssystem-Image booten können. Es gibt möglicherweise andere Möglichkeiten, die Partitionierung Ihres vServer-Providers über eine Administrator-GUI zu ändern. Ich glaube, das ist derzeit die beste Wahl.

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.