¿Por qué no podemos extender las particiones hacia la izquierda de manera eficiente?

¿Por qué no podemos extender las particiones hacia la izquierda de manera eficiente?

Los sistemas de archivos modernos como ext4 y btrfs admiten el cambio de tamaño. Incluso aquellos que no lo admiten intrínsecamente, como FAT, tienen herramientas de terceros que lo admiten de todos modos. Pero siempre apoyan la extensión hacia la derecha, nunca directamente hacia la izquierda.

La extensión hacia la izquierda se realiza copiando la partición hacia la izquierda (byte por byte en muchos casos) y luego extendiéndola hacia la derecha. Cada respuesta que How do I extend a partition to the lefthe visto ha sido backup, delete partition, make a new partition.

¿No es tan simple como cambiar el límite de la partición y luego mover/actualizar las tablas de inodos?

Respuesta1

Pero siempre apoyan la extensión hacia la derecha, nunca directamente hacia la izquierda.

Presumiblemente te refieres a representaciones de HDD/SSD que utilizan una matriz lineal de sectores o bloques lógicos.
El sector/bloque más a la izquierda tendría una dirección de bloque lógico (LBA) (absoluta) de 0.
El sector/bloque más a la derecha sería el final de la unidad y tendría el LBA más grande.
Tenga en cuenta que el LBA suele estar representado por un entero de 48 bits sin signo en la interfaz ATA.

La extensión hacia la izquierda se realiza copiando la partición hacia la izquierda (byte por byte en muchos casos) y luego extendiéndola hacia la derecha.

Esa no es una descripción precisa.
En vez de"proceso de copiar"la partición, la partición se reubica moviéndola, sector/bloque por sector/bloque (no"byte por byte").

¿No es tan simple como cambiar el límite de la partición y luego mover/actualizar las tablas de inodos?

Evidentemente no, ya que esa operación nunca se ofrece.

La partición es simplemente un contenedor definido para un sistema de archivos.
La partición se define físicamente en términos de un LBA inicial, un LBA final y el número de sectores/bloques.
Otros atributos de una partición son irrelevantes para esta discusión.

El sistema de archivos definido para la partición utilizará LBArelativoal inicio de la partición.
Al sistema de archivos no le importa ni es consciente de la posición de su partición en el HDD/SSD.
El sistema de archivos solo reconoce los LBA que comienzan en 0 (el inicio de su partición) hasta el LBA correspondiente al final de la partición.
Al utilizar direccionamiento relativo, se inhibe (y por lo tanto se garantiza) que el sistema de archivos acceda a cualquier sector/bloque fuera de su partición.

Si"cambiar el límite de la partición"significa redefinir el inicio de la partición sin mover el sistema de archivos al nuevo inicio de la partición, entonces eso crea escenarios sin solución.

Si intentó utilizar los LBA existentes, entonces la nueva área de partición tendría LBA menores que cero, que no se pueden representar con números enteros sin signo. Por lo tanto, no hay forma de abordar el área recién creada a la "izquierda" de la partición original.

Si intenta recalcular cada LBA almacenado en el sistema de archivos a su nuevo valor relativo, entonces está intentando resolver una tarea casi imposible para encontrar cada LBA en el sistema de archivos. Pase por alto cualquier LBA y tendrá la seguridad de que eventualmente se dañará el sistema de archivos.
Incluso si logra actualizar cada LBA, el sistema de archivos podría parecer dañado porque generalmente hay entidades específicas del sistema de archivos que deben ubicarse en LBA específicos (relativos). Pero el"cambio del límite de la partición"ha alterado las ubicaciones de aquellas entidades que deberían estar en LBA fijos (en relación con el inicio de la partición).

En pocas palabras, el inicio de la partición y la posición del sistema de archivos dentro de esa partición deben mantenerse consistentes.

información relacionada