Particionamiento Linux Qué son y cómo se crean las particiones en Linux Un tema que resulta complicado para la mayoría de los usuarios novatos (y para los no tan novatos también), es el de las particiones en Linux. Aunque la mayoría de las distribuciones modernas incluyen una herramienta de particionado que intenta hacer todo el trabajo por el usuario, y lo pone a tomar el mínimo de decisiones respecto a como se va a distribuir el espacio en el disco; algunas veces no queda más remedio que hacer un particionado manual, y entonces las cosas se complican un poco. A diferencia de Windows que usa como sistema de archivos NTFS para sus particiones, en Linux se usa el sistema de archivos ext. Su ultima versión es ext4, es el más moderno y el que usan por defecto la mayoría de distribuciones actuales. Cómo hacer el particionado manual en Linux Cuando instalamos una distribución de Linux, esta va a necesitar 3 particiones diferentes (aunque pueden ser solo 2, pero este es el particionamiento mas básico) Una partición primaria para el directorio raíz: / Una partición lógica para el área de intercambio: swap Y una partición lógica para los archivos, el directorio: /home La partición para el directorio home no es de uso obligatorio, puedes crear una partición para la raíz y otra para el área de intercambio, y tus archivos se almacenarán en el directorio raíz sin problemas. La partición para el área de intercambio es utilizada como un respaldo de la memoria RAM, para almacenamiento temporal. Para definir a gusto las particiones en cualquier instalador de una distro Linux, como por ejemplo: Ubuntu; debemos seleccionar la opciones de particionado avanzado o manuales. Particionar un disco es como dividirlo en discos más pequeños contenidos dentro de la misma carcasa. Las particiones pueden ser de dos tipos: primarias ó lógicas, las particiones lógicas se crean dentro de una partición primaria especial llamada extendida. Como mínimo en un disco debe de haber una partición primaria y como máximo puede haber cuatro particiones primarias ó tres primarias y una extendida, no puede haber más de una partición extendida en un mismo disco duro. Dentro de una partición extendida puede haber todas las particiones lógicas que queramos. Cada partición puede contener un sistema de archivos diferentes. 1
Un sistema de archivos establece los mecanismos para acceder a los datos que contiene y permite o no el acceso a dichos datos en determinadas circunstancias y en caso de alguna inconsistencia posibilita medios para su restauración. Existen diferentes sistemas de archivos y cada sistema operativo soporta diferentes sistemas de ficheros, algunos de ellos son los siguientes: Ext2 el primer sistema de archivos diseñado expresamente para Linux. Ext3 versión mejorada de Ext2, ampliamente utilizada en distribuciones Linux Ext4nuevo sistema de ficheros para Linux evolucionado de Ext3 algunas de sus ventajas con respecto a este último son: o Aumento del tamaño del sistema de ficheros a 1 Exabay = 2^20 Terabyte y del tamaño máximo por archivo (16 Tb). o Número ilimitado de directorios frente a los 32.000 de Ext3 o Mayor velocidad en la creación y borrado de ficheros XFS Implementado para sistemas Unix, rápido acceso para grandes cantidades de datos y altas velocidades, pero lento en ficheros pequeños. Se utiliza en grandes servidores y donde se maneje mucha información. ReiserFS Sistema de archivos diseñado e implementado por la empresa Namesys, liderado por Hans Reiser. Es soportado por Linux y otros sistemas operativos (algunos a través de implementaciones muy inestables). Fat16/Fat32 Sistemas Dos/Windows 95, Windows 98, este sistema de archivos produce una gran fragmentación del disco. NTFS sistema de archivos implementado para los sistemas operativos Windows Xp/2000/2003 server y Vista. A la acción de crear un sistema de ficheros dentro de una partición se le llama también formatear la partición. La particion primaria Es la primera y la mas importante, cualquier disco duro que se vaya a usa para almacenar un SO, forzosamente debe tener una particion primaria, pues son ellas de quienes se puede iniciar la carga del SO La particion extendida La particion extendida es un particion meramente de almacenamiento, en ella no se puede albergar un SO y arrancarlo desde ahí, pues este tipo de particion no es arrancable (booteable) Las unidades logicas Mientras que solo pueden existir en un disco duro 4 particiones primarias o 3 particiones primarias y 1 Extendida dentro de la particion extendida podemos crear mas espacios, llamados unidades logicas, por lo tanto podemos tener 3 particiones primarias, 1 Extendida, y dentro de la extendida varias unidades lógicas. 2
Ejemplo de un esquema. gparted GParted es un editor de particiones para Linux con el que podemos crear, borrar y redimensionar particiones. También podemos crear el sistema de ficheros que tendrá cada partición. Con la versión actual de Gparted 0.4.3 podemos crear los siguientes sistemas de ficheros: GParted Es muy fácil e intuitivo de usar, muchas distribuciones Linux lo incluyen en su live CD, entre ellas Ubuntu. Una vez que tenemos creadas nuestras particiones en nuestro disco y formateadas con el sistema de archivos que van a utilizar, para poder utilizar dichas particiones en Linux, tenemos que hacer un paso más, que es crear como mínimo el punto de montaje para el directorio raíz (/). Linux utiliza una estructura de directorios jerarquizada en forma de árbol invertido en donde todo es tratado como si fuera un archivo y para poder acceder a él debe estar acoplado (montado) dentro de esa estructura de directorios encabezada por el directorio raíz. 3
La interfaz gráfica de instalación de cualquier distro de linux nos permite montar el directorio raíz del sistema donde se instalarán los archivos más importantes del sistema operativo, pero también podemos crear otros puntos de montaje como /home (que es como la carpeta Mis documentos de Windows pero mucho más potente) en otra partición diferente, de esta manera si formateamos la partición donde está el sistema operativo, mis documentos (tú /home) quedará a salvo y tus datos no se perderán. En el tutorial sobre como instalar Ubuntu 9.04 paso a paso se explica cómo establecer puntos de montaje en la instalación del sistema operativo. He dicho antes que en Linux todo es tratado como un archivo, es decir, si tenemos una disquetera, un lector de DVD, un disco externo, etc. para que podamos acceder a estos dispositivos antes tienen que estar montados como un archivo más. Después de la instalación del sistema operativo podemos montar o desmontar los dispositivos o archivos que queramos, si no sabes cómo hacerlo mira el tutorial que hay sobre comandos Unix/Linux que hay montado en este mismo sitio web. Ejemplos: En la figura de abajo se muestra por medio del programa GParted un disco SCSI de 8 Gb que está dividido en cuatro particiones primarias formateadas con el sistema de archivos ext3 cada una de ellas. En la siguiente figura vemos el mismo disco con tres particiones primarias (sda1, sda2 y sda3), una extendida (sda4) que contiene a su vez tres particiones lógicas: sda5 (formateada con el sistema de archivos fat32), sda6 (formateada con ntfs) y sd7 (utilizada para la memoria de intercambio swap de Linux). 4
En la siguiente figura vemos lo que pasa cuando intentamos crear más de cuatro particiones primarias. En la siguiente figura vemos el mismo disco con tres particiones primarias (sda1, sda2 y sda3), una extendida (sda4) que contiene a su vez tres particiones lógicas: sda5 (formateada con el sistema de archivos fat32), sda6 (formateada con ntfs) y sd7 (utilizada para la memoria de intercambio swap de Linux). Para la instalación de Linux, ya sea de la distribución que sea, se necesita como mínimo dos particiones: la principal, donde se instalará el sistema operativo, formateada con el sistema de archivos que permita la distribución que vayamos a instalar y otra partición llamada swap (intercambio de memoria virtual), esta partición es utilizada como memoria RAM virtual cuando tenemos muchas aplicaciones abiertas y la memoria RAM de nuestro ordenador es insuficiente, de tamaño del swap se suele poner el doble de la memoria RAM, es decir, si tenemos 250 Mb de memoria RAM el tamaño del swap debería de ser aproximadamente de 500 MB, pero estas cifras están pensadas para equipos con poca memoria. Por ejemplo, si te has comprado un equipo nuevo con 4GB de memoria RAM, no es obligatorio que ponga 8GB para el swap. También hay que considerar que si instalas Linux en un equipo con poca memoria y haces mucho uso del swap, tu ordenador se volverá más lento ya que se tarda más tiempo en leer y escribir del disco duro que de la memoria física RAM, en este caso deberías reconsiderar el ampliar la memoria RAM de tu ordenador. 5
Uso del fdisk Un disco duro puede dividirse en varias particiones. Cada partición funciona como si fuera un disco duro independiente. La idea es que si sólo se tiene un disco, y se quieren tener, digamos, dos sistemas operativos en él, se pueda dividir el disco en dos particiones. Cada sistema operativo utilizará su propia partición tal y como se desea, y no tocará la otra. De esta forma los dos sistemas operativos pueden coexistir pacíficamente en el mismo disco duro. Sin particiones se tendría que comprar un disco duro para cada sistema operativo. El MBR, sectores de arranque y la tabla de particiones La información sobre cómo se particiona un disco se almacena en su primer sector (esto es, el primer sector de la primera pista sobre la primera superficie del disco). Este primer sector es el registro de arranque maestro (MBR) del disco; éste es el sector que la BIOS lee y arranca cuando se enciende la máquina. El registro de arranque maestro integra un pequeño programa que lee la tabla de particiones, comprueba qué partición está activa (es decir, marcada como arrancable), y lee el primer sector de esa partición, el sector de arranque de la partición (el MBR también es un sector de arranque, pero tiene una importancia especial y de ahí su nombre especial). Este sector de arranque contiene otro pequeño programa que lee la primera parte del sistema operativo almacenado en esa partición (asumiendo que es arrancable), y entonces la inicia. El esquema de partición no está integrado en el hardware, ni siquiera en la BIOS. Tan sólo es una convención que muchos sistemas operativos siguen. No todos los sistemas operativos la siguen, pero son las excepciones. Algunos sistemas operativos soportan particiones, pero ocupan una partición en el disco duro, y utilizan su propio sistema de particionamiento dentro de esa partición. El último convive pacíficamente con otros sistemas operativos (incluido Linux), y no requiere de medidas adicionales, pero un sistema operativo que no soporte particiones no puede coexistir en el mismo disco con otro sistema operativo. Como medida de precaución, es buena idea anotar la tabla de particiones en papel, de manera que si alguna vez se corrompe no tenga que perder todos sus archivos. (Una tabla de partición errónea puede corregirse con fdisk). La información relevante la proporciona el comando fdisk: $ fdisk -l /dev/hda Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders Units = cylinders of 855 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 1 1 24 10231+ 82 Linux swap /dev/hda2 25 25 48 10260 83 Linux native /dev/hda3 49 49 408 153900 83 Linux native /dev/hda4 409 409 790 163305 5 Extended /dev/hda5 409 409 744 143611+ 83 Linux native /dev/hda6 745 745 790 19636+ 83 Linux native $ Particiones extendidas y lógicas El esquema original de particionamiento para discos duros de PC permitía solamente cuatro particiones. Esto rápidamente se volvió demasiado escaso para la vida real, en parte porque algunas personas querían más de cuatro sistemas operativos (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, o Windows/NT, por nombrar algunos), pero principalmente porque algunas veces es buena idea tener varias particiones para 6
un sistema operativo. Por ejemplo, el espacio swap está generalmente mejor colocado para Linux en su propia partición en lugar de la partición principal por cuestiones de rapidez (vea más abajo). Para superar este problema de diseño, se inventaron las particiones extendidas. Este truco permite particionar una partición primaria en sub-particiones. Esta partición primaria subdividida es la partición extendida; las sub-particiones son las particiones lógicas. Se comportan como particiones primarias, pero se crean de diferente manera. No existen diferencias de rendimiento entre ellas. La estructura de particiones de un disco duro debe parecerse a la que aparece en la Figura 6.2, A sample hard disk partitioning.. El disco se divide en tres particiones primarias, la segunda de las cuales se divide en dos particiones lógicas. Una parte del disco no está particionada. El disco como un todo y cada partición primaria tienen un sector de arranque. Figura 6.2. A sample hard disk partitioning. Tipos de particiones Las tablas de particiones (aquella en el MBR, y las de las particiones extendidas) tienen un byte por partición que identifica el tipo de esa partición. Ésta intenta identificar el sistema operativo que utiliza la partición, o el que suele hacerlo. El propósito es evitar que dos sistemas operativos accidentalmente utilicen la misma partición. De cualquier modo, en realidad, los sistemas operativos no tienen en cuenta el byte de tipo de partición; por ejemplo, Linux no lo toma en consideración en absoluto. Incluso peor, algunos lo utilizan incorrectamente; por ejemplo, al menos una versión de DR-DOS ignora el bit más significativo del byte, mientras que otras no lo hacen. No existe un estándar para especificar lo que significa cada valor del byte, pero algunos comúnmente aceptados se incluyen en la Figura 6.3, Tipos de partición (obtenida del programa de Linux fdisk).. Una lista más exhaustiva está disponible en el programa de Linux fdisk. Figura 6.3. Tipos de partición (obtenida del programa de Linux fdisk). Hex code (type L to list codes): L 0 Empty 1e Hidden W95 FAT1 80 Old Minix 1 FAT12 24 NEC DOS 81 Minix / old Lin 2 XENIX root 39 Plan 9 82 Linux swap / So 3 XENIX usr 3c PartitionMagic 83 Linux 4 FAT16-32M 40 Venix 80286 84 OS/2 hidden C: 5 Extended 41 PPC PReP Boot 85 Linux extended 6 FAT16 42 SFS 86 NTFS volume set 7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set 8 AIX 4e QNX4.x 2nd part 88 Linux plaintext 7
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi f W95 Extd (LBA) 54 OnTrackDM6 a5 FreeBSD 10 OPUS 55 EZ-Drive a6 OpenBSD 11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP 12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS 14 Hidden FAT16-3 61 SpeedStor a9 NetBSD 16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs 18 AST SmartSleep 65 Novell Netware b8 BSDI swap 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid 1c Hidden W95 FAT3 75 PC/IX Archivos de dispositivo y particiones Cada partición y partición extendida posee su propio archivo de dispositivo. El convenio de nombres para estos archivos es que se añade un número de partición detrás del nombre del disco entero, con el convenio de que las particiones primarias van del 1 al 4 (independientemente de cuantas particiones primarias existan) y las particiones lógicas tienen números mayores que 5 (independientemente de la partición primaria en la que residan). Por ejemplo, /dev/hda1 es la primera partición primaria del primer disco duro IDE, y /dev/sdb7 es la tercera partición extendida en el segundo disco duro SCSI. Uso del Comando fdisk Opciones mas usadas: a,d,l,p,q,t,w Nota: w escribe en el disco. Solo usarla cuando se haga la instalación Con la opción q. se usa para hacer pruebas, una vez terminado se sale del fdisk sin hacer cambios. Usar opción p cada vez que se desee ver la partición 8
Luego se pueden eliminar todas las particiones usando d Seguidamente dar las opciones para la nueva partición. n Observar que se puede meter el tamaño inicial y final en cilindros. Generalmente el primer rango es el cilindro 1. (por defecto se puede dar <enter>) y luego poner el cilindro final o el tamaño en Mega (se puede en otra medide pero esta es la mas usual). Continuar asi hasta terminar las particiones. Elegir primaria en tal caso o extendida si se requiere. Ej: suse Linux usa 3 particiones Partición Tipo de sistema que se Sistema de fichero Tamaño sugerido montara usado /dev/sda1 Para /boot linux 512M /dev/sda2 Para /swap swap 512M /dev/sda3 Para el sistema de linux Resto del disco fichero Nota: este esquema es básico. Pero puede cambiar por ejemplo: 9
Partición Tipo de sistema que se Sistema de fichero Tamaño sugerido montara usado /dev/sda1 Para /swap swap 512M /dev/sda2 Para /boot linux 512M /dev/sda3 Para el sistema de linux Resto del disco fichero Ejemplo para suse: Ahora hay que establecer cual es la swap. Cambiándole el tipo de Id de la partición usando t. Si no se sabe el tipo se lista pulsando l. y se elije el código que se va a poner. Finalmente queda establecer la partición de arranque usando la opción a. (hay que observar que en este caso nadie tiene un * en la columna boot Después de dado el comando se observa que /dev/sda1 es la partición arrancable. O bootable que en nuestro caso es donde se montara /boot. 10
Particiones en GNU Linux Los discos duros son unidades periféricas, que se conectan a la placa base de nuestro PC, mediante conexiones (bus) IDE o SATA. Actualmente los discos sólidos son los que están, poco a poco, sustituyendo a los viejos discos rígidos, que hasta ahora predominaban en el mercado. Cuando instalamos un sistema operativo sobre ellos, se tienen que crear particiones, aplicando un formato de bajo nivel. Dichas particiones deben tener un sistemas de archivos o ficheros. El sistema operativo tratará cada partición como si fuese un disco independiente. Puntos de montaje Una vez ya sabemos que sistema de ficheros nos va mejor, tenemos que conocer los diferentes puntos de montaje que necesitamos. Las particiones se montan sobre directorios. Lo más básico es tener dos particiones, una para la unidad SWAP y la otra sobre la raíz del sistema o /. En la mayoría de instalaciones ésta elección es denominada para novatos Veamos primero como se divide el sistema directorios. Se parte siempre desde la raíz, y de allí cuelgan una serie de carpetas, que pueden tener subcarpetas y ficheros. Los principales son, de manera rápida: /bin Contiene los binarios, esto es, los ejecutables necesarios para el funcionamiento del sistema operativo. /boot Es donde están ubicados los ficheros necesarios para el arranque del sistema, pero no los de configuración. Aquí se almacenan todos los ficheros que cargan primero, justo antes de cargar el kernel, como por ejemplo GRUB o LILO. Es recomendable que tenga su propia partición. /dev Recordad que en todos los sistemas tipo UNIX, todo es un fichero. Por lo que los dispositivos de hardware también se tratan como si fuesen un fichero, y se encuentran almacenados aquí. Al acceder, por ejemplo, a una unidad Flash USB, estamos accediendo a su fichero, tanto en la lectura como en la escritura. /etc Es un directorio clave, ya que aquí se encuentran los ficheros de configuración del sistema operativo, aunque también se pueden complementar con algunos otros ficheros ubicados en /home. /home Su función es almacenar la totalidad de los ficheros de los usuarios, exceptuando root. Tal y como hemos visto en la línea anterior, también se ubican ficheros de configuración para cada usuario. /lib Contiene bibliotecas compartidas, necesarias para los ejecutables ubicados en /bin y /sbin /mnt Aquí se ubican los puntos de montaje de los periféricos, como discos duros externos. /media Es muy similar a /mnt y tiene las mismas funciones. /opt Aquí se ubican los programas que añaden los usuarios, diferentes de los del sistema operativo. /proc Se trata de un sistema archivos virtual. Devuelve información sobre diferentes procesos y aplicaciones que están funcionando en nuestro sistema operativo. /root Es el directorio del superusuario. /sbin Almacena ficheros ejecutables que sólo pueden ejecutar el usuario root y los administradores del sistema. /srv Algunas distribuciones utilizan éste directorio para ubicar ciertos servicios. Ejemplo de ello sería un servidor web /srv/www o un servidor ftp /srv/ftp. /tmp Es donde se almacenan los ficheros temporales. Por normal general al reiniciar el sistema se elimina la información ubicada aquí. /usr Contiene los ficheros de la mayoría de programas instalados. /var Ubica generalmente información que varía con el funcionamiento del sistema. También incluye en muchos casos los directorios raíz de servidores web o colas de correo. /sys Es similar a /proc, aquí podemos encontrar información del kernel, de las particones, etcétera. 11
Ejemplo de particionamiento Como todo en la vida depende. Es decir, por ejemplo, si vamos a utilizar el disco para una distribución GNU Linux o FreeBSD para nuestro PC, que sólo utilizaremos para el día a día, esto es, mirar correos, navegar por Internet y cosas por el estilo, supongamos que tenemos un disco de 512 GB de disco duro y 4 GB de memoria volátil, un particionado recomendable sería el siguiente: Lo ideal para la partición SWAP es asignarle el número de GB de memoria volátil multiplicado por dos. En éste caso sería 8 GB de espacio. Tal y como he comentado antes me gusta tener el directorio /boot por separado en una partición. No ocupa mucho espacio, realmente con 1 GB tendremos de sobra. Para que el usuario tenga espacio de sobra para sus películas, fotos, vídeos y otras cosas, le daremos a carpeta /home, 518 GB de espacio. A la raíz del sistema, donde irá todo lo demás, asignaremos el resto, esto es, unos 23 GB, espacio más que de sobra. Usando gparted seria algo asi NOTA: Hay que buscar en que distribución de partición es la mas adecuada dependiendo del tipo de Linux que se desea instalar. En algunos casos para la swap solo es necesario 1 o 2 Gb. Hay que recalcar que /boot tiene que ser marcado como arrancable o bootable. Una vez instalado el sistema, si utilizamos el comando fdisk, veremos el resultado: 12
En otros casos, por ejemplo, un servidor web, tendríamos que crear un punto de montaje independiente para /var o /usr, depende donde ubiquemos los proyectos webs. Particiones primarias y extendidas 13