¿Cómo extender una partición ext4 y un sistema de archivos?

44

Tengo un disco de 400 GB con una partición ext4 de 320 GB. Me gustaría hacer crecer la partición ext4 para usar el espacio izquierdo (80 GB de espacio libre).

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

¿Cómo podría hacer esto?

He visto gente usando resize2fspero no entiendo si cambia el tamaño de la partición.

Otra solución sería usar, fdiskpero no quiero eliminar mi partición y perder datos. ¿Cómo podría simplemente hacer crecer la partición sin perder ningún archivo?

Nota: estoy hablando de una partición de datos sin montar sin LVM y tengo copias de seguridad, pero me gustaría evitar pasar algún tiempo en la recuperación.

mimipc
fuente
Este tipo de preguntas se han formulado y respondido varias veces de las que tengo conocimiento. ¿Has consultado los archivos aquí?
mdpc

Respuestas:

45

Debe comenzar con la partición desmontada. Si no puede desmontarlo (por ejemplo, es su partición raíz u otra cosa que el sistema necesita ejecutar), use algo como System Rescue CD .

  1. Ejecute parted, o gpartedsi prefiere una GUI, y cambie el tamaño de la partición para usar el espacio extra. Prefiero gpartedya que te da una buena representación gráfica, muy similar a la que dibujaste en tu pregunta.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (solo para saber si estás seguro)

  4. Vuelva a montar su partición.

Si bien nunca he visto que esto falle, ¡primero haga una copia de seguridad de sus datos!

Flup
fuente
55
La resize2fspágina de manual dice: Si el sistema de archivos está montado, se puede usar para expandir el tamaño del sistema de archivos montado, suponiendo que el núcleo admita el cambio de tamaño en línea. (Al momento de escribir esto, el kernel de Linux 2.6 admite el cambio de tamaño en línea para sistemas de archivos montados usando ext3 y ext4). Sin embargo, cambiar el tamaño de un sistema de archivos montado es una operación más peligrosa, ya que el kernel podría congelarse o bloquearse fácilmente mientras se ejecuta un código poco ejercitado, dejando su sistema de archivos en mal estado.
200_success
1
Es cierto, pero no desea perder el tiempo con su tabla de particiones con el sistema de archivos montado. Es por eso que comencé con el FS desmontado.
Flup
1
Para ext4, podría estar resize4fsen su lugar en RHEL 5.
Zac Thompson
1
El crecimiento de la partición con su sistema de archivos raíz debería funcionar bien siempre y cuando: 1.No cambie el número de sector inicial. 2.Reinicia después de cambiar la tabla de particiones antes de dar el siguiente paso.
kasperd
se niega a cambiar el tamaño de una partición ext4 en CentOS 6.
reinierpost
21

Sí, puede hacer crecer EXT4 fs en línea si ya tiene una partición ordenada. ¿Tienes partición ordenada? ¿Tienes LVM?

sudo resize2fs /dev/drive_to_grow

fdiskcambiará el tamaño de su partición, es cierto, pero si se trata de una partición raíz (o de hecho una partición montada), primero tendrá que desmontarse. Tan fuera de línea muy probablemente!

Al igual que con todo lo relacionado con las operaciones de disco / fs, recomiendo encarecidamente tener un proceso de copia de seguridad y de recuperación probado y bien entendido.

Chris
fuente
Si usa, fdiskasegúrese de verificar que usa MBR y no GPT (con MBR híbrido, por ejemplo).
stek29
2
En mi servidor Debian XEN cambié el tamaño de mi volumen lógico lvextend +40G /dev/vg0/volumeName, luego inicié sesión como root en el vm e ingresé lo resize2fs /dev/xvda2que aumenta el sistema de archivos raíz en ejecución al nuevo máximo. No estoy seguro de si eso era necesario, pero reinicié el vm después de esta acción. Todo parece estar bien.
rubo77
1
@ rubo77 No, no es necesario reiniciar,
Chris
5

Tenga en cuenta que en algunos servidores VDS podría tener una partición raíz no primaria y primero necesitar cambiar el tamaño del contenedor de partición extendida

Por ejemplo, acaba de actualizar su plan y tiene algo como:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Aquí / dev / vda2: es su contenedor extendido. Y / dev / vda5: partición principal que debemos redimensionar al espacio disponible completo.

La forma más simple:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
WSR
fuente
Lo que realmente me ayudó fue ver que puedes establecer ENDun número negativo. Por lo general, no conoce el tamaño exacto de Linux de una partición redimensionada; no sabe cómo establecer el ENDargumento de resizepart. Configurarlo -1scambiará el tamaño de su partición al máximo.
srigi
Error: token inválido -1s
starbeamrainbowlabs
3

Parted no funciona en ext4 en Centos. Tuve que usar fdisk para eliminar y volver a crear la partición, que (validé) funciona sin perder datos. Seguí los pasos en http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Aquí están, en pocas palabras:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w
JTW
fuente
1
¡Bienvenido a Server Fault! Resuma los pasos en la respuesta misma, para protegerse contra la pudrición del enlace.
200_success
Usé este proceso pero usé gdisk para crear la partición. Esto me permitió guardar los datos y crear una partición que era> 2 TB
pcnate
2

partedpueden resizeparticiones y sus sistemas de archivos.

200_success
fuente
Gracias, estaba usando el gráfico y no admite el cambio de tamaño de la partición. He visto la opción en el programa cli, pero ¿podría decirme cómo usarla sin perder datos? En resize NUMBER START END, ¿son START y END los números de sector? ¿Cómo sabría eso?
mimipc
Siempre se recomienda hacer una copia de seguridad de sus datos antes de realizar cualquier operación arriesgada, como cambiar el tamaño de una partición. partedadmite una selección de unidades; por ejemplo, use el ssufijo para sectores, Bo GBpara bytes, %para el porcentaje del tamaño del dispositivo y cylpara los cilindros.
200_success
2

Puede usar fdisko cfdiskmodificar (o volver a crear) la partición (solo asegúrese de no cambiar su límite de inicio), luego reinicie y resize2fs. Pero, en general, es preferible usar LVM-2 en lugar de MBR / GPT porque le permite incorporar esos cambios sin reiniciar el núcleo.

poige
fuente
1

Solo para aclarar cómo hago esto para cualquiera que todavía esté leyendo este hilo.
Si es la partición de arranque la que desea cambiar de tamaño, entonces debe arrancar desde una unidad de "rescate" bootcd o bootusb que es solo un Live Linux. Esto le permite ejecutar Linux en la máquina que no sea la unidad en la que desea realizar cambios.

Creo que el mejor cd o usb de "rescate" en este caso sería un USB arrancado con arranque o CD.
Estuches en los que necesita una imagen de rescate.
1. La partición que se expandirá es la última partición, pero la arrancó y no puede desmontarla.
sda1 = inicio (o intercambio)
sda2 = intercambio (o inicio)
sda3 = /
espacio no utilizado

  1. Si la partición que se expandirá NO es la última partición, debe usar la imagen de arranque de gparted para mover o cambiar el tamaño de las particiones.
    sda1 = arranque
    sda2 = / (la partición a expandir no es la última)
    sda3 = intercambiar
    espacio no utilizado

Si desea cambiar una partición montada que no es la partición "raíz" (/), como / home, que es una partición diferente, entonces no es necesario usar una imagen de rescate. Esto es especialmente cierto si es la última partición.
sda1 = inicio
sda2 = /
sda3 = /
espacio no utilizado de inicio
-o-
sda1 = /
sda2 = /
espacio no utilizado de inicio

Esta es la situación que tengo cuando tomo una imagen de una unidad más pequeña o SSD y la muevo a una SSD más grande.

En este caso, solo necesita desmontar / inicio mientras lo extiende. Pero para desmontar / home, debe asegurarse de no estar conectado a ninguna cuenta de usuario cuyo directorio de inicio esté dentro de él. Dado que el directorio de inicio del usuario "root" está directamente debajo del sistema root / as en / root, si puede iniciar sesión en root, entonces puede desmontar / home

Salgo de una sesión de GUI (KDE / Gnome / etc.) y uso [CTRL] + [ALT] + [F1] para abrir una sesión de shell.
Si acaba de cerrar sesión en el inicio de sesión de un usuario, Linux puede tardar entre 20 y 30 segundos en terminar de cerrar los archivos, por lo que es posible que reciba errores al intentar desmontar / iniciar.
1. umount / home (reintento este comando si falla por hasta 30 segundos, luego ve a otras sesiones para ver si estoy "cd / home / xxx" en alguna parte).
2. parted / dev / sda
a. redimensionar x (x = partición que desea redimensionar, use "p" para obtener una lista de particiones)
b. Ingrese el último sector de cambio de tamaño = "-1" (menos 1 significa 1 sector desde el final del disco)
c. q (sale dividido)
3 resize2fs / dev / sda "x" (x = partición a redimensionar. Esto también vuelve a montar el sistema de archivos)
4. df -m (verifico / home para verificar que cambió de tamaño)
Nunca perdí archivos ni corrompí el disco usando este método.

Buena suerte

Chuck A
fuente
Y, sin embargo, no realiza copias de seguridad.
Deer Hunter