Linux Instalar filesystem crecedor en Linux

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.880
Me pidieron instalar una máquina virtual con Rocky Linux 8 con un filesystem que pueda ampliarse más adelante.

Yo generalmente asigno unos cuantos gigas al home y mucho espacio en la raíz, para que las app y servicios los instalen en un /opt. La cosa es que el socio que me pidió la máquina virtual me dice que es probable que más adelante pida ampliar el filesystem en donde se instalará la aplicación y ahí tengo una duda:

¿Basta con poner mucho espacio en disco directamente en la raíz para que creen un directorio /opt? ¿Es posible más adelante ampliar el filesystem de la raíz?

¿o mejor poner un espacio suficiente para la raíz pero un volumen grande montado en el /opt, y ese volumen más adelante hacerlo crecer si es necesario?


adelante estudios.
 
Solution
Use LVM mijo, ejemplo clasico de la pega, disco ssd de 512 gb se particiona con LVM, se dejan 20 gb a la raiz, 10 al home, 10 a opt, 20 a /var/lib/docker, resto del espacio se deja "libre" en el lvm, luego cuando se necesite se asigna a la particion respectiva.

Si el disco ssd eventualmente se agota (asignastes todo el espacio) puedes perfectamente agarrar un HD normal, particionarlo con lvm, leugo agregarlo al volume group y asignarlo a la particion respectiva.

De esta forma puede que por ejemplo una parte de los datos de opt este en el ssd y otra en el HD

Soujiro

Fanático
Se incorporó
14 Enero 2008
Mensajes
1.433
Use LVM mijo, ejemplo clasico de la pega, disco ssd de 512 gb se particiona con LVM, se dejan 20 gb a la raiz, 10 al home, 10 a opt, 20 a /var/lib/docker, resto del espacio se deja "libre" en el lvm, luego cuando se necesite se asigna a la particion respectiva.

Si el disco ssd eventualmente se agota (asignastes todo el espacio) puedes perfectamente agarrar un HD normal, particionarlo con lvm, leugo agregarlo al volume group y asignarlo a la particion respectiva.

De esta forma puede que por ejemplo una parte de los datos de opt este en el ssd y otra en el HD
 
Upvote 4
Solution

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.637
Pero haz un LVM, de esa forma no importa cómo queda pq siempre podrás ampliarlo.

Saludos.

EDIT: Me ganó @Soujiro con una mejor respuesta más encima jajajaj
 
Upvote 0

Soujiro

Fanático
Se incorporó
14 Enero 2008
Mensajes
1.433
jajaja el maestro @yakko me enseño bien, en la pega al principio todos odiaban LVM por que les creaba particiones "chicas" pero luego aprendieron a ser mas ordenado con los datos y cuando empezamos a usar la magia de las snapshots para ciertas cosas lo amaron.
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
Me pidieron instalar una máquina virtual con Rocky Linux 8 con un filesystem que pueda ampliarse más adelante.

Yo generalmente asigno unos cuantos gigas al home y mucho espacio en la raíz, para que las app y servicios los instalen en un /opt. La cosa es que el socio que me pidió la máquina virtual me dice que es probable que más adelante pida ampliar el filesystem en donde se instalará la aplicación y ahí tengo una duda:

¿Basta con poner mucho espacio en disco directamente en la raíz para que creen un directorio /opt? ¿Es posible más adelante ampliar el filesystem de la raíz?

¿o mejor poner un espacio suficiente para la raíz pero un volumen grande montado en el /opt, y ese volumen más adelante hacerlo crecer si es necesario?


adelante estudios.
Venía a poner lo que dijo Soujiro básicamente.
En la pega nos pasa regularmente que dimensionan mal los requerimientos de un sistema y a los meses ya tenemos que estar ampliando disco. Si usas vmware, lo más sencillo es añadir un segundo disco al servidor, formatearlo para LVM, agregarlo al PV, luego expandir el VG y finalmente extender el LV :zippy.
 
Upvote 0

Miguelwill

I am online
Miembro del Equipo
MOD
Se incorporó
23 Febrero 2004
Mensajes
12.409
Venía a poner lo que dijo Soujiro básicamente.
En la pega nos pasa regularmente que dimensionan mal los requerimientos de un sistema y a los meses ya tenemos que estar ampliando disco. Si usas vmware, lo más sencillo es añadir un segundo disco al servidor, formatearlo para LVM, agregarlo al PV, luego expandir el VG y finalmente extender el LV :zippy.
si, en el trabajo hacemos lo mismo, ya no mas particiones directas

incluso si en vmware se aumenta el tamaño de un disco existente, es posible aumentar el tamaño de la ultima particion (idealmente la mas grande y miembro del LVM ), y despues "redimencionar" el PV
luego el VG queda con el espacio extra como disponible, y de ahi a redimencionar el LVM

saludos
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.880
lvm, vale.

Hace años me pasó que a estos socios les creé una máquina virtual con CentOS 6, poco espacio en el home y mucho espacio en la raíz para que instalen su app en el /opt, /u01 o lo que sea. La cosa es que estos tipos igual instalaron la app en el home :cussing (seguramente con next -> next -> finish) así que prontamente requirieron añadir espacio y puta, la asignación de espacio y particiones quedó más o menos así:

SJ4z17q.png




Después de las puteadas que les tiré cada vez que tenía que ampliarle el espacio en el home quiero dejarles un /opt con espacio y crecedor de manera ordenada.
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
lvm, vale.

Hace años me pasó que a estos socios les creé una máquina virtual con CentOS 6, poco espacio en el home y mucho espacio en la raíz para que instalen su app en el /opt, /u01 o lo que sea. La cosa es que estos tipos igual instalaron la app en el home :cussing (seguramente con next -> next -> finish) así que prontamente requirieron añadir espacio y puta, la asignación de espacio y particiones quedó más o menos así:

SJ4z17q.png




Después de las puteadas que les tiré cada vez que tenía que ampliarle el espacio en el home quiero dejarles un /opt con espacio y crecedor de manera ordenada.
O mejor su enlace simbólico.
Con rsync replicas todo el árbol de directorio de /home/pepitoporfiado a /opt/pepitoporfiado y después
ln -s /opt/pepitoporfiado /home/pepitoporfiado y listo :zippy
 
Última modificación:
Upvote 1

frosstatx

AMD EX-NV Y LINUX FANBOY
Se incorporó
27 Junio 2008
Mensajes
483
lvm y btrfs... es re fácil y rápido, en la planta lo hacemos bien seguido, bueno que se puede hacer en caliente y no hay que reiniciar nada
 
Upvote 0

hpf

Lector entusiasta
Miembro del Equipo
MOD
Se incorporó
7 Mayo 2011
Mensajes
372
ya dijeron LVM? igual ese Rocky Linux es un RHEL y usara LVM por defecto
Creo que más que utilizar LVM y sus virtudes. Es acompañar el proceso con un buen particionado, eso es fundamental para mantener la disponibilidad en la máquina.
Dejar separados puntos de montaje que puedan comprometer el sistema entero / /var /var/log /tmp /home /opt , etc... sí, le hablo a quien gusta de poner todos los niveles de log en debug/trace, sin rotar ni comprimir logs; o a los usuarios canallas que empiezan a bajar de todo en sus directorios de home.

LVM es maravilloso, una vez me tocó añadir un storage remoto como PV -> VG, y pasar toda la info (en caliente) desde un LV en disco local hacia el NAS. Ni se arrugó la máquina.
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
#supercorta

un servidor instalado sin LVM y sin el particionado que menciona @hpf es inaceptable y no se puede usar para producción.
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
lvm, vale.

Hace años me pasó que a estos socios les creé una máquina virtual con CentOS 6, poco espacio en el home y mucho espacio en la raíz para que instalen su app en el /opt, /u01 o lo que sea. La cosa es que estos tipos igual instalaron la app en el home :cussing (seguramente con next -> next -> finish) así que prontamente requirieron añadir espacio y puta, la asignación de espacio y particiones quedó más o menos así:

SJ4z17q.png




Después de las puteadas que les tiré cada vez que tenía que ampliarle el espacio en el home quiero dejarles un /opt con espacio y crecedor de manera ordenada.
la solución correcta pa esa maquina es borrarla e instarla de nuevo (no es chiste)
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.880
la solución correcta pa esa maquina es borrarla e instarla de nuevo (no es chiste)

Si, estamos en eso ahora. Justamente la pregunta del tema es para definir la nueva máquina virtual.

Les encargué a los desarrolladores que por favor instalen la huea en el /opt pues ahí les dejé un punto de montaje independiente y con gran tamaño, y que no vuelvan a instalar la huea en el /home por la crestamadre.
 
Upvote 0

Soujiro

Fanático
Se incorporó
14 Enero 2008
Mensajes
1.433
Pero como les dejas "chipe libre" a los desarrolladores pa que hagan hueas?
Aca fui pesado, la instalacion de softweare en los equipos se hace por medio de foreman y/o un ansible playbook. Si se ponen "creativos" y rompen su sistema por andar instalando hueas simplemente reinstalo todo con foreman/ansible. Despues que un par perdio data importante gracias a romper sus sistemas dejaron de hacer hueas y preguntan antes, instalando yo el programa que necesitan si es que no lo hacemos por medio de docker.

Y puta que a ahorrado dolores de cabeza esa huea.
 
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.880
Pero como les dejas "chipe libre" a los desarrolladores pa que hagan hueas?
Aca fui pesado, la instalacion de softweare en los equipos se hace por medio de foreman y/o un ansible playbook. Si se ponen "creativos" y rompen su sistema por andar instalando hueas simplemente reinstalo todo con foreman/ansible. Despues que un par perdio data importante gracias a romper sus sistemas dejaron de hacer hueas y preguntan antes, instalando yo el programa que necesitan si es que no lo hacemos por medio de docker.

Y puta que a ahorrado dolores de cabeza esa huea.

Era una máquina virtual para que ellos probaran instalar una huea de soporte de ellos, nada productivo. Yo les recordaba cada cierto tiempo que mantuvieran actualizado CentOS nomás y les monitoreaba el consumo de espacio por deferencia profesional (oe, se te va a llenar el filesystem), pero si se les llegaba a caer por la razón que fuera simplemente lo veíamos a medias sin apuro ni SLAs comprometidos por parte nuestra.
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
Ya!, aer, tengo un tiempito ahora si que voy a tratar de hacer un aporte como los de antaño.


El cómo es particionado un linux es sumamente importante por varios motivos, voy a tratar de describir los más importantes para que entiendan bien por que tanto show y tan nazi estricto con las particiones.

1) Seguridad: Por la estructura natural del árbol de directorios jerárquico de Linux/Unix, hay directorios que son sumamente sensibles y DEBEN ir SIEMPRE en un punto de montaje propio, un ejemplo de esto es el directorio "/tmp", para que este directorio funcione correctamente debe tener permisos 1777 (sticky bit y permisos de lectura, escritura y ejecución para TODOS), otro ejemplo es el directorio "/var", donde van a correr por defecto los archivos para varios servicios, por ejemplo, es el DocumentRoot para apache, también es el directorio donde se almacenan las bases de datos de prácticamente todos los motores (salvo oracle). Los usuarios (de sistema) dueños de esos servicios deben poder leer, escribir y en algunos casos ejecutar cosas desde esos directorios. Por ejemplo, si apache es atacado (como pasó en chilehardware.cl) y logran subir un archivo (una shell php), y el sistema tiene permisos de ejecución para el usuario apache en el directorio donde puede escribir (/var/www/html), pueden tomar control de la máquina. Eso se puede evitar con un permiso de montaje, impidiendo la ejecución desde ese punto de montaje o el uso de SUID o GID que pueda permitirle a un atacante escalar privilegios. Esto SÓLO se puede hacer si los puntos de montajes están separados, ya que si le ponemos la opción "noexec" a la partición de raíz para evitar que se ejecute código, el sistema operativo NO va a poder arrancar.

2) Alta disponibilidad: Linux es sensible al espacio libre en algunos puntos del árbol de directorios, algunas distros se comportan distinto, pero a todas les afecta, en algunos casos es extremo, por ejemplo un SLES 10 no va a bootear si el directorio "/tmp" está lleno y hay que rescatar la máquina de manera presencial. En todas las distribuciones el comportamiento es el mismo para particiones como "/var", los servicios que escriben en este punto de montaje se van a caer, otros servicios que se traten de reiniciar o levantar van a fallar cuando "/var" esté lleno ya que prácticamente todos deben crear un archivo de PID al iniciarse y por defecto este archivo se crea en /var/run y al no haber espacio y no poder crear su archivo de PID el servicio no puede iniciarse.

Al "compartimentar" los puntos de montaje podemos evitar que algún sistema llene un disco y afecte a toda la máquina. Un caso muy común de esto es el "/var/log" , que suele llenarse de logs por una mala configuración del sistema de rotación de logs y termina llenando todo el "/var" o peor aun todo el "/" en el caso de una pésima instalación sin puntos de montaje distintos ("a lo ubuntu")



Aquí es donde es crucial el LVM por varios motivos:

A) Tal como le pasó a zuljin, uno no sabe exactamente donde se va usar el espacio en disco de un servidor, puede que sea todo al "/var" o en "/home" (pésimo uso, pero pasa). Por lo que crear un esquema de particiones sin LVM usando particiones en duro es una apuesta al aire y que más encima no puedes modificar después y puede traer muchos problemas. Por esto es que es sumamente útil tener la opción de usar LVM y poder "agrandar" las particiones a voluntad.

B) Mantener el UPTIME a toda costa, LVM permite agregar nuevos discos a los VolumeGroup, agrandar particiones en caliente, con la maquina andando, los discos montados, las aplicaciones escribiendo y sin afectar en nada a la operación normal del servidor.

Para que esto funcione correctamente SIEMPRE debe haber espacio libre en el o los VolumeGroup, por dos motivos, las particiones se pueden agrandar en caliente, pero NO se pueden achicar en caliente. Además, al contrario de agrandar, achicar una partición es un proceso MUY delicado y es fácil que alguien con poca experiencia rompa la partición y se pierda toda la data.
Para achicar una partición es necesario que esté desmontada y esto no se puede hacer con todos los puntos de montaje, "/" y "/var" por ejemplo, son puntos de montaje que NO se pueden desmontar, para achicar esas particiones es necesario hacer reiniciar la maquina con un disco de rescate (liveCD por ejemplo) y desde ahí hacer el procedimiento, pero esto implica apagar el servidor y esto no es siempre posible y atenta con el primer mandamiento de los servidores, el UPTIME sagrado. Por este motivo aunque se instale un linux con las particiones "correctas" y con LVM, pero NO se deja espacio libre en el VolumeGroup, esta MAL instalado y debe reinstalarse la maquina.

Una instalación correcta de linux debe tener al menos los puntos de montaje básicos separados y usar el MENOR espacio posible para cada uno, dejando la mayor cantidad de espacio libre en el VolumeGroup, a medida que el server lo requiera se puede usar ese espacio libre para ir creando más puntos de montaje o agrandar los existentes.

Por los motivos mencionados antes, los puntos de montaje que deben ir separados SIEMPRE son:
- /boot (en una partición física, no LVM)

Todo el resto dentro del LVM
- /
- /var
- /tmp
- /home
- swap


Deseable también:
- /var/log

Y muchos otros dependerán de que esté instalado en el servidor, por ejemplo:
- /var/www/html (apache)
- /var/lib/mysql (mysql, mariadb)


Que tamaños usar?, lo mínimo posible, yo siempre instalo las versiones minimal y a medida que necesito algo instalo los paquetes necesarios, por favor NO instalen los server linux con las opciones full con escritorio, quake, buscaminas y cuanta huevada traigan, es un desperdicio de recursos y una potencial falla de seguridad.

Mis instalaciones normalmente tienen estos espacios. (rhel/centos 7/8 minimal)

- /boot 1Gb
- / 2Gb
- /var 4Gb
- /tmp 1Gb
- /home 200Mb
- /var/log 2Gb

El resto del espacio libre y se asigna cuando es necesario.


Un poco más arriba mencioné que la partición de boot queda en una partición física, esto es debido a que mbr/grub no es capaz de leer dentro de un LVM, por lo que la partición para bootear debe quedar afuera en una partición "normal", en el caso de UEFI/grub2 la cosa cambia, pero siempre es bueno tener acceso fácil a la partición de booteo en caso de emergencia, por lo que aun en esos casos sigo manteniendo la partición de booteo "a la antigua".


Espero que esto haya aclarado sus dudas. Besos sabor totolate para todes.
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
Pero como les dejas "chipe libre" a los desarrolladores pa que hagan hueas?
Aca fui pesado, la instalacion de softweare en los equipos se hace por medio de foreman y/o un ansible playbook. Si se ponen "creativos" y rompen su sistema por andar instalando hueas simplemente reinstalo todo con foreman/ansible. Despues que un par perdio data importante gracias a romper sus sistemas dejaron de hacer hueas y preguntan antes, instalando yo el programa que necesitan si es que no lo hacemos por medio de docker.

Y puta que a ahorrado dolores de cabeza esa huea.
eso a la larga es un forro, porque testear o desarrollar una app en un ambiente "mal instalado" va a requerir volver a probarlo en un ambiente "bien instalado", lo mejor es hacerlo bien de una sola vez.
 
  • Like
Reactions: hpf
Upvote 0
Subir