Las particiones en Linux

A diferencia de windows, que suele usarse con todo el sistema en una sola partición, y ésta es llamada C:\ , y todos la adoran y cada año le ofrecen una cabra, linux puede (y es bueno hacerlo así) instalarse en varias particiones. Por eso es bueno que conozcamos al menos a grandes rasgos cómo se organiza el sistema de archivos de linux.

En primer lugar, aunque tengamos varias particiones y/o discos duros (esto es en el nivel físico), en el nivel lógico solo tendremos un árbol de directorios (que técnicamente será un grafo, pero no entraremos en esos detalles).
En linux tendremos la raiz del sistema: “/“, llamada en inglés root (no confundir con el usuario root), y de ahí “colgarán” el resto de directorios. Cuando tengamos una nueva partición, ésta no estará fuera de ese arbol de directorios (como ocurre en windows, que se le asigna un nuevo nombre, como D:), sino que la “montaremos” en un directorio en nuestro sistema de archivos (ésto también se aplicará a los cdroms y demás unidades externas, que las montaremos en un directorio).
Por ejemplo: tenemos un directorio llamado /mnt , que está vacío, y al “montar” una partición en él, todo lo que hay en la partición pasa a estar (lógicamente) dentro del directorio /mnt. No está en el directorio, pero si miramos dentro de éste, veremos el contenido de la partición.

(Si no te interesa la teoría, ve directamente al final)

Hay unos cuántos directorios que tienen que estar en la raíz, y que cumplen diferentes funciones, algunos de ellos son:

/bin: para programas esenciales (bash, tar, cat, chown…)
/boot: el kernel y lo que sea necesario para bootear el equipo.
/home: aquí estarán los directorios personales de los usuarios.
/dev: En este directorio hay “pseudo-archivos”, que represental los dispositivos del ordenador, por ejemplo: hay un /dev/input/mice que representa al ratón.
/etc: Archivos de configuración especificos del ordenador.
/lib: Bibliotecas esenciales para el sistema.
/sbin: Programas esenciales del sistema. Éstos, a diferencia de los de /bin, sólo estan en el PATH del usuario administrador.
/tmp: Archivos temporales, que se borran al reiniciar
/usr: Ésta es una especie de jerarquia secundaria, donde se encuentran casi todos los programas instalados en el ordenador.
/var: Datos variables

Todo esto que al principio puede parecer muy complicado, en realidad está perfectamente ordenado. El sistema de archivos de linux se empezó a estandarizar con el llamado File Systems Standard (FSSTND), que luego se desarrolló con el Filesystem Hierarchy Standard (FHS). Viene a ser un estándar para la organización del sistema de archivos. Se origina en la necesidad de homogeneizar las distintas distribuciones, para que tanto los desarrolladores como los administradores y los usuarios sepan dónde guardar y dónde encontrar cada cosa.

Dentro de ésta organización, no todos los directorios cumplen las mismas funciones. Algunos se modificarán constantemente (el directorio /tmp contiene temporales que se perderán cuando reinicies el sistema) mientras otros tienen datos fundamentales que no se cambian casi nunca y no pueden faltar (en /boot están los archivos necesarios para que el ordenador arranque), y ésto lo contempla el FHS.

Fundamentalmente se pueden hacer dos distinciones independientes entre los ficheros: “variables” o “estáticos” (variable vs. static) , y “compartibles” o “no compartibles” (shareable vs. unshareable) , -y perdón por la traducción a lo bruto-.

Los archivos “estáticos” son programas, bibliotecas, manuales, que normalmente no se modifican (salvo que actualices el sistema). Están ahí, fijos, para usarlos. En cambio “variables” son aquellos que cambian constantemente: archivos temporales, los archivos personales que escribimos y borramos a menudo, etc.

Los “compartibles” son aquellos que pueden ser usados por varios ordenadores al mismo tiempo, mientras que los “no compartibles” serán exclusivos de ese ordenador. Quizás esto sea menos intuitivo para quienes están acostumbrados a usar ordenadores individuales, pero en una red de ordenadores es probable que muchos o todos los usuarios utilicen archivos que están almacenados en un servidor.

Teniendo ésto en mente, es fácilmente comprensible que se desee guardar cosas distintas en particiones (o discos) distintos.

La primera de ellas es /boot . Ahí pondremos el kernel y algunos archivos que lo acompañan. Necesita muy poco espacio y es agradecido, habla poco y siempre llega puntual. Ahora mismo en mi equipo, con tres kernels (y uno sobra), ocupa 11mb. Digamos que 50 o 100mb son mas que suficientes, cosa ínfima en los discos actuales. En ordenadores antiguos es necesario que se encuentre cerca del inicio del disco para que pueda bootear. Aunque ahora no es necesario, no está de más hacer esta partición primero.

En /home estarán los directorios personales de los usuarios. Aquí la cosa se complica, ¿cómo sabemos cuánto van a necesitar los usuarios? Y si el usuario solo soy yo, ¿cuánto espacio quiero para mi? Seguramente todo lo posible. Por eso mi sugerencia es dejarlo para el final, todo lo que quede tras hacer espacio para el resto de particiones. Es especialmente útil tener los directorios home en una partición diferente: si algo sucede (y que el gran pastafari no lo permita), podrás borrar y reinstalar todo el sistema manteniendo los datos de usuario intactos.

El directorio /var es uno de los que cambian muy a menudo. Contiene justamente datos variables: las colas de impresion, correos, bases de datos, cache, temporales, etc. Puede hacerse bastante grande si tienes bases de datos y servidor web, porque se almacenarán ahí.

En /tmp se guarda algo de archivos temporales, aunque muy pocos en relación con /var/tmp (los archivos de /var/tmp se mantienen tras reiniciar el sistema, en cambio /tmp se borra).

El directorio /usr suele ser bastante grueso. Ahí estarán la mayoría de binarios (programas), bibliotecas, documentación, etc. Según el FHS es compartible y estático, pero dentro también está el subdirectorio /usr/src/, donde compilaremos normalmente el kernel y módulos, y por lo tanto ese directorio sí es variable (esto contradice el FHS que dice que no debería compilarse ahí) Ahora mismo mi /usr ocupa mas de 5gb.

Aparte de las particiones normales que hagamos para el sistema de archivos, tendremos que hacer una partición extra, que el sistema usará como memoria extra, y se llama swap. Esta partición no será visible para nosotros, ni falta que hace, y la usa el sistema como “ampliación” de la memoria ram del ordenador. Mucho se ha dicho sobre el tamaño óptimo de la swap, que si no debe superar 128mb, que si el doble de la ram… Realmente tendrá bastante relación con el equipo que tengamos, porque si tenemos muchísima memoria ram posiblemente nunca usemos la swap, y si tenemos muy poca ram, la swap será imprescindible; y también con la coyuntura: hace unos años 256mb era mucha ram, y hoy (año 2007) 1gb ya parece que se queda justo.
Personalmente, creo que 1gb de swap, en un ordenador actual de entre 512mb y 1gb de ram, es mas que suficiente.

En resumen:

Si quieres puedes instalar todo el linux en una sola partición (más la swap que tendrá su partición separada). Ésto es lo mas habitual entre principiantes, y no tiene por qué ir mal. Hoy en día no destines menos de 10gb a tu partición de linux, y para la swap entre 512mb y 1gb.

Si quieres dar un paso mas adelante en tu seguridad, haz por lo menos tres particiones: una para la raiz ( / ), donde estará todo el sistema, otra para los directorios de usuario ( /home ), y la tercera la swap, que como ya dije antes no la usas tú sino el sistema. Así te aseguras que tus datos se mantienen separados del resto, y es fácil reinstalar el sistema si es necesario. La cantidad de espacio dependerá de tus necesidades y de tu ordenador, pero a grosso modo, puedes calcular como mínimo unos 5gb para la raíz (recomiendo mas, 10gb ya estaría bien), entre 512mb y 1gb para la swap, y el resto para el /home. Ten en cuenta que redimensionar las particiones puede ser difícil después.

Y si quieres hacer un sistema realmente groso, tómate unos minutos para analizarlo y haz varias particiones. Esto es lo que yo he hecho, tras analizar el uso de mis dos ordenadores:

/var: en mi pc con servidor web y mysql ocupa 1,6gb actualmente. El otro pc sin servidor web ocupa menos de 400mb. Yo le pongo 5gb.
/usr: Aquí está casi todo lo que hay instalado en el pc. Me ocupa 5gb, y no sé que mas instalarle, incluso sobran cosas. Le he puesto 10gb.
/tmp: En mi ordenador suele tener unos pocos kb. Parece que la mayoría de los programas que uso utilizan /var/tmp. De todos modos es bueno que tenga su propia partición, así que le he puesto 100mb. Si tienes mucha memoria ram, éste directorio puede estar en un “disco virtual”, pero eso lo dejamos para otro dia.
Swap: 1gb me va bien.
/home: Todo el espacio que quede.

Y me queda pendiente la raíz y el boot. Tras analizar el resto de mi sistema, el resultado es que todo lo que queda son el directorio boot, root (el home del administrador, que nunca usaremos mas que para tareas administrativas), bin, sbin, dev, etc y lib, todos ellos ocupan muy poco y son necesarios para el funcionamiento mínimo del sistema, por lo que los dejo en la partición raíz, a la que le doy 500mb, que es el cuadruple de lo que ocupan.

¿Que cómo haces las particiones? Eso lo explico luego.

Para escribir esto he consultado diversas fuentes:
Filesystem Hierarchy Standard
HOWTO: Multi Disk System Tuning
Linux Partition HOWTO

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *