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.