Buenas prácticas en el particionado de GNU/Linux (Parte 2): Avanzado
En esta segunda parte de la guía revisaremos algunos de los directorios del estándar FHS, aprenderemos a qué están destinados y conoceremos las ventajas que nos puede aportar separarlos de la partición raíz.
Antes de seguir quiero matizar que el particionado, como la mayoría de las cosas relacionadas con GNU/Linux, tiene un nivel de personalización extremo. Es por eso que seguramente no todo el mundo verá necesarias algunas de las cosas que se propongan en esta entrada, así como quizás haya gente que piense que hay 90 directorios más susceptibles de ser particionados y que no quedan recogidos en este texto. Yo repasaré en esta entrada los 4 que considero “más importantes” junto a los mencionados en la primera parte de esta entrega.
Los archivos de arranque de /boot
Empezamos con la revisión de los directorios con el que lo inicia todo, /boot. Este directorio contiene los archivos encargados del arranque del sistema, es decir, el cargador de arranque, kernel o initrd. La separación del directorio /boot, en la mayoría de los casos no atiende a razones actuales. Antiguamente se separaba /boot debido a restricciones en las BIOS, pero en los modelos actuales esto ha dejado de ser necesario. No obstante, hay varios motivos por los que podríamos querer separar nuestra partición /boot del sistema de ficheros raíz:
- Si nuestro cargador de arranque no lee el tipo de sistema de archivos empleado en nuestra partición raíz esta partición será de uso obligatorio. Esto pasa, por ejemplo, con Grub Legacy y LVM.
- Muy relacionado con el anterior, si tenemos cifrada la raíz del sistema también será de uso obligatorio la separación del sistema, puesto que nuestro cargador de arranque no tendrá la capacidad de leer dicha partición.
- Como sistema de recuperación ante desastres.
- Si bien por la información que he podido encontrar esto hoy en día no se aplica del todo, podemos utilizar un sistema de ficheros como ext2, que no tiene journaling, para intentar acelerar el arranque del sistema.
- Si por algún oscuro misterio queremos compartir /boot entre distintos sistemas GNU/Linux.
Si bien separar esta partición no nos aportará “grandes beneficios”, como herencia aunque sea, sigue siendo una práctica recomendada como podremos encontrar en la mayoría de Wikis de las distribuciones actuales. En el caso de que decidamos separarla, que nunca está de más, con dejarle 100-200MB de espacio será más que suficiente.
Los archivos variables de /var
En la carpeta /var encontraremos todo tipo de archivos de los cuales se espera que, en una ejecución normal del sistema, estén cambiando continuamente. Estos podrían ser logs, bases de datos, spool, cachés, temporales de e-mail, etc.
El directorio /var, en sistemas que actúan como servidores, suele ser siempre separado del sistema raíz por diversos motivos:
- Puesto que en esta partición es donde se alojan bases de datos y archivos a los que podemos necesitar tener buenos tiempos de escritura y lectura, podemos querer usar discos más rápidos que los que usamos para el sistema principal o sistemas de archivos más rápidos para reducir tiempos de acceso.
- Debido a la criticidad que pueden adquirir los archivos ubicados en este directorio podemos ubicarlo en discos que dispongan de medidas de seguridad más altas, como raids más fiables y discos de mejor calidad.
- En este directorio se contienen archivos que pueden experimentar un crecimiento muy rápido y en ocasiones descontrolarse. Separar la carpeta en una partición aislada es una buena forma de evitar que estos archivos acaben creciendo demasiado y dejando nuestro sistema principal sin espacio, con lo que esto puede conllevar en el sistema.
En resumen, separar /var del sistema raíz nos aporta velocidad, fiabilidad y seguridad.
Otra cosa que podemos tener en cuenta es que podemos realizar más de un particionado del directorio. Esto quiere decir que por un lado nos puede interesar separar /var/log y por otro /var/www para asegurarnos de que el directorio de logs no se acaba comiendo el espacio del servidor web o viceversa.
Hay que ser conscientes de que en una máquina de escritorio las ventajas pueden no ser demasiadas si no estamos corriendo algún tipo de servicio que haga uso intensivo de este directorio. No obstante, no sería la primera vez que por un mal funcionamiento del sistema el directorio /var/log se descontrolara en un sistema de escritorio.
Sobre el tamaño de la partición dependerá enormemente de los servicios que soporte la máquina y de cuanto uso den al directorio. Así, podrán ser necesarios unos pocos GB en máquinas de escritorio (hay que tener en cuenta de que aquí se almacena la caché de los gestores de paquetería) hasta cientos de ellos en servidores.
Los programas de /usr y /usr/local
En /usr es donde se ubican la mayoría de programas multiusuario. Esta carpeta, sobretodo en servidores, no necesita ser modificada a no ser que instalemos nuevos programas, por lo que para muchos administradores se convierte en una práctica habitual ponerla en una partición separada del sistema y montarla en solo lectura. Esto es especialmente útil para cerciorarnos de que ningún error ni ataque será capaz de alterar los binarios que contiene nuestra máquina.
Por otro lado, puesto que el directorio /usr es compartible podríamos tenerlo, por ejemplo, en un share NFS al que distintas máquinas atacaran.
El tamaño a ubicar en esta partición dependerá de la cantidad de aplicaciones que tengamos instaladas en nuestro sistema.
También puede ser útil tener en cuenta la carpeta /usr/local, una carpeta de similar estructura que /usr destinada a almacenar programas locales. Es una carpeta estática, que nos puede interesar mantener intacta después de un formateo de la máquina, por tanto también puede ser una buena idea separarla.
Los archivos temporales de /tmp
/tmp es el directorio donde nuestras aplicaciones almacenarán archivos temporales. Este directorio tiene la particularidad de que, como norma general, siempre será borrado tras un reinicio del sistema.
El principal motivo por el que nos puede interesar separar esta partición es para asegurarnos de que ninguna aplicación descontrole su uso de este directorio y acabe llenando el sistema de archivos temporales.
Hay que tener en cuenta que systemd por defecto utiliza tmpfs sobre el directorio /tmp. Otro uso por el que nos puede ser útil separar /tmp es para evitar que esto ocurra, puesto que si systemd detecta que tenemos /tmp en una partición separada no montará tmpfs por defecto. Esto puede ser de ayuda si necesitamos que nuestro directorio /tmp sea más grande que la mitad de la memoria RAM del sistema. A raíz de lo anteriormente comentado, en sistemas donde por defecto se usa tmpfs sobre el directorio /tmp, debemos ser conscientes de que este comportamiento ya implica de por si una separación del directorio /tmp en una partición (virtual) separada.
Hasta aquí esta pequeña aproximación sobre el particionado en GNU/Linux. Esto es una pequeña pincelada de lo que podemos realizar con nuestros sistemas. Si queréis ampliar información podéis dirigiros a las correspondientes Wiki’s de vuestras distribuciones donde seguramente encontraréis toneladas de información al respecto.