Esquemas de particionado

Hoy cumple 28 años el kernel Linux y tengo también al menos ya 13 años usándolo en casi todas las computadoras que uso. Empecé con Ubuntu con las versiones Edgy Eft (6.10) y Dapper Drake (6.06) en aquel entonces y pase por todos sus releases hasta Lucid Lynx (10.04) hasta que implementaron el escritorio Unity que nunca me gustó. Use temporalmente y poco otras distros como Gentoo y Debian en ese entonces hasta que migré a Arch Linux el cual uso desde 2010 en mis computadoras del día a día.

Hay un tema común en todas estas distros por el que uno pasa cada vez que reinstala o empieza una instalación de cero con alguna distro, el particionado del disco duro. Al ser GNU/Linux modular y versátil hay muchas formas de realizarlo tanto para optimizar el sistema como para aumentar la seguridad. Ya me ocurrió en mis inicios que deje todo enchorizado en una sola partición y esto me costó perder todos los datos por aquel entonces. Después de esa amarga experiencia, creo que no hay una sola vez en que no haya empleado al menos 2 particiones.

Con todo lo que he ganado de experiencia a lo largo de estos años, he encontrado una forma de mantener optimizado el número de particiones según su uso, combinado con medidas de seguridad que montan particiones como solo lectura o desactivan la ejecución de scripts.

/boot

En /boot se aloja el cargador de arranque y los distintos kernels que tengamos. Luego del arranque esta partición no es utilizada y debe ser leída de manera sencilla y directa por el BIOS para que inicie el sistema operativo, por esta razón no puede ser cifrada. En los sistemas actuales que emplean UEFI es necesaria esta partición en formato vfat en /boot/efi y almacena también cargadores de arranque y algunos archivos para el arranque con systemd. /boot y /boot/efi pueden estar separadas para tener más flexibilidad a la hora de hacer cambios sobre un sistema existente.

Se puede montar con la opción de solo lectura ro o directamente no montarlo noauto como medida de seguridad para evitar que un atacante pueda editar el arranque; sin embargo, al hacer esto se debe tener en cuenta el hecho que una actualización del cargador de arranque o del kernel directamente podría no ser instalada y obligarnos a remontar la partición antes de actualizar.

/

De la raíz cuelgan todos los otros directorios y es aquí donde están la mayoría de los archivos del sistema operativo. Una partición de 30 Gb suele ser suficiente para estos fines, pero en caso de tener un servidor web o base de datos que emplee el directorio /var, entonces este último valdrá la pena separarlo en una partición adicional.

/home

El directorio /home almacena los datos de usuario y suele crecer de manera exagerada al ser un directorio de uso diario. Su tamaño depende mucho del uso que le demos al sistema. Como es un sitio donde podemos escribir libremente, podemos montarlo con las opciones nosuid impidiendo así cierto tipo de ataques que involucran el flag setuid y también impedir la creación de ficheros de dispositivo con la opción nodev. Opcionalmente podemos limitar la ejecución de programas impidiendo el permiso de ejecución (x) con la opción noexec.

También podemos extender el sistema de permisos con reglas de control de acceso acl y atributos extendidos de usuario user_xattr pero esto ya sería para gestión avanzada como por ejemplo dar permiso al usuario de un servidor web para que acceda a un directorio situado en otro punto de montaje, pero restringiendo a la vez el acceso a los demás usuarios del sistema.

Otros

En un sistema de uso común, puede ser una computadora de escritorio o portátil, con solo tener los puntos anteriores suele ser suficiente. Pero si tenemos un sistema dedicado a sitios web o que almacena bases de datos, hay otras particiones que deberíamos considerar.

/var

/var/www Si tenemos un servidor web, todos los archivos que se sirvan estarán en este directorio. Incluso si servimos archivos muy grandes sería buena idea utilizar un sistema de archivos como xfs en lugar de ext4.

/var/lib/mysql es el sitio donde se almacenan las bases de datos y archivos relacionados. Se puede asignar un tamaño adecuado y como solo se escribe sobre ella, no serían necesarios permisos como de ejecución.

/var/log si queremos mantener separados los logs del resto este es el sitio ideal para asignar un punto de montaje.

swap

Dependiendo de como uno quiera optimizar el sistema hay varias formas de llevar la paginación. Una opción es llevarla a un disco SSD aunque en consecuencia esto acortaría la vida del SSD. En un sistema como amplia RAM se puede utilizar un HDD normal ya que su uso sería más infrecuente al haber suficiente memoria RAM. O como última opción también se puede emplear un archivo como swap.

/tmp

/tmp es un directorio temporal del sistema, por lo que el contenido de esta partición para mejor gestión podemos administrarlo como un ramdisk, o sea, un disco virtual en la memoria RAM. Al momento de escribir esta entrada el tamaño de mi carpeta /tmp asciende a unos 12 kB, por lo que un tamaño fijo de 512 MB es más que suficiente, claro que depende de su uso.

En esta tabla se resume el tamaño general, punto de montaje y opciones o atributos de montaje de las particiones que suelo usar:

Partición y punto de montajeOpciones de montaje en /etc/fstabTamaño
/defaults,discard,noatime,errors=remount-ro30 GB
/bootdefaults,noatime250 MB
/homedefaults,noatime,acl,user_xattr,nodev,nosuid
/tmpdefaults,nodev,nosuid,noexec,size=512m(ramdisk de 512 MB)
/var/wwwdefaults,noatime,acl,user_xattr,nodev,nosuiddepende del uso
/var/lib/mysqldefaults,noatime,acl,user_xattr,nodev,nosuiddepende del uso
swapswal menos la mitad de la RAM disponible

Mantener las particiones separadas permite trabajar mejor y recuperar más rápido un sistema ante un eventual desastre aparte que mejora la seguridad al utilizar ciertas opciones de montaje. Siempre hay que planear el particionado en la manera más conveniente para el uso que le daremos a nuestro sistema.


Moisés Serrano Samudio Médico de atención primaria, fotógrafo aficionado, apasionado de las tecnologías relacionadas con el EdTech y el eHealth y diseñador/desarrollador de sitios web de salud. Médico, apasionado del EdTech/eHealth y diseñador/desarrollador de sitios web de salud.
Moisés Serrano Samudio

@linkmoises

Médico de atención primaria, fotógrafo aficionado, apasionado de las tecnologías relacionadas con el EdTech y el eHealth.

Entradas relacionadas

  1. Aún no hay comentarios...

Deja una respuesta

Su email no será publicado. Required fields are marked *