Datenträgergruppe hat keinen Speicherplatz mehr. Wie kann ich ihn zurückfordern?

Datenträgergruppe hat keinen Speicherplatz mehr. Wie kann ich ihn zurückfordern?

Lange Rede, kurzer Sinn: Es gibt eine SVN-VM (VMware-Server), die keinen Speicherplatz mehr hat. Ich kann nichts tun, weil sie sagt, dass kein Speicherplatz mehr vorhanden ist. Die VM hat ein angeschlossenes virtuelles Laufwerk mit 80 GB (hda), eine /boot-Partition und eine große VG (VolGroup00) für /

Ich archiviere und lösche alte SVN-Repos von der Festplatte, bekomme aber keinen freien Speicherplatz zurück. Was muss ich tun, um diesen Speicherplatz wieder nutzbar zu machen? Ich verwende Linux für fast alles, habe aber nie genug mit LVM herumgespielt, um zu wissen, was los ist.

vgdisplay-Ausgabe:

--- Volume group ---
VG Name               VolGroup00
System ID             
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               74.41 GB
PE Size               32.00 MB
Total PE              2381
Alloc PE / Size       2380 / 74.38 GB
Free  PE / Size       1 / 32.00 MB
VG UUID               dPSZpL-kFBn-HpkH-ChfO-dw9q-YGg2-qHOiQF

Seit gestern ist Platz frei...

Ausgabe von df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       72G   67G  959M  99% /
/dev/hda1              99M   15M   80M  16% /boot
tmpfs                  62M     0   62M   0% /dev/shm

Ausgabe von lvs

LV       VG         Attr   LSize  Origin Snap%  Move Log Copy% 
LogVol00 VolGroup00 -wi-ao 73.38G                              
LogVol01 VolGroup00 -wi-ao  1.00G

Irgendetwas scheint immer noch seltsam, da dort steht, dass 959 M verfügbar sind, aber bei einer Größe von 72 G 67 G genutzt werden …

Durch das Löschen von Repositories bekomme ich jetzt also Speicherplatz zurück … und dennoch ist das Gleichgewicht im Universum noch nicht wiederhergestellt …

Antwort1

Durch das Löschen von Dateien wird die Größe eines logischen Datenträgers nicht geändert (und somit auch der freie Speicherplatz in der Datenträgergruppe nicht beeinflusst).

Sie können sich eine Datenträgergruppe wie eine „virtuelle Festplatte“ vorstellen und die logischen Datenträger darauf wie Partitionen, mit denen sich allerdings viel einfacher arbeiten lässt (Größe ändern, erstellen, löschen) als mit normalen Partitionen.

Wie Kamil sagt, wenn Sie beim Arbeiten Fehlermeldungen wegen zu wenig Speicherplatz erhalten, liegt dies nicht direkt an LVM - das ist ein einfacher Dateisystemfehler, und Sie können mit feststellen, welches Dateisystem nicht genügend Speicherplatz hat df -h, und indem Sie genügend Daten auf diesem Dateisystem löschen, erhalten Sie schließlich mehr Speicherplatz. Wenn Sie jedoch mit LVM ein Dateisystem mit viel freiem Speicherplatz und ein anderes mit gar keinem haben, können Sie das LV mit viel freiem Speicherplatz verkleinern und diesen Speicherplatz dann dem LV zuweisen, das keinen Speicherplatz mehr hat, und so Ihre zugewiesene Festplatte effizienter nutzen.

Der Prozess zum Verkleinern und Erweitern von Dateisystemen ist etwas riskant (legen Sie also Sicherungskopien an) und die Verkleinerungsphase muss auf nicht gemounteten Dateisystemen durchgeführt werden (deshalb ist es gut, in den Einzelbenutzermodus zu wechseln und Sie können das Root-Dateisystem nicht verkleinern; wenn Ihre Dateisysteme dies unterstützen (XFS, Reiser, neuere Ext2/3), können Sie die Online-Erweiterung durchführen). Im Allgemeinen ist der Prozess:

  1. Verkleinern Sie das Dateisystem, aus dem Sie Speicherplatz entfernen möchten, auf eine Größe, die etwas kleiner ist als die gewünschte Endgröße (etwa resize2fs /dev/mapper/VolGroup00-largeLV xG). Der Grund, warum Sie es etwas kleiner verkleinern, ist, dass Sie es vermasseln, wenn Sie sich verrechnen und das LV kleiner als das Dateisystem verkleinern.
  2. Verkleinern Sie das LV, aus dem Sie Speicherplatz entfernen möchten, auf die gewünschte Größe ( lvresize -L xG VolGroup00/largeLV)
  3. Erweitern Sie das Dateisystem auf diesem LV auf die neue Größe des LV:resize2fs /dev/mapper/VolGroup00-largeLV
  4. Vergrößern Sie das zu kleine LV auf die neue, größere Größe:lvresize -L+nG VolGroup00/smallLV
  5. Erweitern Sie das Dateisystem auf dem zu kleinen LV auf seine neue, größere Größe:resize2fs /dev/mapper/VolGroup00-smallLV

Und jetzt sollten Sie überall viel Platz haben.

Einige Tipps:

  • lvslistet alle Ihre LVs zusammen mit ihren Größen auf
  • vgsgibt Ihnen eine schnelle Anzeige aller VG-Größen und des freien Speicherplatzes
  • Wenn sich Ihr Swap auf LVM befindet, ist das oft ein guter Ort, um vorübergehend etwas freien Speicherplatz zu erhalten, sofern die Maschine nicht zu stark beansprucht wird.

Viel Glück!

Antwort2

Befindet sich /dev/sda lokal oder im SAN? Wenn es im SAN ist, besteht Hoffnung. Wenn es lokal ist und den gesamten verfügbaren Speicherplatz nutzt, müssen Sie etwas Speicherplatz freigeben, indem Sie Dateien löschen.

Aktualisieren Sie die Frage und teilen Sie uns den Status mit.

Bearbeiten

Ah, es ist eine VM! Sie haben Glück (jedenfalls sofern auf dem Hostcomputer freier Speicherplatz vorhanden ist).

Erstellen Sie im VM-Manager eine weitere virtuelle Festplatte, die so groß ist, wie Sie den gewünschten freien Speicherplatz benötigen. Präsentieren Sie dann dieses Festplattenabbild der VM.

Stellen Sie sicher, dass die VM es sieht (verwenden Sie dmesg, um zu sehen, ob es angezeigt wird). Wenn ja, führen Sie ein FDisk-Verfahren durch und erstellen Sie eine Partition.

Ausgabe

 pvcreate /dev/whatever1  

Wobei „was auch immer“ offensichtlich das Gerät ist. Wahrscheinlich ist sdb.1 die Partition, die Sie gerade erstellt haben. Es sollte kein Problem sein, dieses physische Volume zu erstellen.

Jetzt lauf

 vgextend VolumeGroupName /dev/whatever1 

Sie können vgdisplay verwenden, um zu überprüfen, ob die Volumegruppe jetzt über freien Speicherplatz verfügt. Erweitern Sie nun das logische Volume:

 lvextend -l +100%FREE 

Dadurch sollte das logische Volume erweitert werden, um die Volume-Gruppe zu füllen.

Jetzt kommt der schwierige Teil. Vorausgesetzt, Sie haben ein Ext3-Dateisystem, sollten Sie die Größe live und im laufenden Betrieb ändern können:

 resize2fs /dev/volgroup/logicalvolume 

(wobei „Volgroup“ und „Logicalvolume“ der tatsächliche Pfad zu dem ist, was auf / gemountet ist)

Es wird angezeigt, dass eine Live-Größenänderung durchgeführt wird, da das Volume bereitgestellt ist, und voilà, die Ausführung von df -h sollte anzeigen, dass Sie freien Speicherplatz haben.

Antwort3

Die Menge an freiem Speicherplatz in Ihrer Datenträgergruppe ändert sich nicht. Er wird vollständig von dem Dateisystem zugewiesen, mit dem Sie ihn formatiert haben. Durch das Löschen von Dateien werden nur deren Inode-Einträge aus dem Dateisystem entfernt, aber das Dateisystem beansprucht den Speicherplatz weiterhin.

Die einzige Möglichkeit, Speicherplatz in Ihrer Datenträgergruppe zurückzugewinnen, besteht darin, die Größe logischer Datenträger zu ändern oder diese zu löschen.

Aber was Sie beschreiben, klingt einfach so, als hätten Sie nicht genügend Speicherplatz. Sie sollten die Ausgabe df -hin Ihrer VM überprüfen und sehen, wie viel freier Speicherplatz auf dem Volume vorhanden ist, auf dem sich das Repository befindet.

Antwort4

Versuchen Sie, Ihren SVN-Server neu zu starten. Wenn das Löschen von Dateien keinen Speicherplatz freigibt, müssen sie irgendwie noch verwendet werden. Dies passiert auch mit aktiven Protokollen. Ich hatte einmal ein Protokoll, das stündlich um 10 MB wuchs, also musste ich das Protokoll ziemlich bald löschen, aber der Speicherplatz wurde erst freigegeben, als ich den Daemon neu startete, der in dieses Protokoll spuckte.

EDIT: Ich habe nachgeschaut, warum das passiert. Es scheint, dass Linux/Unix Dateien referenziert, sodass sie gelöscht werden können, bis sie von allen Prozessen freigegeben werden, die sie geöffnet haben.

verwandte Informationen