Está intentando cambiar el tamaño de un sistema de archivos que se creó antes de que la -O 64bit
opción se convirtiera en predeterminada. Es posible actualizar su sistema de archivos ext a direcciones de 64 bits, lo que le permite abarcar volúmenes significativamente mayores (1024 PiB en lugar de 16 TiB).
Suponiendo que se llama a su dispositivo de destino /dev/mapper/target-device
, esto es lo que debe hacer:
Prerrequisitos
- Este tamaño de volumen debe estar respaldado por RAID. Errores de disco regulares serán causar daño de otra manera.
- Aún así, RAID no es una copia de seguridad . También debe tener sus objetos de valor almacenados en otro lugar.
- Primero cambie el tamaño y verifique todos los volúmenes circundantes (tablas de partición, cifrado, lvm).
- Después de cambiar la configuración RAID de hardware, Linux puede o no reconocer inmediatamente el nuevo tamaño máximo. Verifique
$ cat /proc/partitions
y reinicie si es necesario.
Use un kernel estable reciente y e2fsprogs
- Asegúrese (marque
uname -r
) que está ejecutando un núcleo que puede manejar adecuadamente los sistemas de archivos ext4 de 64 bits; desea usar un 4.4.x
núcleo o posterior (predeterminado Ubuntu 16 y superior).
Adquiera e2fsprogs de al menos la versión 1.43
Ubuntu 16.04
(2016-04-21) fue lanzado con e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(2016-05-17) es la primera versión capaz de actualizar el tamaño de la dirección extfs.
Ubuntu 18.04
(2018-04-26) se envía con e2fsprogs 1.44.x
(¡bueno!)
Si está encendido 16.04
y no puede actualizar a una versión más reciente de Ubuntu, deberá habilitar el soporte del paquete fuente e instalar una versión más nueva manualmente:
$ resize2fs
# if this prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps
Redimensionar
Paso 1: desmonte correctamente el sistema de archivos
$ sudo umount /dev/mapper/target-device
Paso 2: compruebe el sistema de archivos en busca de errores
$ sudo e2fsck -fn /dev/mapper/target-device
Paso 3: habilite el soporte de 64 bits en el sistema de archivos
Consulte man tune2fs
y man resize2fs
puede cambiar algunos indicadores del sistema de archivos.
$ sudo resize2fs -b /dev/mapper/target-device
En un HDD RAID típico, esto lleva 4 minutos de alta carga de E / S y CPU.
Paso 4: cambie el tamaño del sistema de archivos
$ sudo resize2fs -p /dev/mapper/target-device
Si no pasa un tamaño en la línea de comando, resize2fs asume "crecer a todo el espacio disponible", esto es exactamente lo que desea. La -p
bandera habilitó las barras de progreso, pero solo se muestran después de algunos pasos iniciales.
En un HDD RAID típico, esto lleva 4 minutos de alta carga de E / S y CPU.
Verificar de nuevo
Verifique nuevamente el sistema de archivos
$ sudo e2fsck -fn /dev/mapper/target-device
e2fsck de versiones más recientes puede sugerir que se corrijan las marcas de tiempo o los árboles de extensión que las versiones anteriores manejan mal. Esto no es una indicación de ningún problema grave y puede optar por solucionarlo ahora o más tarde.
Si se producen errores, no entre en pánico y no intente escribir en el volumen; Consulte a alguien con un amplio conocimiento del sistema de archivos, ya que otras operaciones probablemente destruirían los datos.
Si no se producen errores, vuelva a montar el dispositivo:
$ sudo mount /dev/mapper/target-device
¡Éxito!
No necesitará ninguna versión de e2fsprogs que no sea Ubuntu para el funcionamiento continuo del sistema de archivos actualizado; el núcleo las admite desde hace bastante tiempo. Solo fue necesario iniciar la actualización.
Como referencia, hay un mensaje de error similar que imprimirá mke2fs si se le pide que cree un dispositivo enorme con opciones inapropiadas:
$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.
Me sucedió recientemente, con un Ubuntu 18.04 que se actualizó después de instalarse inicialmente con un Ubuntu 16.04 ... La matriz de almacenamiento (/ dev / sdb) se particionó inicialmente en dos particiones de 14 TB, y eso es por querer agrandar la primera partición a 28 TB que ocurrió el problema.
No necesitaba descargar una nueva versión de resize2fs porque era muy reciente.
El único problema era convertir la partición 1 de 64 bits que había sido formateada en 32 bits ... En lugar de invitar al lector a consultar la documentación de tune2fs (como sugiere Anx), ¡propongo un ejemplo real!
¡Finalmente, ampliamos la partición del disco!
fuente