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.

Exportar la configuración de las VPN de Windows a otros equipos

El otro día me cambiaron el equipo en el curro y me puse a pensar “Ahora a configurar el montón de conexiones VPN de los clientes ¿hay una forma más rápida?” Pues claro que la hay: puedes exportarla de un equipo a otro simplemente copiando el fichero rasphone.pbk ¿Cómo lo hago? Simplemente buscándolo, copiando y pegando, nada más. Te lo puedes llevar en un pendrive o guardártelo en una ubicación en la nube para descargalo de cualquier otro equipo.

¿Cuál es la ruta?

En Windows XP (si todavía lo usas): C:\Documents and Settings\All Users\Datos de programa\Microsoft\Network\Connections\Pbk\rasphone.pbk

En los Windows posteriores (Vista, 7, 8, 10) tienes dos rutas:

Redes creadas para todos los usuarios: C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk

Redes creadas para un usuario en particular: %userprofile%\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk

Cuando lo copias en otro equipo Windows basta con ejecutarlo, un simple doble click, y ya realizará la conexión a la VPN.

Encontrar y matar procesos zombie en Linux

No sólo hay zombies en la ficción, también pululan por tu sistema Linux. Tranquilo, la pantalla de tu portátil no se cerrará de golpe mordiéndote la mano y convirtiéndote en un extra de peli de Romero, se trata de un estado en el que pueden entrar algunos procesos secundarios, que aunque terminan se mantienen en la tabla de procesos hasta que termina el principal, ocupando algo de memoria. No son especialmente problemáticos ni consumen mucho, aunque si un programa deja varios procesos hijo por ahí sueltos puede ser un problema para la RAM.

¿Cómo puedo listar los procesos en estado zombie en mi equipo?

Es sencillo. Usando el comando ps podemos listar todos los procesos presentes en la tabla de procesos. Uno de los valores que tendremos en la salida de ps es el estado del proceso, que será Z para los procesos zombie. Por lo tanto, el siguiente comando listará todos los procesos zombie:

ps aux | grep 'Z'

¿Cómo eliminamos un proceso zombie?

En si no podemos matar un proceso zombie con el comando kill porque ya está muerto, la única opción sería hacerlo a través del proceso padre. Para eso necesitamos saber el pid del padre, por lo que haremos la búsqueda de procesos zombie de está forma:

ps ef | grep 'Z'

La tercera columna de la respuesta tendrá el id del proceso padre de nuestro proceso zombie. Para forzar la eliminación de estos procesos hijo zombificados usamos el siguiente comando:

kill -s SIGCHLD pid_del_proceso_padre

Cinco extensiones para GNOME muy útiles

Una de las cosas que han hecho que GNOME sea uno de los entornos de escritorio más populares para Linux es la posibilidad de instalar extensiones que nos permiten ampliar sus funcionalidades. Desde aquí os voy a recomendar 5:

Clipboard Manager: Una aplicación de gestión de portapapeles avanzada que te permitirá tener disponible varios elementos copiados o cortados a la vez para luego gestionarlos, similar al app GPaste.

Dash To Dock: Si eres un nostálgico de Unity o has migrado a Linux desde un equipo de Apple puedes usar esta extensión que agrega un dock a tu escritorio en el que podrás anclar las aplicaciones que más uses.

Easy Screencast: Una extensión que te permite grabar lo que pasa en tu escritorio de forma sencilla e intuitiva. Esto puedes hacerlo con un programa externo también, pero la ventaja de esta extensión es que es muy ligera.

Pomodoro Timer: Te permitirá organizar tu tiempo programando una serie de periodos de tiempo de actividad y de descanso en tu trabajo, de forma que puedas estar centrado al 100% en tu tarea sin preocuparte de mirar en el reloj cuánto tiempo llevas en ello.

Refresh WiFi Connections: Realmente solo es útil para usuarios con portátil que cambien bastante de ubicación, si ese es tu caso puede que te interese esta extensión que refresca las conexiones inalámbricas a tu alcance para que se conecte de forma automática, sin tener que hacerlo manualmente.

Nginx en Debian: los comandos más básicos

Vamos a darle un ojo a los comandos más básicos del servidor Nginx para sistemas operativos Debian:

Arrancar Nginx:

Para iniciar Nginx puede ser uno de estos dos comandos, dependiendo de si el gestor de servicios es systemd o sysvinit:

$ sudo systemctl start nginx #systemd
$ sudo service nginx start   #sysvinit

Reiniciar Nginx:

En caso de que necesites reiniciar Nginx sería alguno de estos dos

$ sudo systemctl restart nginx #systemd
$ sudo service nginx restart   #sysvinit

Parar Nginx:

Para detener Nginx:

$ sudo systemctl stop nginx #systemd
$ sudo service nginx stop   #sysvinit

Habilitar arranque en el inicio:

Si queremos que Nginx arranque automáticamente al iniciar el sistema operativo entonces hay que utilizar este:

$ sudo systemctl enable nginx #systemd
$ sudo service nginx enable   #sysvinit

Comprobar la configuración:

Si has hecho cambios en la configuración de Nginx este comando te dirá si la configuración es correcta:

$ sudo nginx -t