Wenn ich jedoch etwas durchführe lvextend, sehe ich, dass die Änderungen bereits auf die Partition angewendet wurden (wie in Gnome Disks gezeigt). Warum muss ich das noch tun resize2fs?
Der lvextendBefehl (ohne die --resizefsOption) trifft nur die LVM-seitigen Vorkehrungen, um das Blockgerät zu vergrößern, das das logische Volume ist. Unabhängig vom Dateisystemtyp (oder sogar davon, ob überhaupt ein Dateisystem vorhanden ist) auf dem LV sind diese Vorgänge immer ähnlich.
Wenn der LV ein ext2 / 3/4-Dateisystem enthält, besteht der nächste Schritt darin, die Metadaten des Dateisystems zu aktualisieren, um das Dateisystem darauf aufmerksam zu machen, dass mehr Speicherplatz verfügbar ist, und die erforderlichen Metadatenstrukturen zum Verwalten des hinzugefügten Speicherplatzes zu erstellen / zu erweitern. Bei ext2 / 3/4 Dateisystemen umfasst dies mindestens:
Erstellen neuer Inodes für den hinzugefügten Speicherplatz
Erweitern der Blockzuordnungsdatenstrukturen, sodass das Dateisystem erkennen kann, ob ein Block des hinzugefügten Speicherplatzes verwendet wird oder frei ist
Verschieben möglicherweise einige Datenblöcke, wenn sie der zuvor erwähnten Datenstrukturerweiterung im Wege stehen
Dieser Teil ist spezifisch für den Dateisystemtyp, obwohl die ext2 / 3/4 Dateisystemtypen so ähnlich sind, dass sie alle mit einem einzigen resize2fsTool in der Größe geändert werden können . Für XFS-Dateisysteme würden Sie xfs_growfsstattdessen ein Tool verwenden. Andere Dateisysteme verfügen möglicherweise über eigene Erweiterungstools. Und wenn das logische Volume kein Dateisystem enthalten würde, sondern eine "rohe" Datenbank oder ein Oracle ASM-Volume, müsste ein weiteres Verfahren angewendet werden.
Jedes Dateisystem verfügt über unterschiedliche interne Funktionen, sodass die Bedingungen für die Erweiterung eines Dateisystems für jedes Dateisystem unterschiedlich sind. Es dauerte eine Weile, bis eine gemeinsame API für die Dateisystemerweiterung entwickelt wurde. Dadurch konnte der fsadm resizeBefehl implementiert werden , der eine einheitliche Syntax zum Erweitern mehrerer Dateisystemtypen bietet. Die --resizefsOption lvextendverwendet nur den fsadm resizeBefehl.
Auf den Punkt gebracht: Nach dem lvextendLVM-Level - Tools wie lvs, vgs, lvdisplayund vgdisplaydie aktualisierte Größe, aber das Dateisystem und alle Tools arbeitet auf es sehen, wie df, wird es noch nicht sehen.
Wäre es richtig zu sagen, dass nach dem Laufen lvextendund vor der Ausführung resize2fs, dfwürden die aktualisierten Größen melden?
Rufus
Genau. (Zu meiner Antwort hinzugefügt.)
telcoM
Vielen Dank. Was bedeutet "Erstellen neuer Inodes für den hinzugefügten Speicherplatz", da der hinzugefügte Speicherplatz noch nicht verwendet wird und Inodes nur für vorhandene Dateien vorhanden sind?
Tim
Für moderne Dateisysteme wie XFS ist dies der Fall. Die ext2 / 3/4-Dateisysteme folgen jedoch einem klassischeren Design mit einer vorab zugewiesenen Tabelle von Inodes. Bei der Erstellung des Dateisystems wird ein Verhältnis von (maximale Anzahl von Inodes) / (Dateisystemgröße) festgelegt, das nicht als Online-Vorgang geändert werden kann. Infolgedessen resize2fsmuss die Inode-Tabelle erweitert werden, um das Verhältnis beizubehalten, wenn das Dateisystem erweitert wird.
TelcoM
11
Die LVM-Schicht ist nur ein Container für das darin enthaltene Dateisystem. Sie können festlegen lvextend, dass die Größe des Dateisystems innerhalb des logischen Volumes geändert werden soll, ohne dass eine separate Option (oder ) resize2fshinzugefügt werden muss :-r--resizefs
Ich suchte diese Option, Sekundenschnelle geschlagen. +1
Rui F Ribeiro
4
Weil Dateisysteme und logische Volumes unterschiedliche Abstraktionen sind. Ein Volume ist ein Teil der Festplatte (wie eine Partition) - oder zumindest das "virtuelle" Äquivalent. Es ist nur ein Blockgerät. Ein Dateisystem ist eine Struktur, die sich innerhalb dieses Systems befindet (oder darüber hinaus, wenn Sie dies bevorzugen) und die verwendet wird, um eine Zuordnung zwischen Dateien (und Verzeichnissen usw.) zu diesem Gerät bereitzustellen. Ohne resize2fsist die Partition größer, aber das Dateisystem nutzt den verfügbaren Speicherplatz nicht aus.
Sie können zunächst ein Dateisystem erstellen, das nicht die gesamte Partition einnimmt. Von der mke2fsManpage:
Die Dateisystemgröße wird durch fs-size angegeben. Wenn fs-size kein Suffix hat, wird es als Zweierpotenz interpretiert, es sei denn, die Option -b Blockgröße ist angegeben. In diesem Fall wird fs-Größe als Anzahl der Blockgrößenblöcke interpretiert. Wenn die fs-Größe durch 'k', 'm', 'g', 't' (entweder in Groß- oder Kleinbuchstaben) ergänzt wird, wird sie in Zweierpotenzen von zwei Kilobyte, Megabyte, Gigabyte, interpretiert. Terabyte usw. Wenn fs-size weggelassen wird, erstellt mke2fs das Dateisystem basierend auf der Gerätegröße.
Wie Sie sehen, wird standardmäßig die Partition gefüllt, und es gibt normalerweise keinen Grund, etwas anderes zu tun - aber Sie können, wenn Sie möchten.
Beachten Sie, dass when lvextendeine Option --resizefs(oder nur eine -r) hat, mit der das Dateisystem nach dem Erweitern des Volumes erweitert werden kann, ohne dass ein separater Befehl ausgeführt werden muss.
Das resize2fserzwingt fs, dass das Dateisystem erweitert oder verkleinert wird, um den vom lvextendBefehl erzeugten neuen Speicherplatz zu belegen. Die Prozesse:
lvextend
und vor der Ausführungresize2fs
,df
würden die aktualisierten Größen melden?resize2fs
muss die Inode-Tabelle erweitert werden, um das Verhältnis beizubehalten, wenn das Dateisystem erweitert wird.Die LVM-Schicht ist nur ein Container für das darin enthaltene Dateisystem. Sie können festlegen
lvextend
, dass die Größe des Dateisystems innerhalb des logischen Volumes geändert werden soll, ohne dass eine separate Option (oder )resize2fs
hinzugefügt werden muss :-r
--resizefs
quelle
Weil Dateisysteme und logische Volumes unterschiedliche Abstraktionen sind. Ein Volume ist ein Teil der Festplatte (wie eine Partition) - oder zumindest das "virtuelle" Äquivalent. Es ist nur ein Blockgerät. Ein Dateisystem ist eine Struktur, die sich innerhalb dieses Systems befindet (oder darüber hinaus, wenn Sie dies bevorzugen) und die verwendet wird, um eine Zuordnung zwischen Dateien (und Verzeichnissen usw.) zu diesem Gerät bereitzustellen. Ohne
resize2fs
ist die Partition größer, aber das Dateisystem nutzt den verfügbaren Speicherplatz nicht aus.Sie können zunächst ein Dateisystem erstellen, das nicht die gesamte Partition einnimmt. Von der
mke2fs
Manpage:Wie Sie sehen, wird standardmäßig die Partition gefüllt, und es gibt normalerweise keinen Grund, etwas anderes zu tun - aber Sie können, wenn Sie möchten.
Beachten Sie, dass when
lvextend
eine Option--resizefs
(oder nur eine-r
) hat, mit der das Dateisystem nach dem Erweitern des Volumes erweitert werden kann, ohne dass ein separater Befehl ausgeführt werden muss.quelle
Das
resize2fs
erzwingtfs
, dass das Dateisystem erweitert oder verkleinert wird, um den vomlvextend
Befehl erzeugten neuen Speicherplatz zu belegen. Die Prozesse:quelle