¿Cómo puedo expandir el tamaño de partición ext4 en debian?

26

Tengo un disco con esta configuración:

fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000f1b8b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2612    20971520   83  Linux
/dev/sda3           60736       60801      525312   82  Linux swap / Solaris

Hay 478 GB de espacio sin asignar, ¿cómo haría para agregar este espacio a / dev / sda1 sin perder los datos que están actualmente en / dev / sda1? (El sistema de archivos es ext4).

NOTA: es un servidor con solo SSH, sin GUI para ejecutar cosas como gparted.

Seb
fuente
Puedo arrancar en red el servidor y usarlo mientras la unidad está desmontada.
Seb
Este artículo en particular ha sido cubierto muchas veces dentro de los sitios de SE. Sería mejor investigar un poco más antes de publicar una pregunta.
mdpc
También vea askubuntu.com/a/937351/621883, especialmente la respuesta que contiene growpart y resize2fs fue útil para mí.
klor

Respuestas:

38

Agrandar la partición: fdisk -u /dev/sda.

p para imprimir la tabla de particiones, tome nota del número, inicio, fin y tipo de sda1.

Eliminarlo d::

Recree con el mismo número (1), comience y escriba pero con un final más grande (teniendo cuidado de no superponerse con otras particiones). Intente alinear las cosas en un límite de megabytes que sea para el final , hágalo un múltiplo de 2048 menos 1. Cambie el tipo si es necesario con t(para particiones que contienen un sistema de archivos extXo btrfs, el valor predeterminado de 83está bien).

Luego wescribir y qdejar de fumar.

La tabla de particiones habrá sido modificada pero el núcleo no podrá tener eso en cuenta ya que algunas particiones están montadas.

Sin embargo, si las particiones en uso solo se ampliaron, debería poder forzar al kernel a tomar el nuevo diseño con:

partx /dev/sda

Si eso falla, deberá reiniciar. El sistema debería arrancar bien.

Luego, cambie el tamaño del sistema de archivos para que se extienda a la extensión de la partición ampliada:

resize2fs /dev/sda1

Que para ext4funcionará bien incluso en un FS en vivo.

Stéphane Chazelas
fuente
Sé que esto es antiguo, pero ¿mantendrá los datos si elimina la partición?
Canadian Luke REINSTATE MONICA
3
@CanadianLuke, sí, eliminar la partición en fdisk solo modifica la tabla de particiones. Si lo recrea del mismo tamaño, no habrá ningún cambio. Los datos nunca se alteran a menos que reduzca una partición y cree otra partición lógica o extendida en el medio de lo que solía ser su partición, en cuyo caso el registro de la partición extendida / lógica se escribirá sobre algunos datos allí.
Stéphane Chazelas
Esto también funciona muy bien para particiones ntfs (con un volumen existente, con datos).
Kenny Evitt
Eso suena razonable, pero ¿qué sucede si tengo particiones extendidas, Linux LVM y Linux swap / Solaris que comienzan al final de la partición Linux? ¿Debo eliminar estas particiones>? Me preocupa que en ese caso, el sistema de archivos no se inicie, ya que puede estar usando Linux LVM, por ejemplo, en el mismo inicio y final. Y tampoco quiero perder datos.
cian
@cyan cambiar el tamaño de un volumen lógico LVM con un ext4 FS, o cambiar el tamaño de una partición utilizada como volumen físico para LVM serían diferentes preguntas con diferentes procedimientos.
Stéphane Chazelas
7

No puede hacerlo de manera segura mientras la partición está montada, lo que significa que necesita arrancar alguna otra partición y hacerlo desde allí.

gpartedes una GUI agradable y fácil para este propósito. En nuestro intercambio de comentarios eliminados, usted mencionó que no comenzaría debido a "no se puede acceder a la pantalla"; esto significa que no está en X; Como es una GUI, no funcionará sin eso.

Por supuesto, si no tiene otra partición para usar, necesitará un CD en vivo o algo así, creo que generalmente vienen con gparted. Su mejor apuesta es probablemente el CD en vivo real , que parece tener una versión estable más reciente y razonablemente reciente (y cabe en un CD , lo cual es bueno ya que el "CD en vivo" se está convirtiendo rápidamente en el "DVD en vivo").

Nunca me había dividido porque causaba un problema, pero, por supuesto, respalde primero su aspecto importante.

encerrada dorada
fuente
No puedo usar gparted ya que solo tengo acceso SSH (es un servidor sin cabeza). Puedo desmontar el HDD, ya que el sistema no se ejecuta en / dev / sda.
Seb
1
Si no tiene acceso físico al sistema y, por lo tanto, no puede desmontar y cambiar la partición de manera útil, creo que no tiene suerte, o al menos en un territorio muy incompleto , por ejemplo, podría intentar usarlo fdiskmientras está montado, seleccione (x) pert, (c) número de cilindros de suspensión. Pero no he hecho esto y solo lo haría si no hubiera otra opción.
Ricitos de oro
Acabo de decir que puedo desmontar la partición. Incluso puedo arrancar en red todo el servidor e ingresar desde otro servidor, que sería como usar un Live CD (sin una GUI).
Seb
@Seb: mi mal, lo siento.
Ricitos de oro
2

Sé que este es un problema muy antiguo, pero muchas personas están buscando esa resolución.

Para este ejemplo, tiene la siguiente situación típica. Al principio hay una única partición, y al final se encuentra una partición de intercambio. no es bueno porque el intercambio puede estar muy cargado, y el final del disco girado es la parte más lenta. lo que sugiero

  1. Crear partición de arranque al comienzo. ¿Por qué al principio? porque muchas herramientas tienen problemas con el final del disco grande por encima de la barrera de 2 TB. Después del arranque, la partición debe ser una partición de intercambio. Esto es para el rendimiento. El resto del disco debe usarse para otras particiones.

Pero, ¿qué pasa con esta situación? No recomiendo expandir sda1. Sugiero crear otras particiones después de sda1 y sda2, montadas como /homey /usr. En ese directorio se almacenan la mayoría de los datos del usuario y del sistema, y ​​es posible mover de forma segura los datos de esos directorios a nuevas particiones.

  1. Pero. (segundo "pero") si aún desea mantener su estructura actual, primero debe eliminar la partición de intercambio. Deberías hacer un intercambio, comentar esto en /etc/fstab. si swapon le dice (vea man) que no se utiliza el intercambio, puede eliminarlo con la herramienta de partición (fdisk o similar).

    Cuando no tiene esta partición, puede ampliar su sda1. Al fdiskusarlo, primero debe imprimir la partición. Es para recordar dónde comienza. En segundo lugar, elimine la partición con la tecla 'd'. No entre en pánico, nada está escrito en el disco duro :). Después de la impresión que ve, no existe ninguna partición en el disco.

    Luego cree una nueva partición, pero tenga cuidado. Vea en qué sector comenzó la partición original. Escribe el mismo número. Después de eso mira al final. fdiskle solicita el último sector disponible. Use la calculadora y asigne en su mente cuánto intercambio necesita en kilobytes. Multiplique por 2 y reste este número del último número de sector solicitado por fdisk. Crear partición. Imprima esto (todavía está en la memoria temporal de fdisk) y observe que todo está bien.

    Después de presionar la tecla 'w', esto escribirá una nueva partición en la unidad. Verá que toda la información está sincronizada o la sincronización ha fallado. Si falla, puede llamar al comando partx / dev / sda para realizar la sincronización. Si aún falla, debe reiniciar su sistema. Después de reiniciar, ha preparado una partición más grande, pero el sistema de archivos aún es más pequeño. Deberías cultivarlo. EXT4 es cultivable sobre la marcha :), use resize2fs /dev/sda1para hacerlo.

    No necesita volver a montar, etc. Por último, debe restaurar la partición de intercambio. Simplemente use fdisk nuevamente, cree una nueva partición como intercambio. Después de escribir 'w', el dispositivo sda2 se restaurará. Prepare la estructura de intercambio utilizando mkswap /dev/sda2, elimine los comentarios para el intercambio /etc/fstaby finalmente haga swapon -a. Mire usando swapon o el comando superior, el intercambio está activado.

Lo sé, es una explicación muy larga. Espero que sea utilizable para cualquiera. Tenga en cuenta que, en mi opinión, el sistema de archivos xfs es mucho mejor, desafortunadamente este fs no admite la reducción sin copia temporal en un lugar alternativo, pero la reducción se usa raramente. Es agradable, xfs ocupa muy poco lugar para sus propios metadatos, y es más rápido en muchos aspectos en comparación con ext4.

Otra sugerencia, mejor use algo de LVM como capa intermedia para la partición. después de eso, cambiar el tamaño es mucho más fácil. El rendimiento es comparable, por supuesto, puede usar una combinación de administración de HDD. puede usar en particiones sin formato comunes y LVM.

Znik
fuente
Muchas gracias a slm por buenas correcciones de idioma: D
Znik