Proyecto movido a GitHub
Miér 7 Abr 2021 - 19:23 por bittor
Proyecto movido a GitHub:
https://github.com/bittor7x0/VDR-M7x0
Con muchos cambios y correcciones, Más información
También incluye el plugin epgfixer para corregir la EPG usando expresiones regulares y el plugin xmltv2vdr para descargar la EPG de internet
https://github.com/bittor7x0/VDR-M7x0
Con muchos cambios y correcciones, Más información
También incluye el plugin epgfixer para corregir la EPG usando expresiones regulares y el plugin xmltv2vdr para descargar la EPG de internet
Comentarios: 0
Buscar
Mejoras en la comprobación de discos
3 participantes
Página 1 de 1.
Mejoras en la comprobación de discos
Este tema viene por este mensaje que escribí.
Desde que arreglé el disco duro externo (un Seagate Freeagent) para que no diera problemas con el ahorro de energía, sólo me he encontrado un caso en el que la comprobación de discos salta cuando no debería: si se va la luz.
Nuestro Giga no tiene pila interna para conservar la hora, depende de que esté enchufado. Si se desenchufa, o si se va la luz, pierde la fecha y hora. Así que pasa lo siguiente (un ejemplo):
- Apagamos el Giga y nos vamos a dormir
- Durante la noche, se va la luz y el Giga pierde la fecha y hora (ahora, para él, son las 00:00 del 1/1/1970)
- Por la mañana, encendemos el Giga
- En los scripts de inicio, el fsck mira cuándo se comprobó el disco por última vez (ya que, si seguimos las recomendaciones del foro, al formatear el disco especificamos que se haga una comprobación cada 30 días) y (oh, ¡sorpresa!) hace -39 años (!!) que no se comprueba el disco
- El Giga comprueba el disco (en mi caso son unos 20 minutos sin poder hacer nada) y guarda en el disco que la última fecha en la que se comprobó el disco fue el 1/1/1970
- Al arrancar, el Giga recupera la hora correcta, ya sea por NTP o desde el canal que tengamos configurado
- Apagamos el Giga y lo volvemos a encender
- Al inicio, el fsck mira cuándo se comprobó el disco por última vez y (oh, sorpresa) hace 39 años (!!) que no se comprueba (recordad que en la última comprobación se guardó la fecha 1/1/1970 en el disco)
- El Giga comprueba el disco (otros 20 minutos sin poder hacer nada) y guarda en el disco la última fecha en la que se comprobó el disco (esta vez la buena)
Veo dos problemas con esto:
1. Se comprueba el disco dos veces (por el cambio de fecha) en un periodo de tiempo muy corto
2. Se pierde un montón de tiempo en las comprobaciones, si tenemos prisa por hacer algo (grabar un programa que empieza ya mismo) toca esperar
La solución más sencilla sería sincronizar la hora antes de que se ejecute /sbin/usbautomounter aunque no sé si en ese momento la red estará ya configurada (para sincronizar por NTP, lo que no funcionaría en la versión lite del firmware) o si ya se habrá sintonizado algún canal para poder coger la hora de ahí.
Otra opción es guardar la fecha al apagar el Giga, y recuperarla al arrancar si detectamos un "salto en el tiempo". No tendremos la fecha y hora exactas pero al menos sí tendremos una aproximación que evitará la comprobación del disco:
En rc.local (antes de que se ejecute /sbin/usbautomounter):
Y en rc.halt (antes de desmontar /etc):
Esto no afectaría a la comprobación de discos cuando hay un corte de luz mientras el Giga está funcionando, ya que al estar marcado el disco como "no desmontado correctamente", ese estado prevalece frente al de intervalo de comprobaciones que se haya configurado.
Desde que arreglé el disco duro externo (un Seagate Freeagent) para que no diera problemas con el ahorro de energía, sólo me he encontrado un caso en el que la comprobación de discos salta cuando no debería: si se va la luz.
Nuestro Giga no tiene pila interna para conservar la hora, depende de que esté enchufado. Si se desenchufa, o si se va la luz, pierde la fecha y hora. Así que pasa lo siguiente (un ejemplo):
- Apagamos el Giga y nos vamos a dormir
- Durante la noche, se va la luz y el Giga pierde la fecha y hora (ahora, para él, son las 00:00 del 1/1/1970)
- Por la mañana, encendemos el Giga
- En los scripts de inicio, el fsck mira cuándo se comprobó el disco por última vez (ya que, si seguimos las recomendaciones del foro, al formatear el disco especificamos que se haga una comprobación cada 30 días) y (oh, ¡sorpresa!) hace -39 años (!!) que no se comprueba el disco
- El Giga comprueba el disco (en mi caso son unos 20 minutos sin poder hacer nada) y guarda en el disco que la última fecha en la que se comprobó el disco fue el 1/1/1970
- Al arrancar, el Giga recupera la hora correcta, ya sea por NTP o desde el canal que tengamos configurado
- Apagamos el Giga y lo volvemos a encender
- Al inicio, el fsck mira cuándo se comprobó el disco por última vez y (oh, sorpresa) hace 39 años (!!) que no se comprueba (recordad que en la última comprobación se guardó la fecha 1/1/1970 en el disco)
- El Giga comprueba el disco (otros 20 minutos sin poder hacer nada) y guarda en el disco la última fecha en la que se comprobó el disco (esta vez la buena)
Veo dos problemas con esto:
1. Se comprueba el disco dos veces (por el cambio de fecha) en un periodo de tiempo muy corto
2. Se pierde un montón de tiempo en las comprobaciones, si tenemos prisa por hacer algo (grabar un programa que empieza ya mismo) toca esperar
La solución más sencilla sería sincronizar la hora antes de que se ejecute /sbin/usbautomounter aunque no sé si en ese momento la red estará ya configurada (para sincronizar por NTP, lo que no funcionaría en la versión lite del firmware) o si ya se habrá sintonizado algún canal para poder coger la hora de ahí.
Otra opción es guardar la fecha al apagar el Giga, y recuperarla al arrancar si detectamos un "salto en el tiempo". No tendremos la fecha y hora exactas pero al menos sí tendremos una aproximación que evitará la comprobación del disco:
En rc.local (antes de que se ejecute /sbin/usbautomounter):
- Código:
if [ "`date '+%Y'`" = "1970" ] ; then
# Si estamos en 1970, recuperamos la fecha aproximada desde /etc/time.backup
/bin/date -r /etc/time.backup
fi
Y en rc.halt (antes de desmontar /etc):
- Código:
if [ "`date '+%Y'`" != "1970" ] ; then
# Creamos el fichero /etc/time.backup con la fecha y hora actuales
touch /etc/time.backup
fi
Esto no afectaría a la comprobación de discos cuando hay un corte de luz mientras el Giga está funcionando, ya que al estar marcado el disco como "no desmontado correctamente", ese estado prevalece frente al de intervalo de comprobaciones que se haya configurado.
devotee- Cantidad de envíos : 45
Fecha de inscripción : 14/01/2009
Re: Mejoras en la comprobación de discos
Lo de no poder saltar atrás en el tiempo me parece bien. Pictool puede devolver si se ha producido un fallo de corriente (vdr lo tiene en cuenta). En ese caso puede ejecutarse un script guardado durante el apagado (en el rc.halt) que ajuste con la misma hora de cierre.
Si queréis puedo implementarlo en el arranque de ntpclient, aunque para la versión lite estaría mejor en el rc.halt (guardar) y yo diría que en rc (recuperar) antes de cargar ntpclient.
Si queréis puedo implementarlo en el arranque de ntpclient, aunque para la versión lite estaría mejor en el rc.halt (guardar) y yo diría que en rc (recuperar) antes de cargar ntpclient.
Posix- Desarrollador
- Cantidad de envíos : 691
Fecha de inscripción : 05/11/2008
Edad : 57
Localización : Madrid
Re: Mejoras en la comprobación de discos
La idea está muy bien, pero no me gusta la idea de implementarla a través de los scripts del firmware porque aunque no lo parezca hacen un arranque y un apagado más lentos.
Ya sé que no es mucho y casi no se nota, pero si todas las cosas las hacemos igual en poco tiempo tenemos otro wavebug .
Lo más óptimo de cara al rendimiento sería que el propio pic_tool si hay un fallo de corriente hiciera este proceso.
pic_tool se ejecuta al arrancar con los parámetros "time pictosys" para obtener la hora del PIC y establecerla en el sistema y al apagar con "time systopic" para pasar la hora del sistema al PIC, por lo que en systopic se podría actualizar la hora de algún archivo del sistema que no se use para nada, como por ejemplo /etc/fw-version, /etc/systemtype, ... y al arrancar pictosys comprobaría si hay un fallo de corriente o la fecha es 1970 para darle al sistema la hora del PIC o del archivo con la hora correcta.
De esta forma sería más rápido al ejecutarse desde un binario compilado y más limpio de cara a no enguarrar los scripts del firm.
Ya sé que no es mucho y casi no se nota, pero si todas las cosas las hacemos igual en poco tiempo tenemos otro wavebug .
Lo más óptimo de cara al rendimiento sería que el propio pic_tool si hay un fallo de corriente hiciera este proceso.
pic_tool se ejecuta al arrancar con los parámetros "time pictosys" para obtener la hora del PIC y establecerla en el sistema y al apagar con "time systopic" para pasar la hora del sistema al PIC, por lo que en systopic se podría actualizar la hora de algún archivo del sistema que no se use para nada, como por ejemplo /etc/fw-version, /etc/systemtype, ... y al arrancar pictosys comprobaría si hay un fallo de corriente o la fecha es 1970 para darle al sistema la hora del PIC o del archivo con la hora correcta.
De esta forma sería más rápido al ejecutarse desde un binario compilado y más limpio de cara a no enguarrar los scripts del firm.
Re: Mejoras en la comprobación de discos
Me parece muy buena idea.
Yo me quité de Lemmi por los cienes y cienes de scripts que manejaban scripts que llamaban a scripts que revisaban si ejecutar un script.
No se muy bien como cambiar la fecha de un fichero desde código pero no debe ser difícil.
Si no hay ningún voluntario me ocupo yo, aunque últimamente estoy demasiado liado.
Yo me quité de Lemmi por los cienes y cienes de scripts que manejaban scripts que llamaban a scripts que revisaban si ejecutar un script.
No se muy bien como cambiar la fecha de un fichero desde código pero no debe ser difícil.
Si no hay ningún voluntario me ocupo yo, aunque últimamente estoy demasiado liado.
Posix- Desarrollador
- Cantidad de envíos : 691
Fecha de inscripción : 05/11/2008
Edad : 57
Localización : Madrid
Re: Mejoras en la comprobación de discos
Creo que en el VDR cambiaste la función que actualiza la hora del archivo .update para el tema de detectar los directorios de grabación en caliente sin necesidad de reiniciar el VDR, porque después de ese cambio así lo marca en el log.
En principio sería similar.
En principio sería similar.
Temas similares
» Grabaciones en red y comprobación de discos
» Mejoras a la cola de recortes de grabaciones
» Desactivar comprobación automática discos
» Mejoras a activar en kernel para soporte de discos con GPT en lugar de MBR
» Mejoras arranque Mediatomb
» Mejoras a la cola de recortes de grabaciones
» Desactivar comprobación automática discos
» Mejoras a activar en kernel para soporte de discos con GPT en lugar de MBR
» Mejoras arranque Mediatomb
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.