¿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.

Dedominiopublico: Web con material cultural de dominio público

Una web que ya lleva unos años desarrollando una actividad muy interesante pero que yo no había conocido hasta hace unas semanas es Dedominiopublico.org, un proyecto que se dedica a recopilar materiales culturales para su consumo online que han pasado a ser de dominio público o que son ofrecidos de forma gratuita a través de medios oficiales.

Principalmente la web recopila cine, aunque también tiene secciones de series, música, libros, tebeos o videojuegos. También tiene un pequeño blog donde explican un poco la labor que realizan.

Musiqueando 14 (20191109)

Si en la entrega 13 iba buscando que el postureo normie me llamase “Elitista” en el Twitter esta semana voy a buscar que los metalfrikis me llamen pacazo y los clasicotes del metal me tachen de modernillo. Vamos con el Musiqueando 14 y arrancamos con un tema de Gary Moore, que estoy muy volcado estos días con el Celtic de Glasgow.

Algunos dicen que Baby Huey, cuyo verdadero nombre era James Ramey, es la mayor estrella del soul que nunca llegó a saber que lo era. Su único disco de estudio se publicó de forma póstuma tras su muerte: The Baby Huey Stroy: The Living Legend. El título ya es una despedida en sí. Huey tenía un talento descomunal pero se cuidaba poco, la suma de sus excesos con el alcohol y la heroína junto a un marcado sobrepeso hicieron fallar su corazón con solo 26 años, privándonos de un excepcional registro vocal, de una garganta que era un verdadero huracán. En su único LP, grabado durante 1970 y publicado en febrero de 1971,cuatro meses después de su muerte, realizó una de las mayores obras del soul psicodélico, incluyendo un par de versiones: una psicodélica y estremecedora revisión de A Change It’s Gonna Come del malogrado Sam Cooke y una revisión del mítico California Dreamin’ que popularizarían The Mammas and the Papas, además de un par de temas propios y varias composiciones de Curtis Mayfield, productor del disco y principal valedor de Baby Huey en el mundillo musical, el único loco decidido a apostar por un músico empeñado en autodestruise. El disco tuvo poco éxito, pues no había mucho interés por parte del sello en invertir dinero para promocionar a un músico ya fallecido del que no podría sacar futuros réditos, pero con el paso del tiempo se convirtió en un trabajo de culto que sería redescubierto por diversas generaciones a través de diversos músicos de hip hop y R&B que utilizaron samplers de sus temas.

Un amigo mío abría el otro día en Facebook un debate curioso, coincidiendo con el 39 aniversario de la publicación del Heaven and Hell de Black Sabbath: ¿preferís el Blizzard of Ozz de Ozzy o el Heaven and Hell de Black Sabbath? Había que razonar la respuesta pero llegué a la conclusión de que es imposible hacerlo. Sopesemos: ambos son dos discos de heavy metal melódico y clásico publicados en 1980, ambos cuentan con una buena producción y un buen puñado de temas icónicos. Uno nos presenta a unos Black Sabbath menos oscuros, influenciados por una naciente NWOBHM, más épicos, casi poniendo la primera piedra de lo que derivará en el género epic doom unos años más adelante, con la dupla Iommi/Geezer en plena forma y con el cambio radical que supone incorporar la voz de un Dio en estado de gracia a la banda. El otro nos trae a un Ozzy que también se aleja del sonido oscuro de los Sabbath clásicos pero virando hacia un sonido más americanizado, más hard & heavy, con músicos estadounidenses, con sus líneas de voz más trabajadas y presentando en la guitarra al Randy Rhoads más pirotécnico. Desde otra óptica también podría decirse que aunque ambos son dos discos sobresalientes y excelentes ninguno de ellos es un disco especialmente rompedor, ninguno marcaría un punto de inflexión en el heavy metal que nos permitiera darle un mayor valor histórico que al otro. Así que razonando la respuesta la única respuesta racional es que no hay respuesta racional posible, la elección recae en las tripas y el corazón y para mí ahí no hay duda: cuando tenía 14-15 años el Long Live Rock and Roll de Rainbow y el Heaven and Hell de Black Sabbath eran mi banda sonora, me los sabía de memoria. Por puro sentimentalismo gana el Heaven & Hell.

Volemos ahora a la ciudad italiana de Parma, capital del histórico Ducado de Parma, situada en un bello paraje de la Emilia-Romagna. Abramos un espumoso Lambrusco y sirvamos una copa mientras ponemos el disco debut de AyahuascA, un trabajo que se publicó el pasado día de difuntos. Se trata de un disco conceptual publicado por el sello australiano Salty Dog Records titulado Naad, donde se nos explica qué es Naad: una entidad antropomórfica que representa el aparato auditivo del universo y la capacidad de escuchar nuestras propias emociones. La voz de Domiziana Pritchard nos irá conduciendo por ese viaje de descubrimiento a través de sonidos psicodélicos durante 10 cortes de inspiración sesentera y cabaretera deudora de gente como The Doors.

Hace unos días, el 25 de octubre, los madrileños Grim Comet publicaban su nuevo trabajo: Afterlife, así que lo he celebrado comprándome toda su discografía en Bandcamp. Siguen mostrando una evolución que los aleja del sonido más doom metal de sus inicios y los acerca a sonoridades más rockeras. En este nuevo trabajo abren ya con un riff crudo decorado con toques de slide sureño y bluesero que no puede sino evocar al gran Billy Gibbons de ZZ Top y si bien hay guiños durante todo el LP a los Corrosion of Conformity más rockeros o a los Metallica en su etapa Load/Reload, el disco parece por momentos querer incorporar elementos del hard rock más crudo y de la depresión grunge noventera, con detalles donde parecen lanzar guiños a bandas tan diversas como Soundgarden, Candlebox, Pearl Jam, Bush o hasta Chris Rea. Con todo se trata de un trabajo muy variado en el que se han dado el gustazo de experimentar en muchas direcciones musicales.

Y a Vigo nos vamos para cerrar la entrega de esta semana con Mano de Piedra, que también han publicado largo debut estos días (previamente habían sacado un EP hace como cosa de dos años). Algunos les han catalogado como la resurrección de los míticos Supa Scoopa por la presencia de su guitarrista Mano, pero aunque molaría tener a otros Supa Scoopa no será en este proyecto donde vayas a encontrarlos pues Mano de Piedra tienen un sonido mucho más brutote y metalero. Today’s Ashes navega más por las aguas de un sludge metal  que no hace ascos a tomar prestados elementos del death ‘n roll, el metalcore o del doom. Un disco de metal agresivo y contemporáneo con una gran producción de Iago Alonso que les sitúa como una de las bandas más interesantes que seguir en el cercano 2020.

La instrucción With…End With de Visual Basic

Unas de las cosas más cómodas de la sintaxis de Visual Basic es la instrucción WITH…END WITH que, básicamente, nos permite acceder a los miembros de un objeto sin repetir su nombre constantemente.

La sintaxis básica sería la siguiente:

WITH Objeto
'lo que vayamos a hacer
'con sus miembros
END WITH

Dicho así no se entiende bien, pero con un ejemplo lo vemos claro. Tenemos aquí un objeto Mensaje y sus miembros son los valores que necesitamos para enviar un email:

 With Mensaje
   Set .Configuration = iConf
       .To = "correo@gmail.com"
       .From = "Donnie"
       .Subject = "Ejemplo with"
       .HTMLBody = correoHTML
       .Send
End With

Como podéis ver esta sintaxis nos ahorra escribir la referencia al objeto Mensaje antes de cada uno de sus elementos. Es a su vez cómodo para escribir y para leer el código.

Es posible anidar una sentencia WITH dentro de otra para acceder a un objeto interno, pero esto puede hacer nuestro código más difícil de leer.

With obVentana
    With .Etiqueta
        .Mensaje= "Esto es un aviso."
        .Fondo = Brushes.DarkSeaGreen        
    End With

    .Titulo = "VENTANA DE AVISO"
    .Show()
End With