Moderne Dateisysteme wie ext4 und btrfs unterstützen die Größenänderung. Sogar solche, die dies nicht von Haus aus unterstützen, wie etwa FAT, verfügen über Tools von Drittanbietern, die dies trotzdem unterstützen. Sie unterstützen jedoch immer die Erweiterung nach rechts, nie direkt nach links.
Die Erweiterung nach links erfolgt durch Kopieren der Partition nach links (in vielen Fällen Byte für Byte) und anschließendes Erweitern nach rechts. Jede Antwort, die How do I extend a partition to the left
ich je gesehen habe, war backup, delete partition, make a new partition
.
Ist es nicht so einfach, wie die Partitionsgrenze zu ändern und dann die Inode-Tabellen zu verschieben/aktualisieren?
Antwort1
Sie unterstützen jedoch immer eine Ausdehnung nach rechts, niemals direkt nach links.
Vermutlich beziehen Sie sich auf HDD/SSD-Darstellungen, die eine lineare Anordnung von Sektoren oder logischen Blöcken verwenden.
Der Sektor/Block ganz links hätte eine (absolute) logische Blockadresse (LBA) von 0.
Der Sektor/Block ganz rechts wäre das Ende des Laufwerks und hätte die größte LBA.
Beachten Sie, dass die LBA in der ATA-Schnittstelle normalerweise durch eine vorzeichenlose 48-Bit-Ganzzahl dargestellt wird.
Die Erweiterung nach links erfolgt durch Kopieren der Partition nach links (in vielen Fällen Byte für Byte) und anschließendes Erweitern nach rechts.
Das ist keine genaue Beschreibung.
Anstatt"Kopieren"Die Partition wird durch Verschieben Sektor/Block für Sektor/Block verschoben (nicht"Byte für Byte").
Ist es nicht so einfach, wie die Partitionsgrenze zu ändern und dann die Inode-Tabellen zu verschieben/aktualisieren?
Offensichtlich nicht, da diese Operation nie angeboten wird.
Die Partition ist lediglich ein definierter Container für ein Dateisystem.
Die Partition wird physisch durch eine Start-LBA, eine End-LBA und die Anzahl der Sektoren/Blöcke definiert.
Andere Attribute einer Partition sind für diese Diskussion irrelevant.
Das für die Partition definierte Dateisystem verwendet LBAsrelativzum Anfang der Partition.
Das Dateisystem kümmert sich nicht um die Position seiner Partition auf der Festplatte/SSD und kennt sie auch nicht.
Das Dateisystem kennt nur LBAs, die bei 0 (dem Anfang seiner Partition) beginnen und bis zum LBA reichen, der dem Ende der Partition entspricht.
Durch die Verwendung der relativen Adressierung wird das Dateisystem daran gehindert (und somit garantiert), auf Sektoren/Blöcke außerhalb seiner Partition zuzugreifen.
Wenn„Ändern der Partitionsgrenze“bedeutet, den Anfang der Partition neu zu definieren, ohne das Dateisystem an den neuen Anfang der Partition zu verschieben, dann entstehen unlösbare Szenarien.
Wenn Sie versucht hätten, die vorhandenen LBAs zu verwenden, hätte der neue Partitionsbereich LBAs, die kleiner als Null sind und nicht mit vorzeichenlosen Ganzzahlen dargestellt werden können. Es gibt also keine Möglichkeit, den neu erstellten Bereich „links“ von der ursprünglichen Partition anzusprechen.
Wenn Sie versuchen, jeden im Dateisystem gespeicherten LBA auf seinen neuen relativen Wert neu zu berechnen, dann versuchen Sie, eine nahezu unmögliche Aufgabe zu lösen, nämlich jeden LBA im Dateisystem zu finden. Wenn Sie irgendwelche LBAs übersehen, ist eine eventuelle Beschädigung des Dateisystems garantiert.
Selbst wenn Sie erfolgreich jeden LBA aktualisieren, könnte das Dateisystem dann beschädigt erscheinen, da es normalerweise bestimmte Dateisystemelemente gibt, die an bestimmten (relativen) LBAs lokalisiert werden müssen. Aber die„Änderung der Teilungsgrenze“hat die Standorte derjenigen Entitäten geändert, die sich an festen (relativ zum Partitionsstart) LBAs befinden sollten.
Unterm Strich müssen der Anfang der Partition und die Position des Dateisystems innerhalb dieser Partition konsistent gehalten werden.