No estoy tan interesado en comprar un disco duro USB, pero soy consciente de que las tarjetas SD no son adecuadas para muchas repeticiones de lectura y escritura.
¿Hay algún paso que pueda tomar para extender la vida útil de mi tarjeta SD mientras mi Raspberry Pi la está utilizando?
sd-card
durability
Altamente irregular
fuente
fuente
Respuestas:
Estos métodos deberían aumentar la vida útil de la tarjeta SD al minimizar el número de lecturas / escrituras de varias maneras:
Deshabilitar intercambio
El intercambio es el proceso de usar parte de la tarjeta SD como memoria volátil. Esto aumentará la cantidad de RAM disponible, pero dará como resultado una gran cantidad de lecturas / escrituras. Es poco probable que aumente significativamente el rendimiento.
Deshabilite el intercambio con el
swapoff
comando:También debe evitar que vuelva después de reiniciar:
sudo apt-get remove dphys-swapfile
eliminarlo permanentemente. Es mejor eliminarlo porque establecerloCONF_SWAPSIZE
en 0, como se explica en esta respuesta , no parece funcionar y aún crea un archivo de intercambio de 100 MB después del reinicio./etc/fstab
Deshabilitar el registro en diario en el sistema de archivos
El uso de un sistema de archivos de diario como
ext3
oext4
SIN un diario es una opción para disminuir las lecturas / escrituras. El inconveniente obvio de usar un sistema de archivos con el registro en diario deshabilitado es la pérdida de datos como resultado de un desmontaje desafortunado (es decir, falla de energía posterior, bloqueo del kernel, etc.).Puede deshabilitar el registro en diario
ext3
montándolo comoext2
.Puede deshabilitar el registro en diario en
ext4
una unidad desmontada como esta:La bandera del monte noatime
Asigne el indicador de montaje de noatime a las particiones que residen en la tarjeta SD agregándolo a la sección de opciones de la partición en
/etc/fstab
.Directorios en RAM
Directorios muy utilizados como
/var/tmp/
y posiblemente/var/log
se pueden reubicar en RAM de/etc/fstab
esta manera:Esto permitirá
/var/tmp
usar 50 MB de RAM como espacio en disco. El único problema al hacer esto es que las unidades montadas en RAM no persistirán más allá de un reinicio. Por lo tanto, si monta/var/log
y su sistema encuentra un error que hace que se reinicie, no podrá averiguar por qué.Directorios en disco duro externo
También puede montar algunos directorios en un disco duro USB persistente. Más detalles de esto se pueden encontrar en esta pregunta .
La Raspberry Pi también puede iniciar su partición raíz desde una unidad externa. Esto podría ser a través de USB o Ethernet y significa que la tarjeta SD solo se usará para delegar a diferentes dispositivos durante el arranque. Esto requiere un poco de pirateo del núcleo para lograrlo, ya que no creo que el núcleo predeterminado admita el almacenamiento USB. Puede encontrar más información en esta pregunta o en esta publicación de blog externa .
fuente
noatime
debería ser un defecto.noatime
no es el predeterminado, al menos en Arch./var/tmp
en la memoria. Tal vez lo confundiste con/tmp
.noatime
causa problemas, también puede usarlos, lorelatime
que reduce significativamente las escrituras de disco en lectura en lugar de eliminarlos por completo.Si las opciones proporcionadas por Jivings no son posibles para su aplicación, entonces otra opción para extender sustancialmente su vida es usar una tarjeta SD que sea mucho más grande de lo que necesita.
Deje mucho espacio libre
La mayoría de las tarjetas SD decentes usan algoritmos de nivelación de desgaste para minimizar la cantidad de veces que se escribe cada bloque, por lo que si la tarjeta SD es más grande de lo que necesita, el desgaste puede extenderse en un área mucho más grande de espacio libre.
Parte de la razón por la que la nivelación de desgaste es tan importante es que algunos sistemas de archivos, como FAT (el formato predeterminado para muchas tarjetas SD), martillan los mismos sectores una y otra vez.
Para obtener más información sobre esto, consulte las respuestas a la pregunta ¿Es cierto que una tarjeta SD / MMC se desgasta con su propio controlador? en el intercambio de pila electrónica , especialmente esta respuesta .
Una estadística interesante de esta respuesta es que
Pero lo preocupante es que
Esto puede hacer que su elección del sistema de archivos sea importante si necesita garantizar un almacenamiento confiable.
Una nota final: duplicar el tamaño de la tarjeta SD podría más que duplicar su longevidad.
Es decir, si tiene una tarjeta SD de 2 GB con 200 MB libres, cambiar a una tarjeta de 4 GB le dará 11 veces más espacio libre, capacidad de nivelación de desgaste y, por lo tanto, longevidad, mientras que cambiar a una tarjeta de 16 GB le dará 71 veces más espacio.
fuente
MMC_ERASE
comando (opcional) definido en algún lugar del estándar MMC / SD para este propósito. Aunque de todas las tarjetas SD que he probado, solo una (la que vino con mi Pi-) en realidad lo admite.Lo único que veo es NO cambiar la tarjeta SD.
El intercambio en la tarjeta Sd es probablemente lo que podría matar su tarjeta SD.
Si necesita más RAM, puede intentar usar zram, hay una publicación en http://raspberry.pi.gw.gd/t50-Using-ZRAM.html que brinda algunos detalles sobre el uso de ZRAM en la frambuesa pi
Más información para zram en http://en.wikipedia.org/wiki/ZRam
También se sabe que las tarjetas SD más recientes son mucho más sólidas que las antiguas, comprar una nueva tarjeta SD de clase 10 es probablemente una buena opción si desea que dure mucho tiempo.
fuente
Podría intentar ejecutar Puppy Linux, que es completamente residente en ram. Es muy pequeño y cegadoramente rápido, ya que se ejecuta completamente en la memoria al copiar la imagen de almacenamiento (en la tarjeta SD en su caso) en la RAM en el arranque y luego enjuagar los cambios periódicamente de nuevo al almacenamiento. La frecuencia de este guardado es controlada por el usuario, incluso manualmente.
Puppy utiliza el sistema de archivos en capas aufs o unionfs más antiguo con cualquiera de los sistemas de archivos Linux estándar como ext3 o ext4. También puede residir en particiones FAT o NTFS.
Hay al menos un par de versiones de Puppy específicamente diseñadas para el RPi, una de ellas creada por el "Puppy Master", Barry Kauler.
Para más información, vaya a http://puppylinux.org/wikka/Puppi
fuente
La mayoría de las personas aquí hablan de sus suposiciones y no de su experiencia personal.
He estado usando mi RaspberryPi con RasPBX como una centralita de la compañía con 8 extensiones y un fax. Tenemos 3 líneas troncales basadas en ip y una línea fija a través de LinkSYS SPA3000. Tomó solo 1 mes para que mi tarjeta SD Kingston 4 GB inicial mordiera el polvo.
Todavía estaba experimentando y no tenía una copia de seguridad. Por cierto, el Pi está conectado a un UPS APC. Luego volví a configurar todo el RasPBX desde cero, pero esta vez moví / var / log y / var / lib / mysql a nuestro NAS corporativo. Esta SD todavía estaba bien después de 3 meses.
Luego tuvimos un verano muy caluroso. Durante el tercer mes, el pi comenzó a no detectar el ethernet de la nada. Entonces, un día descubrí que todos los Leds están tenues y no arrancaba.
He reemplazado el Pi con uno nuevo y listo para usar. El fuera de servicio comenzó a funcionar después de enfriarse, pero funciona bastante errático y cuando se inicia en RasPBX, el modo de video no cambiará a gráficos, permanece en 80 * 25 Texto. Realmente estaba en mal estado. He pedido un conjunto de disipador de calor desde entonces. El nuevo Pi funciona con él ahora por más de 2 meses 7/24.
Entonces, si va a usar el pi en un entorno 7/24, no sea barato: compre el disipador térmico y evite usar / var / log y otros directorios ocupados sobre la TARJETA SD.
fuente
He comparado todas las soluciones que utilizan TMPFS y la mejor respuesta es una síntesis del script prepare-dirs (ver http://grenzdebiel.dyndns.org/wordpress/?p=98 ) con un apropiado / etc / defaults / tmpfs ( (ver http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/ ).
Los pasos necesarios para realizar en raspbian son:
1. editar
/etc/default/tmpfs
y configurar :Recomiendo los siguientes tamaños:
2. habilitar directorios adicionales usando / etc / fstab
3. use el script
/etc/init.d/prepare-dirs
para crear directorios faltantes/var/log
para que todos los demonios comiencenVea al final lo que contiene en mi caso.
4. Haga que el script sea ejecutable
chmod 755 /etc/initd/prepare-dirs
.5. Asegúrese de que el script se iniciará primero en el arranque antes de que comiencen sus demonios:
update-rc.d prepare-dirs defaults 01 99
contenido de
/etc/init.d/prepare-dir
:Eso es.
fuente
Deshabilitar Swapfile:
No es necesario desinstalarlo; sin embargo, si no lo está utilizando y desea el espacio, puede eliminarlo con seguridad. Comando alternativo para eliminar:
Uso: / sbin / dphys-swapfile {setup | swapon | swapoff | uninstall}
fuente
Flash Cell Endurance:
Es puramente matemático en tarjetas grandes y en uso normal. Si tuviera que escribir en una tarjeta flash tipo MLC de 8GB día y noche una y otra vez, tardaría unos 30 días en eliminarla.
El episodio 99 en Techsnap habla sobre el desgaste de los SSD y Allen explica cómo es imposible usar un SSD en el uso diario y no tenemos que preocuparnos por desactivar el intercambio, los crons y todo eso. ¡Simplemente funciona ahora! La nivelación de desgaste inteligente se encarga de todo.
El uso normal según lo citado por Kingston debería darle 27 años de vida de por vida en una cámara digital profesional.
El precio del flash ha caído y la tecnología es mucho mejor.
¡La mayoría de las tarjetas SD sobrevivirán a dos o tres generaciones de dispositivos y para entonces se considerará pequeño y demasiado lento para usar con una actualización mucho mejor y más barata disponible!
fuente
Como se mencionó anteriormente, el problema principal son los archivos y directorios que no vale la pena guardar entre reinicios, pero se escriben con bastante frecuencia, es decir, archivos de caché, carpetas de descarga, etc.
Raspbian, así como Debian y Ubuntu tienen un paquete llamado unburden-home-dir cuyo propósito principal es vincular dichos archivos a un lugar menos problemático como, por ejemplo, un
tmpfs
montaje o un disco duro externo que es menos propenso a desgastarse.Comúnmente se ejecuta en el momento de inicio de sesión en X y está dirigido a los archivos de caché de la aplicación GUI, pero también se puede llamar desde scripts o similares y se configura para archivos arbitrarios en el directorio de inicio de un usuario.
fuente
Estas son mis recomendaciones para un Debian 8.0 (Jessie)
Se basan en
iotop -bktoqqq
yiostat -dzp 5
. Primero debe ejecutar estos comandos para tener una idea del problema y su solución.1. Desactivar intercambio
2. Use las opciones de montaje y RAM
Monte todas las particiones en la tarjeta SD con las
noatime,commit=1800
opciones y monte los siguientes directorios en la RAM con estas entradas en su/etc/fstab/
:Commit retrasará las escrituras y las recogerá primero.
3. Registre los archivos de registro más frecuentes en
/var/tmp/log/
Ver mi descripción ¿Cómo puedo reducir la escritura en archivos de registro ?
4. Evita que Chromium golpee la tarjeta SD
Resulta que Chromium escribe mucho y no se puede detener (ver 176727 , 52663 ). Esto afecta el caché y el directorio de datos del usuario. Las cromo / Consejos y trucos explican cómo esto se puede mover a la memoria RAM. Como la Raspberry no tiene mucha RAM, el Suspender de pestañas sugerido es útil para ahorrar RAM.
a) caché
Limite el tamaño de caché y muévalo a RAM editando
/etc/chromium-browser/customizations/00-rpi-vars
aAhora el caché es lo suficientemente pequeño como para moverlo al disco RAM cambiando la
XDG_CACHE_HOME
entrada/etc/security/pam_env.conf
aAhora mis dos usuarios tienen un pequeño caché de navegador en RAM. Si eso no es suficiente, cambie el caché o / tmp / size según sea necesario.
b) Directorio de datos del usuario
También el directorio de datos de usuario (
.config/chromium/
) experimenta escrituras pesadas. El perfil de sincronización-daemon es recomendado por el cromo / Consejos y trucos . Fue desarrollado para administrar el perfil de su navegador en tmpfs y sincronizarlo periódicamente con su disco físico. Lamentablemente, el paquete aún no forma parte de la distribución Raspbian 8.0 (Jessie). Así que aún no he probado esto.5. Espacio libre en la tarjeta SD
Espacio libre al desinstalar paquetes y archivos que no necesita. Esto debería extender el uso de manera más uniforme en sus particiones.
¡Hecho!
Ahora ejecute una
iotop -bktoqqq
yiostat -dzp 5
otra vez y vea una reducción significativa en el acceso de escritura cuando el sistema está inactivo. Nada se escribe en mi disco durante muchos minutos. Y no se preocupe por el parpadeo del LED verde ACT . Aparentemente no es un buen indicador de acceso de escritura.fuente
Solo se puede alcanzar una pequeña reducción de los ciclos de escritura al transmitir la salida de syslog a otro servidor. Por supuesto, tener dicho servidor con una
syslogd
ejecución es una condición previa. Sin embargo, dado que Pi es un juguete para los entusiastas de Linux, este es probablemente el caso. :-)Para activar esta transmisión, simplemente inserte una declaración como
en la parte superior del archivo
/etc/rsyslog.conf
, comente todas las demás líneas y reinicie el registro mediante la emisiónservice rsyslog restart
. Después de esto, los mensajes deberían llegar al servidor seleccionado.Un claro efecto secundario ventajoso de esto es que puede monitorear fácilmente su Pi junto con otras máquinas en el mismo servidor. Una desventaja es que durante el inicio y apagado del sistema puede perder algunos mensajes cuando la conexión de red aún no se ha establecido o ya se ha cerrado.
fuente
journald
que los almacena en el diario systemd. También se configuranjournald
para reenviar los registros al socket de syslog en el quersyslogd
está escuchando; que coloca copias adicionales de los mensajes en los archivos de registro debajo/var/log
. Si se siente cómodo usandojournalctl
para explorar sus registros (y funciona mucho mejor que/var/log
una vez que esté familiarizado con él), puede deshabilitar por completorsyslog
y guardar algunas escrituras.Nota: El límite de 100,000 ciclos es una hipótesis que se aplica a todos los dispositivos informáticos, incluso a las teclas de un teclado. Creo que ejecutar Pi en condiciones de enfriamiento adecuadas y ciclos de apagado / inicio adecuados le dará mejores resultados en lugar de entrar en analogías.
También esto puede aumentar mi opinión anterior.
Agregue un nuevo usuario además del usuario Pi [predeterminado]. Apunte el directorio de inicio del nuevo usuario en la unidad externa [pulgar / disco duro]. Otorgue al nuevo usuario, permisos de superusuario y comience a usarlo como su cuenta principal.
Espero que esto ayude..
fuente
/var/log
y/var/tmp
. Además, tener evidencia de la experiencia de que un enfriamiento adecuado hace la diferencia es mucho mejor que decir "Creo".Utilice el demonio syslog de busybox (en el paquete busybox-syslogd en Raspbian / Debian / Ubuntu) en lugar del demonio syslog predeterminado (generalmente rsyslog). Por defecto en Raspbian / Debian / Ubuntu, el syslogd de busybox solo se registra en el buffer de anillo en la memoria y no en el disco. El búfer de anillo tiene un tamaño de 128kB por defecto, es decir, las entradas de registro antiguas giran muy pronto y desaparecen. Pero puede configurarlo para usar más RAM.
Sin embargo, esta es una solución mucho mejor que no tener un demonio syslog en absoluto, es decir, aún puede iniciar sesión y leer las entradas de registro de aprox. últimas horas o días (según el tamaño configurado del búfer de anillo) con el comando
logread
. También puede usarlogread -f
para obtener untail -f
comportamiento similar para, por ejemplo, almacenar solo entradas de registro interesantes usando un script de filtro o para reenviar entradas de registro a través de la red en otro lugar, por ejemplo, usandostunnel
o tal.fuente
Un par de cosas que hice:
chmod del dphys-swapfile (en algún lugar de / etc - no cerca del PI en este momento) para:
Recibo errores menores en el arranque (no puedo iniciar el servicio dphys-swapfile) - Supongamos que hay una mejor manera ... rc-update ??
Además, capturo imágenes del módulo de la cámara para ponerlas en mi servidor web (Pi). Formateé / dev / ram0 en ext2, lo monté como / media / ramdrive (usando /etc/init.rc, creo). Son 4megs, lo suficientemente grandes como para una instantánea. No escribe en SD.
El servidor (oululife.dnsdynamic.com) es experimental, pero en la web. Para realmente estresarlo, dejo que también transmita un episodio MP4 de 'Heartbeat *'. Ejecuta lighttpd, Mysql, PHP, WordPress, e incluso cuando transmito remotamente a través de la web apenas me cuesta sudar, el promedio de carga es de aproximadamente 0,2. Sin exceso de reloj en absoluto. Modelo-B rev. 2, hasta 24/7. Entonces, si puedo obtener mis archivos de registro en el otro 15 / dev / ramX, creo que mi tarjeta Micro-SD 16G durará años ...
fuente