Portada! How-to: Utilizando un SSD para tu Raspberry Pi (Parte 2/2)

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
articulo02.png


Nuestra aventura continúa! Y esta entrega se viene sabrosa ya que les mostraré más imágenes (oooooh), mejores cuentos (ooooohhh y un "Ay Dios mío") y espectaculares benchmarks (OOOOHHHHH y al menos un desmayado de la emoción)!!!1!!1!

Si no ha leído la primera parte... vaya ya. De lo contrario, continuemos.

Capítulo 5: Ahora empieza el pah drama

Como ya tenía un sistema operativo... operativo (de "funcionando, en operación") supuse que el cambio sería bastante simple: tenía todo en Docker así que era flashear sistema en el disco nuevo, copiar algunas cosas, iniciar sistema y paf nació chocapic. La dura realidad me demostró que aunque es posible correr Raspbian desde el SSD, esto no está soportado oficialmente todavía así que hay que hacer algunos menjunjes y ajustes por aquí y por allá para que todo funcione.

Sin embargo, existe software que te hace la vida más fácil, así es como di con Berryboot que te permite instalar más de un sistema operativo en el SSD mientras que la tarjeta SD queda sólo como partición para /boot. Una bonita solución. Que no funciona como me di cuenta de forma dolorosa cuando ya tenía todo listo y me dispuse a iniciar las imágenes en Docker: resulta que por algún motivo, decidieron usar AUFS y Docker no tiene compatibilidad para eso. Eso significaba sólo una cosa: iba a tener que hacer muchas cosas de forma manual.

Esto significa en la práctica tener que flashear Raspbian tanto en el SSD como en la tarjeta MicroSD y una vez instalado tener que reiniciar mil veces entre cada ajuste: la verdad es que si no fuera por este video de Andreas Spiess me habría demorado todo el día pero gracias a su excelente video, me demoré con cuea 1 hora en todo el proceso. El video lo explica mil veces mejor que yo pero muy en resumen hay que hacer lo siguiente:
  • Escribir la misma imagen de forma simultánea a la tarjeta MicroSD y el disco SSD (mediante Balena Etcher)
  • Opcional: no olvidar archivo vacío ssh para poder conectarse via SSH y su configuración WiFi en wpa_supplicant.conf en ambas particiones /boot
  • Instalar ambos en el sistema
  • Primer booteo: Cambiar el PARTUUID del SSD (con fdisk)
  • Primer booteo: Cambiar el disco de booteo en la MicroSD y SSD (Se hace en /boot/cmdline.txt
  • Segundo booteo: Controlar que estamos booteando del disco correcto (Mediante findmnt -o -o SOURCE /)
  • Segundo booteo: Cambiar el tamaño de la partición mediante fdisk
  • Tercer booteo: Aplicar resize2fs para que el sistema de archivos se actualice
  • Tercer booteo: Actualizar el sistema (sudo apt update;sudo apt upgrade)
  • Cuarto booteo: Empezar a ocuparlo!
  • Copiar todos mis archivos que tenía todavía en la tarjeta anterior y disfrutar de la vida

Aquí me voy a detener un minuto: opté ir por una nueva tarjeta MicroSD y no ocupar la que ya estaba instalada porque he leído de algunos casos donde esto no funciona bien o quedan con bugs raros: así que opté por lo sano y elegí instalar un sistema limpio. Me mandé si el TREMENDO susto cuando inserté la tarjeta MicroSD vieja en mi PC y empezó con problemas del tipo "no reconozco esta tarjeta" y todos los consejos en internet decían que la tarjeta estaba corrupta y nada que hacer. Rápidamente volví a la raspberry con la tarjeta vieja y mi corazón se sintió aliviado cuando booteó de lo más bien. Aproveché de copiar todos mis archivos e imágenes de Docker a mi PC via la red y volví a instalar la nueva tarjeta MicroSD con el SSD.

Capítulo 6: Benchmarks!

La verdad es que la Raspberry está muy bien hecha y también es uno de los computadores / plataformas más bencheadas del planeta, así que no haré un extenso benchmark de cada componente del sistema, y es más: confiaré en esos otros reviews. Para tirarles algunos números, les contaré que de partida la red Gigabit y los puertos USB 3.0 van por 2 lanes separados, así que la red Gigabit está a sólo un escupo de alcanzar el máximo teórico de 1Gbps: se queda corto por 30Mbit/s.

Los puertos USB 3.0 por el otro lado, sí están lejos del máximo teórico de 5Gbps, llegando a aproximadamente la mitad: aproximadamente 350MBps o 2.8Gbps si lo quieren leer en bits. El Corsair BX500 alcanza su máxima velocidad en lectura, que es donde alcanza 498MBps (casi 4Gbps). Es de esperar que la controladora que compré en China realmente aguante el tráfico de 6Gbps que dice tener.

photo_2020-05-19_00-31-54.jpg


Lo primero que hice fue testear qué tan rápido (o lento) andaba la lectura, ya que es el primer parámetro y el más importante. Para probar esto, simplemente ejecuté un dd unas cuantas veces, procurando de limpiar la caché entre cada pasada. Cabe destacar que tanto la tarjeta MicroSD como el USB Stick dieron resultados bastante parejos, mientras que el SSD era más variado.

Cabe destacar que me sorprendió de sobremanera el USB Stick: nunca pensé que iba a ser capaz de alcanzar los 200MBps. Quizás un disco SSD sea overkill después de todo... pero falta la la prueba de la escritura todavía!

photo_2020-05-19_00-29-40.jpg


Y es acá donde sacamos el conejo del sombrero ya que la diferencia es abismal: lo primero que se aprecia en el gráfico es la abrupta caída en rendimiento del SSD casi al final de los tests: creo que esto se debe a que la Raspberry Pi empezó a aplicar throttle a la CPU ya que mi Raspberry Pi la tengo sólo con refrigeración pasiva y ejecuté las pruebas en un loop.

Lo segundo que llama la atención, es que parece haber desaparecido la tarjeta MicroSD... pero no, el meollo del asunto es que tanto la tarjeta MicroSD como el USB drive obtienen exactamente el mismo rendimiento en la prueba de escritura!


photo_2020-05-19_00-29-39.jpg


Para dilucidar algo mejor este último descubrimiento, es que promedié los resultados anteriores en un sólo gráfico fácil de analizar. Aquí se puede apreciar bien la diferencia abismal entre la escritura y lectura de los 3 medios que probé: tanto así que la tasa de escritura del SSD casi equivale a la lectura del USB Stick! Esto se debe a una limitante del disco en sí, ya que si tuviera un disco SSD más rápido (o un disco + enclosure NVMe) lo más probable es que me tope con el mismo límite de la lectura: este límite es el del bus de datos USB 3.0 de la Raspberry Pi en sí y no del disco.

Capítulo 7: Conclusiones

Y ha llegado la hora final! ¿Se nota algún cambio en el día a día? Pues para mi es todavía muy temprano para tomar una decisión al respecto ya que hace unos días no más que terminé con todo el trabajo, pero mientras estaba instalando y configurando todo la sensación de velocidad era tal que a ratos no me daba cuenta que estaba trabajando en una Raspberry Pi: mientras transfería mis datos de una máquina a la otra, vi que estaba escribiendo a unos 360Mbps, lo cual es aproximadamente 1/3 de mi gigabit LAN, lo cual no es malo: representa un gran salto de esos 110Mbps que lograba con el USB Stick o la MicroSD y el sistema en general se siente ágil, si comparamos los datos de hace una semana (izquierda) a la de ahora (derecha) veo esto:

Screenshot_2020-05-18_00-54-03.png
Click en la imagen para la imagen en alta resolución


De todas formas, en lo que veo de mi uso del día a día, es que el tiempo que se demora en generar gráficos como la de arriba no tiene nada que envidiarle a un PC dedicado y casi ya ni se nota lag. Asimismo, las animaciones del Magic Monitor también andan más fluidas.

Voy a estar observando durante las próximas semanas / meses a ver qué tal se comporta y no hay que olvidar tampoco que la Raspberry Foundation está trabajando en estos momentos que se pueda iniciar el sistema directamente desde el puerto USB 3.0 sin requerir una tarjeta MicroSD en absoluto, con lo cual la instalación final será harto menos complicada que como lo tuve que hacer yo.

Finalmente: ¿recomendaría este upgrade? Pues... depende: si piensas ocupar la Raspberry Pi como un reemplazo de tu PC de escritorio o si piensan en ocuparla para hacer bastantes lecturas y escrituras de archivos chicos... pues de todas formas! Sin embargo, si sólo la ocupas para ir probando distintas cosas por aquí y por allá y no te molesta el bajo rendimiento ni tampoco que de repente pueda haber una pérdida de datos... mi respuesta sería negativa.

Ah y el resultado final de la instalación? En el spoiler!

Pues como buen informático que soy se ve horrible pero funciona bien, no esperen nada bonito de mi parte, ya lo ordenaré como se debe algún día:

IMG_7080.JPG
Click en la imagen para la versión en alta resolución

Sí hice una cajita a la rápida para que el enclosure no quedara colgando por el cable:

IMG_7078.JPG

Saludos.
 
Última modificación:

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Me acabo de meter a YouTube y vi que la rpi sacó una beta del nuevo eeprom que permite bootear directamente desde USB!


Dentro de las próximas semanas van a lanzar la versión estable me imagino, cuando tenga algún momento voi a proceder a probar el nuevo EEPROM y firmware :)

Saludos.
 

Cosme

Gold Member
Haz visto algo de la RockPi ? Trae un puerto M.2 con soporte NVMe: a pesar de esto, la ficha tecnica no indica de cuantos lanes es.

Ademas de esto,trae memorias corriendo a 3200, 2 cores A72, 4 cores A53 y un conector HDMI "normal" :zippy

La vi ayer, despues de haber leido tu post de querer trabajar por USB3 e imaginarme lo "complicado" que seria llevarlo a buen puerto :zippy
 

Exte3

Capo
Estuvieron interesante ambas publicaciones, ahora queda esperar una tercera parte cuando actualicen el firmware


Enviado desde mi Redmi Note 8 mediante Tapatalk
 

Piñufla

Miembro Regular
Para que es docker? necesito una raspberry para monitorear unas cosas de mi pega, necesito tenerla 24/7 asique el SSD va si o sí.. ahora, saben cuantos programas puedo dejar corriendo a la vez? en Raspbian, es 1 programa de 25 MB app, pero la idea es abrir unos 40 de ellos y dejarlos trabajando..
 

miguelwill

Matrix Operator
Miembro del Equipo
MOD
docker es un gestor de contenedores
cada contenedor tiene lo justo y necesario para hacer funcionar su aplicacion puntual, y su configuracion se le puede pasar por parametros al momento de hacer correr el contenedor
las imagenes sirven para correr 1 contenedor con 1 imagen puntual (donde pueden seleccionar la version, o hasta si esta basada en alpine, ubuntu, debian o centos)

se pueden lanzar contenedores como comandos, o de forma mas organizada usando el comando "docker-compose" que utiliza un archivo llamado "docker-compose.yml", en el cual se parametrizan las opciones de uno o varios contenedores, los cuales pueden comunicarse entre si sin necesidad de pasar por la red fisica

si quieres bucear por las imagenes publicamente disponibles, puedes revisar en https://hub.docker.com/

aca tienes un ejemplo de como se puede usar docker-compose para levantar un wordpress con mysql


tambien puedes crear nuevas imagenes basado en una existente, y asi tener algo customizado
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Haz visto algo de la RockPi ? Trae un puerto M.2 con soporte NVMe: a pesar de esto, la ficha tecnica no indica de cuantos lanes es.

Ademas de esto,trae memorias corriendo a 3200, 2 cores A72, 4 cores A53 y un conector HDMI "normal" :zippy

La vi ayer, despues de haber leido tu post de querer trabajar por USB3 e imaginarme lo "complicado" que seria llevarlo a buen puerto :zippy
Creo que la vi cuando todavía se llamaba rock64, y tenía problemas con reconocer y hacer trabajar los gpio, la descarté en su tiempo (unos 2 años atrás) pero igual se ve tentador y han tenido harto tiempo ya para arreglar eso jajaj

Estuvieron interesante ambas publicaciones, ahora queda esperar una tercera parte cuando actualicen el firmware


Enviado desde mi Redmi Note 8 mediante Tapatalk
Así es aunque esa no saldrá mañana :) quizás a ppios de la otra semana. Si publiqué este artículo, me metí a YouTube y el primer video que me muestra era ese jajajajja
 

bobolu

Experimentado
Esperamos la tercera parte con el nuevo EEPROM.

Yo tengo la RPi4, bueno, tengo la RPi 2 también, no sé si se ganará rendimiento de SSD en la 2, por el USB 2.0, pero con el USB 3.0, uf, dieron harta vida para esta pequeña cajita.
 

galansinchance

enajenao
Compré una PI 4, y el primer dolor de cabeza es que funciona con USB-C, bueno, lo resolví al tiro con un cargador de Samsung que tenía guardado, luego, el segundo es que tiene microHDMI, por la cresta, en plena cuarentena fue peludísimo conseguir un adaptador, logré comprar uno por internet y cuando lo probé no funcionó en ninguna pantalla, no hubo caso, luego tenía una imagen de una PI 3, grabé una imagen en la SSD y no arrancó, tuve que descargar la última chupá del raspbian y arrancó, logré entrar por SSH y poder hacer algunas cosas.

La verdad mientras hayan stock de la versión 3 seguiré con esa como opción.

Ahora ni pensar en la idea de meterle un SSD.. xD

Saludos.
 
Compré una PI 4, y el primer dolor de cabeza es que funciona con USB-C, bueno, lo resolví al tiro con un cargador de Samsung que tenía guardado, luego, el segundo es que tiene microHDMI, por la cresta, en plena cuarentena fue peludísimo conseguir un adaptador, logré comprar uno por internet y cuando lo probé no funcionó en ninguna pantalla, no hubo caso, luego tenía una imagen de una PI 3, grabé una imagen en la SSD y no arrancó, tuve que descargar la última chupá del raspbian y arrancó, logré entrar por SSH y poder hacer algunas cosas.

La verdad mientras hayan stock de la versión 3 seguiré con esa como opción.

Ahora ni pensar en la idea de meterle un SSD.. xD

Saludos.
donde compraste la RP? al menos la mía fue en aliexpress y venía ya con el cable micro hdmi incluido

Enviado desde mi LYA-L29 mediante Tapatalk
 
Estoy tratando de migrar la micro SD a la SSD y he seguido varios Tutoriales pero no logro con éxito hacer bootear la ssd sola sin la SD, me aparece al iniciar la RP unos códigos de recovery y de startx algo así. No quiero instalar la SSD con sistema limpio ya que en la SD te go varios programas que me costaron un monton hacerlo funcionar

Enviado desde mi LYA-L29 mediante Tapatalk
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Estoy tratando de migrar la micro SD a la SSD y he seguido varios Tutoriales pero no logro con éxito hacer bootear la ssd sola sin la SD, me aparece al iniciar la RP unos códigos de recovery y de startx algo así. No quiero instalar la SSD con sistema limpio ya que en la SD te go varios programas que me costaron un monton hacerlo funcionar

Enviado desde mi LYA-L29 mediante Tapatalk
Revisaste tu /etc/fstab?

Saludos.

PD: Dicho eso... recomendaría comenzar de lo más 0 posible, en mi caso tenía un OS instalado hace 2 días y además sabía bien en lo que me estaba metiendo, así que por eso me atreví.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Compré una PI 4, y el primer dolor de cabeza es que funciona con USB-C, bueno, lo resolví al tiro con un cargador de Samsung que tenía guardado, luego, el segundo es que tiene microHDMI, por la cresta, en plena cuarentena fue peludísimo conseguir un adaptador, logré comprar uno por internet y cuando lo probé no funcionó en ninguna pantalla, no hubo caso, luego tenía una imagen de una PI 3, grabé una imagen en la SSD y no arrancó, tuve que descargar la última chupá del raspbian y arrancó, logré entrar por SSH y poder hacer algunas cosas.

La verdad mientras hayan stock de la versión 3 seguiré con esa como opción.

Ahora ni pensar en la idea de meterle un SSD.. xD

Saludos.
jajajaja pta te topaste con absolutamente todos los cambios de golpe: la rpi4 como máquina es haaaaaarto más avanzada que la 3b, muchísimo más rápida, hasta con 4 veces la cantidad de RAM y además tiene un puerto ethernet gigabit dedicado y no compartido con el bus de datos USB 2.0 como la 3b+. (producto de esto llegaba sólo a un límite de 300Mbps, el cual compartía con USB así que si tenías que escribir en el USB esto bajaba más aún).

Por eso mismo, es también más compleja y eso llevó a que una imagen de una edición anterior a la 4 no funcione en la rpi4. En el OS por lo mismo también cambiaron hartas más cosas, y se agradece pq la gran mayoría son muchísimos más simples de hacer ahora. Si suspendes la pantalla por ejemplo via CLI ya no te tienes que preocupar de despertarla teniendo que setear resolución y posición de la pantalla, ahora simplemente le dices que tiene que despertar y el OS te averigua todo eso por ti.

Sí, al ppio son hartos cambios, pero son para mejor :)

Las dos pantallas incorporadas tb se agradece, ahora sólo necesitas 1 rpi por cada 2 monitores, mucho más barato y simple de manejar que teniendo una rpi por cada pantalla! Si haces kioskos sabrás de lo que toi hablando :) el único pero es que no había espacio en la placa para conectores HDMI de tamaño normal, así que por eso se tuvo que hacer con micro-HDMI.

USB-C es simplemente pq USB-B no tiene soporte para cargas mayores a 2.1A, ya con el USB-B estaban arriba de ese límite con los 2.4A que necesita la rpi3b(+), con USB-C si bien es cierto el conector es más caro, tb soporta voltajes más altos.

Saludos y éxito con tu proyecto!
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN

galansinchance

enajenao
jajajaja pta te topaste con absolutamente todos los cambios de golpe: la rpi4 como máquina es haaaaaarto más avanzada que la 3b, muchísimo más rápida, hasta con 4 veces la cantidad de RAM y además tiene un puerto ethernet gigabit dedicado y no compartido con el bus de datos USB 2.0 como la 3b+. (producto de esto llegaba sólo a un límite de 300Mbps, el cual compartía con USB así que si tenías que escribir en el USB esto bajaba más aún).

Por eso mismo, es también más compleja y eso llevó a que una imagen de una edición anterior a la 4 no funcione en la rpi4. En el OS por lo mismo también cambiaron hartas más cosas, y se agradece pq la gran mayoría son muchísimos más simples de hacer ahora. Si suspendes la pantalla por ejemplo via CLI ya no te tienes que preocupar de despertarla teniendo que setear resolución y posición de la pantalla, ahora simplemente le dices que tiene que despertar y el OS te averigua todo eso por ti.

Sí, al ppio son hartos cambios, pero son para mejor :)

Las dos pantallas incorporadas tb se agradece, ahora sólo necesitas 1 rpi por cada 2 monitores, mucho más barato y simple de manejar que teniendo una rpi por cada pantalla! Si haces kioskos sabrás de lo que toi hablando :) el único pero es que no había espacio en la placa para conectores HDMI de tamaño normal, así que por eso se tuvo que hacer con micro-HDMI.

USB-C es simplemente pq USB-B no tiene soporte para cargas mayores a 2.1A, ya con el USB-B estaban arriba de ese límite con los 2.4A que necesita la rpi3b(+), con USB-C si bien es cierto el conector es más caro, tb soporta voltajes más altos.

Saludos y éxito con tu proyecto!
Qué raro, nosotros para las PI y los periféricos que ponemos (2 dispositivos usb + un shield de relés), chupan como condenados y tuvimos que plantar una fuente de 3A, vamos precisamente y compramos cargadores de teléfono específicos para ello y con USB viejo, con una fuente más ordinaria, la pi, sencillamente no arranca o si logras conectarla a la pantalla, ves el rayito amarillo pegado a la pantalla jaja..

Respecto de la pantalla y el dichoso micro HDMI, tendría que probar con un cable original o alguno de mejor calidad pq con el adaptador lo prové en 3 pantallas y ninguno funcionó, y es un problema recurrente según los foros que leí (donde sugieren forzar la salida de video y otras cosas).

Cuando pueda conseguir un cable original les cuento cómo me va.

Saludos.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Qué raro, nosotros para las PI y los periféricos que ponemos (2 dispositivos usb + un shield de relés), chupan como condenados y tuvimos que plantar una fuente de 3A, vamos precisamente y compramos cargadores de teléfono específicos para ello y con USB viejo, con una fuente más ordinaria, la pi, sencillamente no arranca o si logras conectarla a la pantalla, ves el rayito amarillo pegado a la pantalla jaja..

Respecto de la pantalla y el dichoso micro HDMI, tendría que probar con un cable original o alguno de mejor calidad pq con el adaptador lo prové en 3 pantallas y ninguno funcionó, y es un problema recurrente según los foros que leí (donde sugieren forzar la salida de video y otras cosas).

Cuando pueda conseguir un cable original les cuento cómo me va.

Saludos.
3A es lo mínimo que se requiere para la rpi4 :) He leído en muchos lados que la fuente tiene que ser de buena calidad, hay hartas fuentes que dicen 3A pero que en la realidad entregan menos y provocan problemas.

En cuanto a cable microHDMI, según de lo que leo el cable te funcionó (dices que ves un rayito amarillo) pero ahora ya no? Yo no tuve problemas al enchufarlo directo al HDMI-0 (el puerto más cercano a la fuente de poder), la verdad ni siquiera probé el HDMI-1 pero sí me puedo imaginar que uno de los dos esté de forma estándar apagado para ahorrar energía.

Yo compré un cable via AliExpress, a una tienda llamada UGREEN, es una marca BBB, jamás he tenido problemas con sus productos, específicamente este tengo: https://www.aliexpress.com/item/32866547894.html

Saludos.
 
Subir