Ich verwende LVM-Thinvolumes, um mehrere Computer über iSCSI per Netzwerk zu booten. Von Zeit zu Zeit gebe ich auf diesen Rechnern Speicherplatz frei. Leider wird dieser Speicherplatz auf den Thinvolumes nicht freigegeben. Daher öffne ich partclone
die Partitionen von Zeit zu Zeit, um Speicherplatz freizugeben. Bei der Virtualisierung können Sie Tools verwenden, die ungenutzten Speicherplatz auf Null setzen und ihn so freigeben. Gibt es eine ähnliche oder bessere Möglichkeit, mit LVM-Thin-Pools/Thin-Volumes Speicherplatz freizugeben?
Dank im Voraus
Antwort1
LVM Thin unterstützt DISCARD, besser bekannt als TRIM. Theoretisch sollte es möglich sein, dies irgendwie mit iSCSI zum Laufen zu bringen (es gibt einen entsprechenden UNMAP-Befehl), aber ich habe dazu nichts gefunden.
Auf dem Rechner, auf dem sich diese Volumes befinden, können Sie fstrim
freien Speicherplatz freigeben. Die Manpage erwähnt es sogar explizit:
fstrim wird auf einem gemounteten Dateisystem verwendet, um Blöcke zu verwerfen (oder „trimmen“), die vom Dateisystem nicht verwendet werden. Dies ist nützlich für Solid-State-Laufwerke (SSDs) und Thin-Provisioning-Speicher.
Damit dies funktioniert, muss Linux das Dateisystem unterstützen und diese Unterstützung muss TRIM umfassen. Wenn Ihre über das Netzwerk gebooteten Computer Windows ausführen, handelt es sich wahrscheinlich um NTFS. Anscheinend unterstützt NTFS-3G TRIM.
fstrim
funktioniert nur auf gemounteten Dateisystemen.
Es sieht dann so aus:
Aktualisieren: Wie in den Kommentaren erläutert, bietet das Linux SCSI Target ein Flag in seinen Block-Backstores, das SSDs identifiziert: is_nonrot
. Es unterstützt auch den UNMAP SCSI-Befehl. Windows (zumindest Windows 10) erkennt SSDs über iSCSI korrekt und gibt UNMAP-Befehle aus, wodurch ungenutzter Speicherplatz sofort freigegeben wird.