Particionamiento en un sistema Debian
Índice
1. Introducción
2. Particionamiento mínimo
3. Mis particiones
4. Herramientas de particionamiento
4.1. Logical Volume Manager (LVM)
5. Raid (Software)
5.1. Características de los discos Raid
5.2. Particionamiento Raid
5.3. Auto-detección del Raid
6. Referencias
1. Introducción
Una de las muchas dudas en el momento de instalación de un sistema GNU/Linux Debian es el realizar o no particionamiento del disco y en el caso de decidir realizarlo nos invade otra duda por así decirlo y es la de cuantas particiones y la asignación de disco a cada una de ellas, en este wiki no os aconsejaremos acerca de como realizar dichas particiones pero si os daremos la suficiente información para que decidas cual seria la mejor opción para tu caso especifico.
Cabe aclarar que la cuestión de particionamiento va directamente relacionada con el funcionamiento que se le vaya a dar a dicho sistema , es decir entran temas tales como seguridad, tamaños de archivos y también preferencias personales.
2. Particionamiento mínimo
Un sistema GNU/Linux Debian puede trabajar con una partición. Es decir en esta sola podemos alojar todo el sistema operativo incluyendo el área de intercambio (swap) en esta, puesto que es incluso posible forzar a Linux para que use un fichero determinado como espacio de intercambio, pero no es recomendable, También es a destacar que cuando la creamos aparte se puede hacer un mejor y mas eficiente uso de esta. Es decir en cuanto a particiones vendría al caso el dicho para gustos colores puesto que es totalmente personalizable y de acuerdo a necesidades especificas se escoge una de tantas opciones.
3. Mis particiones
El número de particiones, el tipo y el tamaño de estas, van directamente relacionadas con el uso que se vaya a dar al sistema. Es decir si el equipo que vamos a particionar es personal, comunitario, servidor y demás, En este sentido entra a ganar puntos el hecho de tener un sistema mas seguro.
Un punto importante es que GNU/Linux Debian se basa en el Estándar de jerarquía de los sistemas de ficheros (FHS) en lo que se refiere a directorios y nombres. Este estándar permite predecir a los usuarios y programas la localización de ficheros y directorios. En este todo se desprende el directorio raíz (/) el cual siempre debe contener físicamente las particiones /etc, /bin, /sbin, /lib y /dev, como requisito para arrancar el sistema.
A continuación os mostrare una lista con las características de los directorios para que según configuraciones especificas de vuestro sistema escojas un particionado que satisfaga tus requerimientos.
- /root: directorios de la cuenta del Administrador del sistema, contiene todos los programas para el super usuario. El espacio de este es directamente proporcional al número de paquetes que se deseen instalar es decir, depende mucho del uso que se le vaya a dar al sistema.
- /home: todos los usuarios guardarán sus datos en un subdirectorio de este directorio. El tamaño de éste depende del número de usuarios que tendrá en el sistema y el uso que haga cada uno de ellos en su directorio, puesto que al ser un directorio personal se tienden a almacenar archivos de audio, vídeo, texto, etc. Es recomendable dar un buen espacio en disco. En el caso de servidores este espacio puede limitarse un poco más.
- /usr: contiene todos los programas para usuarios (/usr/bin), bibliotecas (/usr/lib), documentación (/usr/share/doc), etc. Ésta es la parte del sistema de ficheros que requiere mayor espacio dependiendo este directamente del número de usuarios. Debe asignar al menos entre 500 MB y 1 GB de espacio de su disco. Debe incrementar el tamaño de esta partición en función del número y tipo de paquetes que desee a instalar, puesto que este directorio contiene una réplica de otros directorios de nuestro sistema orientados específicamente a cada usuario.
- /var: aquí se almacenan todos los datos variables tales como los artículos de noticias, correo electrónico, sitios web, el cache del sistema de empaquetado, colas de impresión, nuestros log's, etc. El tamaño de este directorio depende directamente del uso que haga del sistema, pero para los usuarios normales el valor estará fijado por la sobrecarga de la herramienta de gestión de paquetes, es decir dependiendo del número de paquetes a instalar el tamaño de esta partición debera ser mayor o menor.
- /tmp: como su nombre lo dice, aquí se almacenan normalmente datos temporales, en algunos casos específicos ciertas aplicaciones hacen uso de esta ubicación para almacenar ficheros de imágenes de gran tamaño temporalmente, éste es el caso de las herramientas manipulación de archivos.
- /boot: este contiene todos los archivos para bootear el sistema, como ser el kernel y los archivos necesarios para el booteador, no es necesario un gran tamaño.
- /mnt: en este crean normalmente los puntos de montaje de diferentes particiones. No requiere de gran tamaño.
- /opt: contiene paquetes de software adicionales, normalmente en este se instalan aplicaciones con su estructura completa o puede ser utilizado según gustos. Es decir el crear una particion o no de este directorio dependerá de si deseas usarlo o no, al igual que su tamaño.
Nota: para equipos de escritorio (personales) lo mínimo recomendable es separar el la raíz(/) del directorio /home. Para servidores lo mas recomendable es separar el maximo de directorios para evitar un escalamiento por parte de un atacante en los mismos.
4.1. Logical Volumen Manager (LVM)
En nuestra wiki se encuentra el siguiente artículo: Uso de LVM en Debian.
5. Raid (Software)
Los discos Raid podrian verse como un sistema de almacenamiento que usa múltiples discos duros entre los que distribuye o replica los datos. Dependiendo de su configuración o nivel y en general se trata de tener varios discos duros pero que nuestro sistema operativo los vea como uno solo.
Un punto a destacar es que la distribución de los datos en nuestro raid puede ser gestionada por hadware dedicado o software al igual que el agrupamiento o particinamiento del mismo, en este caso nos centraremos en la configuración por software.
5.1. Características de los discos Raid
Existen tres tipos de discos generales, y a la vez estos se subdividen según características especificas.
Raid Estándar:
- RAID 0: en este se distribuyen los datos equitativamente entre dos o más discos sin información de paridad que proporcione redundancia. El RAID 0 se usa normalmente para incrementar el rendimiento, aunque también puede utilizarse como forma de crear un pequeño número de grandes discos virtuales a partir de un gran número de pequeños discos físicos. Un RAID 0 puede ser creado con discos de diferentes tamaños, pero el espacio de almacenamiento añadido al conjunto estará limitado al tamaño del disco más pequeño.
- JBOD: Aunque este se caracteriza por ser un método popular de combinar múltiples discos duros físicos en un solo disco virtual. los discos son simplemente concatenados entre sí, de forma que se comporten como un único disco.
- RAID 1: En este se crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos. Esto resulta útil cuando el rendimiento en lectura es más importante que la capacidad.
- RAID 2: En este se dividen los datos a nivel de bits en lugar de a nivel de bloques y se usa un código de Hamming para la corrección de errores. Cabe resaltar que no es muy usado actualmente por el exceso de discos que se necesitan.
- RAID 3: Este usa división a nivel de bytes con un disco de paridad dedicado.
- RAID 4: Usa división a nivel de bloques con un disco de paridad dedicado. Necesita un mínimo de 3 discos físicos.
- RAID 5: Usa división de datos a nivel de bloques distribuyendo la información de paridad entre todos los discos miembros del conjunto. El RAID 5 ha logrado popularidad gracias a su bajo coste de redundancia. Generalmente, el RAID 5 se implementa con soporte hardware para el cálculo de la paridad.
- RAID 6: Este amplía el nivel Raid 5 añadiendo otro bloque de paridad, por lo que divide los datos a nivel de bloques y distribuye los dos bloques de paridad entre todos los miembros del conjunto.
- RAID 5E y RAID 6E: Se suele llamar RAID 5E y RAID 6E a las variantes de RAID 5 y RAID 6 que incluyen discos de reserva. Estos discos pueden estar conectados y preparados o en espera. En los RAID 5E y RAID 6E, los discos de reserva están disponibles para cualquiera de las unidades miembro. No suponen mejora alguna del rendimiento, pero sí se minimiza el tiempo de reconstrucción y las labores de administración cuando se producen fallos. Un disco de reserva no es realmente parte del conjunto hasta que un disco falla y el conjunto se reconstruye sobre el de reserva.
En este sentido, la concatenación es como el proceso contrario al particionado: mientras éste toma un disco físico y crea dos o más unidades lógicas, JBOD usa dos o más discos físicos para crear una unidad lógica. JBOD es parecido al ampliamente usado gestor de volúmenes lógicos LVM y es muy útil para sistemas que no soportan LVM/LSM. La diferencia entre JBOD y LVM/LSM es que la traducción de la dirección lógica del dispositivo concatenado a la dirección física del disco es realizada por el hardware RAID en el primer caso y por el núcleo en el segundo.
Raid Anidados: estos normalmente unen en un solo número los correspondientes a los niveles RAID usados, por ejemplo Raid 10 o Raid 1+0 seria una combinación de los discos Raid 1 y Raid 0
- RAID 0+1: es un Raid usado para replicar y compartir datos entre varios discos. Podría decirse que es un espejo de divisiones. En el cual primero se dividen los datos en los discos (Raid0) y despues se realiza un espejo de estos (Raid1).
- RAID 1+0: es lo contrario del Raid 0+1, es decir es una division de espejos.
- RAID 30: se caracteriza por división con conjunto de paridad dedicado, combina el Raid 3 con el Raid 0 en ese orden.
- RAID 100: a veces llamado también RAID 10+0, es una división de conjuntos RAID 10. El RAID 100 es un ejemplo de «RAID cuadriculado», un RAID en el que conjuntos divididos son a su vez divididos conjuntamente de nuevo. Es una combinación de Raid 1 con dos Raid 0
- RAID 50: a veces llamado también RAID 5+0, combina la división a nivel de bloques de un RAID 0 con la paridad distribuida de un RAID 5.
Raid's propietarios: estos ha sido desarrollados directamente por compañias especificas.
- RAID 1.5: es un nivel RAID propietario de HighPoint a veces incorrectamente denominado RAID 15. Por la poca información disponible, parece ser una implementación correcta de un RAID 1. Cuando se lee, los datos se recuperan de ambos discos simultáneamente y la mayoría del trabajo se hace en hardware en lugar de en el controlador software.
- RAID 7: 7 es una marca registrada de Storage Computer Corporation, que añade cachés a un RAID 3 o RAID 4 para mejorar el rendimiento
- RAID S o RAID de paridad: RAID S es un sistema RAID de paridad distribuida propietario de EMC Corporation usado en sus sistemas de almacenamiento Symmetrix. Cada volumen reside en un único disco físico, y se combinan arbitrariamente varios volúmenes para el cálculo de paridad. EMC llamaba originalmente a esta característica RAID S y luego la rebautizó RAID de paridad (Parity RAID) para su plataforma Symmetrix DMX. EMC ofrece también actualmente un RAID 5 estándar para el Symmetrix DMX.
- Matrix RAID: Matrix RAID (‘matriz RAID’) es una característica que apareció por vez primera en la BIOS RAID Intel ICH6R. No es un nuevo nivel RAID.
- Linux MD RAID 10: La controladora RAID software del kernel de Linux (llamada md, de multiple disk, ‘disco múltiple’) puede ser usada para construir un conjunto RAID 1+0 clásico, pero también permite un único nivel RAID 10 con algunas extensiones interesantes.
- IBM ServeRAID 1E: La serie de adaptadores IBM ServeRAID soportan un espejado doble de un número arbitrario de discos, como se ilustra en el gráfico.
- RAID Z: El sistema de ficheros ZFS de Sun Microsystems implementa un esquema de redundancia integrado parecido al RAID 5 que se denomina RAID Z. Esta configuración evita el «agujero de escritura» del RAID 5[1] y la necesidad de la secuencia leer-modificar-escribir para operaciones de escrituras pequeñas efectuando sólo escrituras de divisiones (stripes) completas, espejando los bloques pequeños en lugar de protegerlos con el cálculo de paridad, lo que resulta posible gracias a que el sistema de ficheros conoce la estructura de almacenamiento subyacente y puede gestionar el espacio adicional cuando lo necesita.
El Matrix RAID utiliza dos o más discos físicos, asignando partes de idéntico tamaño de cada uno de ellos diferentes niveles de RAID. Así, por ejemplo, sobre 4 discos de un total de 600GB, se pueden usar 200 en raid 0, 200 en raid 10 y 200 en Raid 5. Actualmente, la mayoría de los otros productos RAID BIOS de gama baja sólo permiten que un disco participen en un único conjunto.
Este producto está dirigido a los usuarios domésticos, proporcionando una zona segura (la sección RAID 1) para documentos y otros ficheros que se desean almacenar redundantemente y una zona más rápida (la sección RAID 0) para el sistema operativo, aplicaciones, etcétera.
En particular, soporta un espejado de k bloques en n unidades cuando k no es divisible por n. Esto se hace repitiendo cada bloque k veces al escribirlo en un conjunto RAID 0 subyacente de n unidades. Evidentemente esto equivale a la configuración RAID 10 estándar
Linux también permite crear otras configuraciones RAID usando la controladora md (niveles 0, 1, 4, 5 y 6) además de otros usos no RAID como almacenamiento multi-ruta y LVM2.
Esta configuración es tolerante a fallos de unidades no adyacentes. Otros sistemas de almacenamiento como el StorEdge T3 de Sun soportan también este modo.
5.2. Particionamiento Raid
Para el particionamiento en Raid podemos utilizar diferentes herramientas que se encuentran habilitadas especialmente para esto, se debe tener en cuenta el tipo de Raid que se va a crear puesto que cada uno requiere una configuración especifica de acuerdo a su forma de trabajo y uso.
En este artículo realizaremos el particionamiento a partir de las herramientas del kernel Linux.
Esto es lo que necesita para cualquiera de los niveles RAID:
- Un núcleo. Obtenga la versión 2.0.36 o un núcleo 2.2.x reciente.
- Los parches RAID. Normalmente existe un parche disponible para los núcleos recientes.
- El paquete de herramientas RAID (raidtools).
- Paciencia, comida de larga duración y nuestra bebida con cafeína favorita.
Para descargar el software correspondiente dado el caso que no lo tengamos vamos a ftp://ftp.fi.kernel.org/pub/linux;. Las herramientas RAID y los parches están en el subdirectorio daemons/raid/alpha. Los núcleos se encuentran en el subdirectorio kernel.
Herramientas
Las raid tools incluyen una serie de herramientas como:
- raidstart: inicia un array RAID
- raidstop: se utiliza para detener un array y poder hacer modificaciones en él.
- raidhotadd: se utiliza para añadir discos en caliente a un array, el RAID actuará en consecuencia ampliando la capacidad o - incluyendo el disco en el array redundante.
- raidhotremove: es el contrario del anterior, para elminar discos del array
Receta a seguir:
Parchee el núcleo, configúrelo para incluir el soporte del nivel RAID que quiera usar. Compílelo e instálelo.
A continuación desempaquete, configure, compile e instale las herramientas RAID.
Hasta ahora todo va bien. Si rearranca ahora, debería tener el fichero /proc/mdstat. Recuérdelo, ese fichero es su amigo. Vea lo que contiene haciendo cat /proc/mdstat. Le debe decir que tiene registrada la personalidad RAID (es decir, el modo RAID) correcta y que actualmente no hay dispositivos RAID activos.
Finalmente cree las particiones que quiere incluir en su grupo RAID.
Tipos de particiones Raid
Modo lineal
Si tienes dos o más particiones que no son necesariamente del mismo tamaño (pero que, naturalmente, pueden serlo) y quieres adjuntar unas con otras.
Prepare el fichero /etc/raidtab para describir su configuración. He preparado un /etc/raidtab para dos discos en modo lineal y el fichero se parece a esto:
raiddev /dev/md0
raid-level linear
nr-raid-disks 2
persistent-superblock 1
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1Aquí no se soportan discos de reserva. Si un disco muere, el array muere con él. No hay información que poner en un disco de reserva.
Creemos el array. Ejecute la orden:
mkraid /dev/md0Esto inicializará su array, escribirá superbloques persistentes y arrancará el array.
Échele un vistazo a /proc/mdstat. Debe ver que el array está funcionando.
Ahora, puedemos crear un sistema de ficheros, justo como hariamos con cualquier otro dispositivo, montarlo, incluirlo en nuestro /etc/fstab, etc.
RAID-0
Para crear un Raid 0 seguimos los siguientes pasos:
Preparamos el fichero /etc/raidtab para describir su configuración. Un raidtab de ejemplo se parece a esto:
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1Como en el modo lineal, los discos de reserva tampoco se soportan aquí. Un RAID-0 no tiene redundancia, por lo que cuando un disco muere, el array le acompaña.
Una vez más, ejecute simplemente
mkraid /dev/md0para inicializar el array. Esto debe inicializar los superbloques y poner en funcionamiento el dispositivo RAID. Eché un vistazo a /proc/mdstat para ver qué sucede. Debería ver que su dispositivo ahora está en funcionamiento.
/dev/md0 está listo para ser formateado, montado y usado como laboratorio personal.
RAID-1
Si tenemos dos dispositivos de aproximadamente el mismo tamaño y queremos que cada uno de los dos sea un duplicado del otro.
Finalmente, tiene más dispositivos que quiere guardar como discos de reserva preparados, que automáticamente formarán parte del duplicado si uno de los dispositivos activos se rompe.
Configuramos así el fichero /etc/raidtab:
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/sdb6
raid-disk 0
device /dev/sdc5
raid-disk 1Si tenemos discos de reserva, podemos añadirlos al final de la especificación de dispositivos como
device /dev/sdd5
spare-disk 0Nota: Recuerde configurar la entrada nr-spare-disks adecuadamente.
De acuerdo, ahora estamos listos para comenzar la inicialización del RAID. Se debe construir el duplicado, es decir, los contenidos (de todos modos, sin importancia ahora, ya que el dispositivo todavía está sin formatear) de los dos dispositivos se deben sincronizar.
Finalmente damos la orden para comenzar la inicialización del duplicado. :
mkraid /dev/md0Ahora comprobamos el fichero /proc/mdstat. Este debe decir que se ha puesto en funcionamiento el dispositivo /dev/md0, que está siendo reconstruido el duplicado y una cuenta del tiempo estimado para la terminación de la reconstrucción.
La reconstrucción se realiza usando el ancho de banda libre de E/S. De esta manera, su sistema debe ser capaz todavía de responder en gran medida, aunque los LEDs de sus discos deben parpadear lozanamente.
El proceso de reconstrucción es transparente, por lo que realmente puede usar el dispositivo aunque la duplicación esté actualmente en curso.
Intente formatear el dispositivo mientras la reconstrucción se esté realizando. Funcionará. También puede montarlo y usarlo mientras la reconstrucción se esté realizando. Naturalmente, si el disco equivocado se rompe mientras se está realizando la reconstrucción, no hay solución.
RAID-4
Si tenemos tres o más dispositivos de aproximadamente el mismo tamaño, un dispositivo es significativamente más rápido que los otros dispositivos y quiere combinarlos todos en un único dispositivo más grande, conservando todavía alguna información de redundancia. Finalmente, tiene varios dispositivos que desea usar como discos de reserva.
Configuramos el fichero /etc/raidtab así:
raiddev /dev/md0
raid-level 4
nr-raid-disks 4
nr-spare-disks 0
persistent-superblock 1
chunk-size 32
device /dev/sdb1
raid-disk 0
device /dev/sdc1
raid-disk 1
device /dev/sdd1
raid-disk 2
device /dev/sde1
raid-disk 3Si tuviéramos discos de reserva, se insertarían de forma parecida, siguiendo las especificaciones de discos RAID;
device /dev/sdf1
spare-disk 0como de costumbre.
Su array se puede inicializar con la orden:
mkraid /dev/md0como es habitual.
Debería ver la sección mke2fs de opciones especiales de mke2fs antes de formatear el dispositivo.
RAID-5
Si tenemos tres o más dispositivos de aproximadamente el mismo tamaño, y queremos combinarlos en un dispositivo mayor, pero conservando todavía cierto grado de redundancia para la seguridad de datos. O finalmente, tenemos varios dispositivos para usar como discos de reserva, que no tomarán parte en el array antes de que otro dispositivo falle.
Si usamos N dispositivos donde el tamaño del más pequeño es S, el tamaño de todo el array será (N-1)*S. El espacio que falta se usa para información de paridad (redundancia). De esta manera, si cualquier disco falla, todos los datos permanecerán intactos. Pero si dos discos fallan, todos los datos se perderán.
Entonces configuramos el fichero /etc/raidtab así:
raiddev /dev/md0
raid-level 5
nr-raid-disks 7
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/sda3
raid-disk 0
device /dev/sdb1
raid-disk 1
device /dev/sdc1
raid-disk 2
device /dev/sdd1
raid-disk 3
device /dev/sde1
raid-disk 4
device /dev/sdf1
raid-disk 5
device /dev/sdg1
raid-disk 6Si tuviéramos discos de reserva, se insertarían de forma parecida, siguiendo las especificaciones de discos RAID;
device /dev/sdh1
spare-disk 0Y así sucesivamente.
Un tamaño de segmento de 32KB es un buen valor por defecto para muchos sistemas de ficheros de propósito general de estas proporciones. El array sobre el que se utiliza el raidtab anterior es un dispositivo de 7 por 6 GB = 36 GB (recuerde que (N-1)*S = (7-1)*6 = 36). Contiene un sistema de ficheros ext2 con un tamaño de bloque de 4KB. Podría incrementar tanto el tamaño del segmento unitario del array como el tamaño de bloque del sistema de ficheros si su sistema de ficheros fuera o bien mucho mayor o bien si simplemente contuviera ficheros muy grandes.
Vale, ya hemos hablado bastante así que finalmente configuramos el fichero /etc/raidtab y revisamos si funciona.
Ejecutamos la orden:
mkraid /dev/md0y observe qué ocurre. Es de esperar que sus discos comiencen a trabajar como locos debido a que empiezan la reconstrucción de su array. Échele un vistazo a /proc/mdstat para ver qué está sucediendo.
Si el dispositivo se ha creado correctamente, el proceso de reconstrucción comenzará ahora. Su array no será consistente hasta que esta fase de reconstrucción haya terminado. No obstante, el array es totalmente funcional (excepto, por supuesto, para el manejo de fallos de dispositivos) y puede formatearlo y usarlo incluso mientras se esté reconstruyendo.
Consulte la sección mke2fs de opciones especiales de mke2fs antes de formatear el array.
Bueno, ahora que ya tiene su dispositivo RAID funcionando, siempre puede pararlo o rearrancarlo usando las órdenes
raidstop /dev/md0y
raidstart /dev/md0respectivamente.
En lugar de colocar éstos en ficheros de inicio y re-arrancar un número astronómico de veces hasta hacer que funcione, siga leyendo y haga funcionar la auto-detección.
5.3. Autodetección del Raid
Autodetección:
La autodetección permite que dispositivos RAID sean automáticamente reconocidos por el núcleo durante el arranque, justo después de que se realice la detección ordinaria de particiones.
Para que se cumpla esta auto-detección es necesario lo siguiente:
1. Todo el soporte necesario para autodetección (SCSI, IDE, RAID, etc) en el núcleo (no como módulo) o bien crear una imagen initrd, lo cual no es lo mas recomendable ;)
2. Debe haber creado los dispositivos RAID usando superbloques persistentes(que iniciaran nuestro array Raid).
3. El tipo de partición de los dispositivos usados en el RAID se debe establecer a 0xFD para esto usamos fdisk y establecemos el tipo de nuestro array Raid a fd, guardamos y listo!
Nota: Es importante que nuestro Raid no este funcionando cuando cambiemos los tipos de las particiones. Use raidstop /dev/md0 para parar el dispositivo.
Después de esto reiniciamos nuestro sistema y Wuala! - Obseraremos como va iniciando y cargando nuestro arreglo.
6. Referencias
- http://es.tldp.org/COMO-INSFLUG/COMOs/Software-RAID-Como/Software-RAID-C...
- http://es.wikipedia.org/wiki/RAID