
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:
- 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. - Verkleinern Sie das LV, aus dem Sie Speicherplatz entfernen möchten, auf die gewünschte Größe (
lvresize -L xG VolGroup00/largeLV
) - Erweitern Sie das Dateisystem auf diesem LV auf die neue Größe des LV:
resize2fs /dev/mapper/VolGroup00-largeLV
- Vergrößern Sie das zu kleine LV auf die neue, größere Größe:
lvresize -L+nG VolGroup00/smallLV
- 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:
lvs
listet alle Ihre LVs zusammen mit ihren Größen aufvgs
gibt 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 -h
in 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.