¿Cómo cambio el tamaño de las particiones usando la línea de comandos sin usar una GUI en un servidor?

45

¡Solo tengo acceso al servidor a través de un terminal y no puedo usar herramientas gráficas como GParted!
Quiero crear una nueva partición desde una parte de la raíz (aproximadamente 768mb) para el intercambio.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
Hamid FzM
fuente

Respuestas:

37

No puede reducir / editar una partición si alguna de las particiones del dispositivo de almacenamiento está montada. Entonces, para desmontar y editar el sistema de archivos raíz, el sistema operativo debe cerrarse. Luego, inicie en un sistema en vivo y edite la partición como se describe en otras respuestas.

Solución alternativa: archivo de intercambio

Como alternativa a la creación de una partición completa, un archivo de intercambio ofrece la posibilidad de variar su tamaño sobre la marcha , y se elimina más fácilmente por completo. El archivo de intercambio puede ser conectable en caliente . es decir, se puede agregar y quitar sin desmontar / apagar el sistema operativo.

  1. Cree un archivo de 512 MB llamado /swapfile. Este será nuestro archivo de intercambio.

    fallocate -l 512M /swapfile  
    

    O

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Establezca los permisos correctos (porque un archivo de intercambio de fácil lectura es una gran vulnerabilidad local):

    chmod 600 /swapfile
    
  3. Después de crear el archivo del tamaño correcto, formatee para intercambiar:

    mkswap /swapfile
    
  4. Active el archivo de intercambio:

    swapon /swapfile
    
  5. Edite /etc/fstaby agregue una entrada para el archivo de intercambio:

    /swapfile none swap defaults 0 0
    

Más detalles en arch linux wiki .

totti
fuente
¡Creo que esta es la respuesta más fácil y eficiente =)! ¿Hay implicaciones en el uso de un archivo en lugar de una partición?
Alaa Ali
2
Rendimiento ligeramente bajo si el archivo está fragmentado. No hay una ventaja de rendimiento para un archivo de intercambio contiguo o una partición, ambos se tratan de la misma manera.
totti
1
Creo que esta es la mejor solución. Como no está formateando, reduciendo o cambiando la partición (tablas), no hay riesgo de pérdida de datos.
R110
28

En primer lugar, es importante saber que no puede cambiar el tamaño para reducir su partición raíz si la está utilizando (esto se denomina reducción en línea). Solo puede crecer en línea. Esto es compatible con el resize2fscomando. Asumiré lo siguiente:

  • No desea perder su información en la partición raíz.
  • No tiene acceso físico al disco duro para usar un LiveCD. Esto puede aplicarse a un entorno virtual o remoto. En el caso de uno virtual, aún puede lograr arrancar desde un LiveCD si configura la VM para que arranque desde un LiveCD. Esto supone que la VM admite la salida de la GUI de escritorio desde donde ejecutaría la aplicación Gparted para cambiar el tamaño fácilmente. Pero como esto es menos probable, supongo que no puedes.

Hay 2 tipos de particiones que puede cambiar de tamaño, las particiones LVM o las particiones de Logical Volume Manager que admiten el cambio de tamaño en línea (Reducción / Crecimiento) desde la creación de la galaxia y las particiones estándar que la mayoría de nosotros usamos. En este momento, el único que tiene casi el 100% de soporte para cambiar el tamaño en línea completo (Shrink / Grow) es el sistema de archivos btrfs (que todavía está en desarrollo). Explicaré cómo hacer las particiones normales que la mayoría de nosotros usamos en el sistema de archivos ext4.

Redimensionando (creciendo) la partición

Para hacer crecer tu partición puedes hacerlo con la raíz montada. Para hacer esto simplemente haz:

sudo resize2fs /dev/sda1

Siempre que ya tenga el espacio vacío listo para fusionarse. Después, recomiendo reiniciar para que los cambios surtan efecto correctamente. El comando anterior cambiaría el tamaño al máximo permitido. Si desea cambiar el tamaño a un tamaño particular, simplemente agregue el tamaño al final:

sudo resize2fs /dev/sda1 25G

Tenga en cuenta que si desea especificar 25,4 GB, no puede usar el ".". tendrías que bajar una unidad de medida. En este caso, de GB a MB, se vería así:

sudo resize2fs /dev/sda1 25400M

De esta manera tendrá una partición de 25.4G

Cambiar el tamaño (reducir) la partición

Reducir la partición es un proceso de dos pasos que implica:

  • Reducir el tamaño del sistema de archivos en la cantidad necesaria.
  • Reducir el tamaño del dispositivo de bloque subyacente para que coincida con el del sistema de archivos.

Antes de reducir la capacidad de un sistema de archivos, debe reducir el tamaño del dispositivo de bloque (que puede ser una partición o un volumen lógico). Dado que esto no está disponible para ninguno de los sistemas de archivos ext *, no podrá reducirlo de 20 GB a 19.5 GB para crear el intercambio de 500 MB.

Incluso Ext4 no admite la reducción en línea. Si intenta hacerlo, obtendrá lo siguiente:

ingrese la descripción de la imagen aquí

Su única apuesta hasta donde yo sé es:

  • Instale otra versión de Ubuntu en el mismo servidor (en otra partición) que luego pueda usarse para reducir la partición raíz del servidor Ubuntu original.

  • Instale el servidor Ubuntu desde cero con el tamaño que realmente desea

  • Use Ubuntu Server Live Image para cambiar el tamaño de la partición. Para este caso, deberá acceder a esta pantalla:

    ingrese la descripción de la imagen aquí

    Y elija la opción Cambiar tamaño como se muestra en la imagen de arriba. Desde allí, seleccionará cuál será el nuevo tamaño, ya que desde aquí puede desmontar la unidad y reducirla si lo desea.

Como ayuda adicional, aquí está el soporte del sistema de archivos gparted http://gparted.org/features.php que proporciona una lista muy detallada de los admitidos e incluye si tienen redimensionamiento completo en línea. Btrfs está entre ellos.

Luis Alvarado
fuente
Tengo curiosidad, ¿hay otros sistemas de archivos que admitan la reducción en línea? zfs o btrfs tal vez?
Seth
He agregado un enlace en la parte inferior. El núcleo también debe admitir esto si el sistema de archivos debe cambiar el tamaño en línea correctamente.
Luis Alvarado
Tengo un servidor ubuntu en la máquina vmware y su tamaño de disco es 120G. Pero después de usar la primera solución, aparece este error: el sistema de archivos ya tiene 27262720 bloques de longitud. ¡Nada que hacer!
Dr.jacky
1
Gracias @ Mr.Hyde. Hubo varios problemas con Workstation 10 e incluso 11. Recomendaría 12 y para Ubuntu también actualizaría al último o al nuevo LTS porque también hubo algunos problemas. En mi caso tengo VMware workstation 12.0.1 y Ubuntu 15.10 64 bit.
Luis Alvarado
3
Desde la página de The resize2fs program does not manipulate the size of partitions.
manual de
6

La respuesta depende de si puede desmontar la partición para reducirla o no. En su caso, probablemente no pueda desmontar la partición. En Linux (UNIX / MAC OS), montar una partición se refiere al uso del sistema de archivos y asignarlo al punto de montaje (en su caso /). Desmontar significa que deja de usar el sistema de archivos y elimina la asignación al punto de montaje. No puede desmontar el sistema de archivos que contiene su sistema operativo en ejecución.

Si la partición se puede desmontar

Supongamos que desea reducir una partición ext4 de 200 GB /dev/sda4montada en /data. Actualmente contiene música y películas o similares, por lo que puede desmontarlo temporalmente. Desea crear un intercambio de 4GB.

sudo umount /dev/sda4

para desmontar la partición.

sudo resize2fs /dev/sda4 196G

para cambiar el tamaño del sistema de archivos ext4 a 196 GB, suponiendo que haya suficiente espacio. Ahora, debes reducir la partición. Actualmente creo que debe usar cfdiskpara eliminar la partición existente y volver a crear una partición más pequeña en su lugar. Entonces también puede crear una nueva partición para el intercambio.

sudo cfdisk /dev/sda 

le dará una interfaz gráfica de usuario basada en texto para inspeccionar su tabla de particiones. Le recomendaría a printla tabla de particiones a un archivo o pantalla en ese punto, y tome nota de la configuración actual como copia de seguridad. Luego puede seleccionar /dev/sda4y deletela partición. En su lugar, free spacese mostrará. Úselo newpara crear una nueva partición con 196 GB en su lugar y configure el tipo en ext4. Luego, muévase al espacio libre final y cree la partición de intercambio de 4GB con tipo swap. Nota: No probé estos comandos, ya que no puedo jugar con mi /en este momento.

Si la partición no se puede desmontar

No puede reducir una partición ext3 / 4 montada (consulte la página de manual de resize2fs). Mientras ejecuta su sistema operativo /, no puede desmontarlo /. Eso significa que debe iniciar otro sistema operativo (por ejemplo, desde una memoria USB) para hacer los cambios.

En su caso, es un servidor remoto (en KVM muy probablemente), por lo que es posible que no pueda iniciar desde USB / una imagen de sistema operativo en vivo. Puede haber otras formas de cambiar la partición desde su proveedor de vServer a través de una GUI de administrador. Creo que esa es tu mejor apuesta actualmente.

noleti
fuente