¿Qué es la paridad en una configuración de RAID?

Bueno, mi última entrada había sido explicar qué es un RAID y raíz de eso me han preguntado otra cosa ¿Qué es la paridad?

Bueno, la información de paridad es un tipo de redundancia que nos permite recuperar los datos al vuelo en caso de que falle algún disco. Esto también lo permite una copia en espejo (RAID 1), pero con una diferencia: En el artículo anterior veíaimos que en un RAID 1 tenemos todo un disco ocupado con los datos redundantes, en cambio en un RAID 5 decíamos que solo ocupábamos el equivalente a un disco para almacenar la paridad, si tenemos cuatro discos aprovechamos el espacio de 3 ¿Qué brujería es esta? Pues una brujería matemática.

La información de paridad es una informacion calculada operando con el resto de datos de la misma división. De esta forma si se rompe un disco podemos recuperarlos comparando los datos que tenemos con los de paridad. Por poner un ejemplo simplificado, pensemos en álgebra sencilla. Imagina que calculásemos la paridad sumando los valores de los sectores de una misma división: El valor del sector 1 sería 1, del sector 2 sería 2, del sector 3 sería 3 y la paridad sería su suma ( 1+2+3=6 ). Si se rompiese el disco que conteía el sector 2 tendríamos esto en nuestros discos: 1+X+3=6. Podemos resolver la ecuación para saber que X era 2 antes de tener que cambiar el disco. Aunque el cálculo de paridad es realmente más complejo, esencialmente sería algo así.

Los sistemas de paridad simple más sencillos suelen usar la operación XOR para hacer estos cálculos a nivel de bit. Los sistemas más complejos, por ejemplo la doble paridad del RAID 6, utilizan operaciones más complicadas como un código Reed-Solomon u operaciones sobre un campo de Galois concreto. El requerir operaciones más complejas para calcular la paridad provoca que la velocidad de escritura sea menor, a cambio de conseguir una mayor tolerancia a fallos ya que podrían fallar hasta dos discos sin que perdamos datos.

Tipos de RAID más comunes

Me pregunta un amigo que és un RAID así que ya me ha dado una excusa para escribir una entrada sobre esto: RAID es el acrónimo de Redundant Array of Independent Discs, que en castellano sería Matriz Redundante de Discos Independientes. Y si ahora acabo aquí con razón te quejarías de que el título del post es engañoso. Una vez visto el significado vamos a explicarlo: el RAID es un sistema de almacenamiento que utiliza varios discos duros de forma conjunta para almacenar y replicar la información. Existen distintos tipos de configuraciones según busquemos mejorar la velocidad o la seguridad de nuestros datos, o el balance más equilibrado entre ellas. Vamos a ver cuáles son los tipos más habituales, ilustradas con unos gráficos sacados de la wikipedia:

RAID 0

También llamado Stripped Volume. Es uno de los tipos más básicos de RAID y requiere de solo dos discos. Cuando lo configuramos así ambos discos funcionan como uno solo, sumando sus tamaños, y la información se distribuye de forma equitativa entre ambos discos. Esto duplica la velocidad de escritura y de lectura pero reduce la tolerancia a fallos: si se estropea uno de los discos perderemos todos los datos pues no hay paridad ni respaldo.

RAID 1

También llamado Espejo, o Mirror en inglés. Como el RAID 0 requiere solo de dos discos, ambos del mismo tamaño. Básicamente lo que se hace en esta configuración es escribir los mismos datos en los dos discos, uno sería el “espejo” del otro. El gran problema de este tipo de RAID es que solo podemos usar la mitad del espacio disponible pues la otra mitad estará dedicada a replicación, como ventajas nos da una pequeña mejora en la velocidad de lectura y una gran tolerancia a fallos: si falla uno de los discos tenemos todos los datos en el otro que, además, se volverán a duplicar cuando sustituyamos el disco roto.

RAID 5

El RAID 5, o de paridad distribuida, es uno de los más usados en entornos empresariales por su buena combinación de rendimiento, aprovechamiento de discos y tolerancia a fallos. Aquí ya necesitaremos al menos 3 discos para empezar a trabajar. Con esta configuración cada vez que se escribe un bloque de datos se escribe tambien un bloque de paridad en su misma división. Esto permitirá que en caso de que rompa uno de los discos los datos puedan recuperarse al reconstruir el raid, aunque si rompiesen dos discos ya sí perderíamos toda la información. Respecto al RAID 1 se aprovecha más espacio, pues dispondríamos de un espacio igual al número de discos menos uno: por ejemplo con 4 discos de 2 teras tendríamos 6 teras disponibles. También conseguimos una mejora de la velocidad de lectura en una proporción similar, aunque no así en la escritura. La cantidad de discos que se puden montar en RAID 5 es teóricamente ilimitada, pero hay que tener en cuenta que cuantos más discos tenga la matriz más probabilidades hay de que falle uno.

RAID 6

Similar al RAID 5 pero añadiendo un segundo nivel de paridad. Esto permitiría recuperar los datos en caso de que fallen dos de los discos, aunque en lugar de sacrificar el espacio de un disco para paridad sacrificaríamos el de dos. Para la configuración del ejemplo anterior, 4 discos de 2 teras, tendríamos 4 teras disponibles en lugar de 6. Aunque logra una mejora en la velocidad de lectura algo menor que la del RAID 5 penaliza la escritura al tener que hacer más cálculos de paridad. Puede ser más recomendable que un RAID 5 si se quiere utilizar un número grande de discos al tener una mayor tolerancia a fallos.

RAID 10

El RAID 10, o RAID 1+0, es básicamente una combinación de un RAID 1 y un RAID 0. Es una configuración muy popular a la hora de montar servidores de bases de datos por su buena combinación de velocidad con tolerancia a fallos. Requiere al menos cuatro discos y han de ser siempre un número par. Básicamente se monta primero cada par de discos haciendo un RAID 1, con uno replicando al otro, y después se hace un RAID 0 sobre esos conjuntos de discos. Es bastante robusto pues podrían fallar a la vez un disco de cada par sin perder datos. Existe también una opción similar pero a la inversa que sería el RAID 0+1, pero es poco utilizado por tener una menor tolerancia a fallos. También, con un mayor número de discos, podríamos hablar de un RAID 100: consiste en coger dos matrices de discos en RAID 10 y aplicar sobre ellas un RAID 0 a mayores, o de un RAID 101: lo mismo pero aplicando un RAID 1 a las matrices en RAID 10.

Existen más configuraciones que las aquí citadas, tanto básicas como combinadas (RAID 2, RAID 3, RAID 4, RAID 30, RAID 50…). puedes verlas todas en el artículo de Wikipedia del que saqué las imágenes de ejemplo, donde también tienes explicaciones más detalladas de algunas de las configuraciones aquí explicadas.

Linux: Ejecutar comandos desde el historial con el operador !

El operador ! en la consola de Linux además de ser el operador lógico de negación también nos permite ejecutar comandos que hayamos llamado previamente desde el historial.

Por un lado podemos hacerlo en base a su número en el historial. Si ejecutas el comando history verás una lista de los comandos ejecutados y su número. Si después ejecutas ! seguido del número ejecutará de nuevo ese comando. Por ejemplo, si quieres usar de nuevo el comando que en el historial tiene el número 1501

!1501

Otra posibilidad es ejectuar los comandos seleccionando en orden inverso de ejecución. Si al comando ! le pasamos un número negativo ejecutará el comando que ejecutamos hace ese número de comandos. Me estoy liando al explicarlo, así que os pongo tres ejemplos. El primero es ejecutar el último comando que ejecutamos previamente:

!-1

¿Y si queremos ejecutar el penúltimo?

!-2

¿Y si queremos ejecutar el sexto por la cola?

!-6

Finalmente tenemos la opción de usar !! para lanzar el último comando que ejecutamos pero modificando parámetros. Imagina que tienes que ejecutar un comando muy largo como root pero te has olvidado de loguearte como tal. Pues podrías hacer lo siguiente y no tendrías que volver a escribir todo el comando:

su -c !!

Configuración de la tarjeta de red en Virtual Box

Una máquina virtual de Virtual Box nos permite configurar hasta 8 tarjetas de red distintas. Desde el entorno gráfico podremos configurar hasta cuatro, necesitando usar línea de comandos para configurar la otra mitad.

Por defecto el hardware virtualizado será una tarjeta AMD PCNet FAST III, aunque también tenemos la opción de cambiarlo por un adaptador de la familia Intel PRO/1000 si fuera necesario por temas de drivers en nuestro sistema operativo invitado. La lista de tarjetas disponibles sería esta:

  • AMD PCNet PCI II (Am79C970A)
  • AMD PCNet FAST III (Am79C973)
  • Intel PRO/1000 MT Desktop (82540EM)
  • Intel PRO/1000 T Server (82543GC)
  • Intel PRO/1000 MT Server (82545EM)
  • Paravirtualized network adapter (virtio-net)

Desde ese panel también podremos cambiar la MAC, lo que nos resultará útil para realizar tests de seguridad o para usar el Team Viewer de forma indefinida sin pagar licencia (me han contado, señoría, yo nunca selojuro…). Basta con pulsar el botón de recargar al lado de la dirección MAC y nos asignará una nueva.

En cuanto al modo de conexión hay seis opciones:

  • No Conectado: Simplemente emula el comportamiento del equipo si la tarjeta de red estuviera presente pero con el cable desconectado.
  • NAT: En modo NAT, Virtual Box emulará un router entre el exterior y el sistema operativo invitado. Este poseerá un servidor DHCP sirviendo hacia el invitado y mapeando el tráfico de la máquina virtual de forma transparente para el usuario. Cada máquina en modo NAT tiene su propio router por lo que estarán en redes aisladas: las máquinas con tarjetas en NAT no se pueden ver entre si.
  • NAT Network: Funciona de forma similar al modo NAT con la diferencia de que Virtual Box en este caso emulará un mismo router para todas la máquinas, lo que implica que podrán verse entre sí como si estuvieran todas en la misma red.
  • Bridged: El modo Briged, o puente, simula que la tarjeta virtual está conectada a la misma red que la tarjeta del equipo anfitrión, por lo que ambas se verán como si fuesen miembros de la misma red física.
  • Red Interna: Este modo nos permite configurar una red aislada de máquinas virtuales, que en principio no tendría salida hacia el exterior. Para poder conectar esta red a internet tendríamos que configurar en algún equipo una segunda tarjeta en modo NAT o Bridged para que disponga de salida a través del anfitrión.
  • Solo Anfitrión: El último modo nos permite configurar una red aislada similar al modo Red Interna pero con la salvedad de que en este modo el equipo anfitrión también formaría parte de la red.

Existe un modo más, definido como Generic Driver que nunca he utilizado. Creo que permite cargar drivers de algunos packs de expansión.

¿Qué significa que un teléfono o tablet es IP68 o IP69K?

Me preguntaba un amigo el otro día que significaba IP68 porque le habían ofrecido un teléfono Ulefone que en su descripción destacaba esa característica. IP será la abreviatura de Ingress Protection, protección de entrada en castellano y se trata de un estándar internacional para medir y certificar la resistencia de un dispositivo electrónico ante cuerpos extraños. Este estándar es definido y regulado por la normativa IEC 60529 (equivalente a la EN 60529 de la Unión Europea).

El primer número define el nivel de resistencia ante intrusiones o cuerpos sólidos:

  • X: Implica que no hay datos disponibles
  • 0: No hay ningún tipo de protección ante el acceso o el contacto con cuerpos sólidos
  • 1: Protección contra cuerpos mayores de 50 milímetros de diámetro.
  • 2: Protección contra cuerpos mayores de 12.5 milímetros de diámetro y 80mm de longitud. Por ejemplo, un dedo podría penetrar dentro del dispositivo
  • 3: Protección contra cuerpos mayores de un diámetro de 2.5 milímetros. El dispositivo podría ser penetrado por algunas herramientas o cuerpos de más de ese tamaño.
  • 4: Protección contra cuerpos sólidos de más de un milímetro de diámetro. El dispositivo solo podría ser penetrado con algún tipo de hilo o con herramientas de precisión.
  • 5: Protección contra polvo grueso, arena, etc. Puede entrar una cantidad de polvo en el dispositivo pero no suficiente para dañarlo.
  • 6: Dispositivo totalmente estanco al polvo.

El segundo número lo que marcaría es su nivel de estanqueidad ante el agua:

  • 0: Sin protección.
  • 1: Protegido contra la condensación
  • 2: Protección contra gotas de agua que caen con un ángulo de 15º sobre la posición normal del dispositivo, testeado con cuatro ejes.
  • 3: Protección contra gotas de agua que caen con un ángulo de 60º sobre la posición normal del dispositivo, testeado con cuatro ejes y con agua vertida en forma de spray.
  • 4: Protegido contra salpicaduras en cualquier dirección
  • 5: Protegido contra chorros en cualquier dirección.
  • 6: Protegido contra chorros y olas.
  • 7: Protegido contra una inmersión total durante un corto espacio de tiempo.
  • 8: Protegido contra una inmersión total durante un largo espacio de tiempo. Generalmente es testeado de 3 a 1.5 metros de profundidad durante 30 minutos.

¿Y la IP69K?

Pues en este caso iría un paso más allá en cuanto a estanqueidad. Fue regulada originalmente por el estándar alemán DIN 40050-9, que posteriormente sería substituído por la normativa ISO 20653. En el estándar EN 60529 sería IPX9.

Básicamente IP69K testearía la resistencia del dispositivo ante líquidos a alta presión y alta temperatura, con agua a 80 grados, a una presión de entre 80 y 100 bares a una distancia de 10 o 15 centímetros desde cuatro ángulos distintos, aplicando 30 segundos por cada ángulo.

Así que si necesitas un equipo electrónico para trabajar en condiciones duras, de polvo extremo, humedad extrema, arena, etc… buscar un dispositivo que cumpla estos estándares sería una buena idea.

Collapse OS: ¿Un sistema operativo para un futuro Mad Max o algo más?

Virgil Dupras es un programador quebequés que cree que el actual sistema de producción capitalista tiene fecha de caducidad: 2030. Calcula que para ese año un colpaso económico acabará con la actual cadena de suministros e impedirá que se pueda producir más electrónica de consumo masivamente durante décadas. Dice el refrán que “hombre precavido vale por dos” y Dupras a estas alturas debe valer ya por cuatro: en previsión de este posible colapso lleva un tiempo trabajando en un sistema operativo libre, licencia GNU 3.0, llamado Collapse OS. Ha sido a raíz de una entrevista en Vice que el proyecto ha saltado estos días a la luz pública y, tras leerla, ha despertado mi interés y me ha inspirado otra idea.

¿Cual es el objetivo de Collapse OS? Pues proveernos de una serie de herramientas básicas para trabajar con pequeños microprocesadores z80 de 8 bits, puesto que son populares, están presentes en muchos productos y podrían encontrarse con facilidad y extraerse de viejos equipos desechados en vertederos, trasteros y puntos limpios. De momento, según su hoja de ruta, ya ha logrado hacerlo funcionar en un miniordenador RC2014 Classic y en una Sega Master System. Sus próximos objetivos serían calculadoras científicas TI83+ y TI84+ y un viejo ordenador TRS-80 de finales de los 70. Hoy por hoy Collapse OS ya permite algo varias cosas fundamentales: editar texto, autorreplicarse, soporte de algunas interfaces de entrada/salida como puertos ACIA o teclados PS/2 , leer y escribir datos en tarjetas SD y en chips de almacenamiento AT28 EEPROM y compilar código para procesadores z80. La lista de interfaces de la que recoger datos de entrada, de otros procesadores para los que compilar código y de unidades de almacenamiento que soportar está recogida en dicho plan y esperan que pueda ir creciendo conforme se acerca la fecha de su anunciado colapso. Si quieres colaborar puedes visitar la página del proyecto en GITHub.

Procesador Zilog Z80

¿Por qué me ha interesado el proyecto? Pues porque es software libre, es creativo y porque creo que tiene un potencial más allá de un eventual colapso económico/industrial: creo que nos podría permitir reciclar mucho material electrónico. Ya hace años algunos recodaréis que participé en un proyecto que llamamos “trashware” junto a un programador italiano en el que ensamblamos equipos a base de piezas rescatadas de la basura que donamos a proyectos educativos de países en vías de desarrollo. ¿Podría este Collapse OS ser una oportunidad para dar nueva vida a mucho material que estaba condenado a la basura? Creo que merece la pena pensarlo, porque estamos pensando en “reciclar cuando llegue el colapso” y tal vez deberíamos verlo como “reciclar para que el colapso no llegue

Optimizar el arranque de Windows 10

Si tu Windows 10 tarda en arrancar es muy posible que sea porque tiene demasiadas aplicaciones que se lanzan durante el inicio. Puede haber otras causas, sí, pero lo más habitual es que haya demasiados programas ejecutándose durante el arranque y también es muy posible que no necesitamos que todos ellos lo hagan en ese momento.

Aunque existen herramientas para optimizar esto realmente no necesitamos ninguna: el sistema operativo ya la trae de serie. Basta con abrir el administrador de tareas (podemos hacerlo de forma directa pulsando Ctrl+Shift+Esc o pulsando el mítico Ctrl+Alt+Supr y seleccionando el administrador en la lista de opciones).

Una vez abierto pulsamos la pestaña Inicio y allí podremos ver qué programas se ejecutan durante la carga:

Realmente puedes deshabilitar todo lo que hay ahí ya que ninguno de esos programas afectaría de forma crítica al sistema, aunque es posible que quieras tener alguno de ellos (por ejemplo, yo tengo el Outlook configurado para que se abra en el inicio porque suele olvidárseme y el el trabajo lo necesito habitualmente). Cuando hayas quitado lo que no quieras en esa sección el equipo debería tardar algo menos en iniciar.