6 votos

¿Cuál es el comportamiento esperado de Time Machine para carpetas grandes con pocos archivos modificados?

¿Cómo sabe Time Machine (en un MacBook Pro High Sierra con APFS) qué archivos de una carpeta han cambiado desde la última copia de seguridad? Sé que TM se basa en FSEvents para buscar directorios con archivos modificados. Lo que no sé es qué hace TM cuando se entera de que 1+ archivos en una carpeta han cambiado. Estoy buscando una explicación técnica detallada, no información de alto nivel sobre Time Machine en sí. Específicamente:

  • ¿Qué información sobre cada archivo (por ejemplo, en una carpeta con 1 archivo modificado y 999 archivos sin cambios desde la última copia de seguridad) utiliza TM para determinar qué archivos son iguales a la última versión respaldada? ¿Mira TM sólo el tamaño del archivo y la hora de modificación? ¿Lee realmente el contenido de los archivos? ¿Lee los atributos de los archivos?
  • ¿Qué llamadas a la API del sistema de archivos utiliza Time Machine para comprobar qué archivos han cambiado? Específicamente, ¿hace una (o un pequeño número) de llamadas por carpeta, por ejemplo, para obtener un listado de directorios? ¿O realiza más de una llamada? por archivo para obtener información adicional como el contenido de los archivos, los atributos, etc.?
  • Si las respuestas a las preguntas anteriores varían (por ejemplo, "a veces TM hace XXX, a veces YYY"), entonces ¿cuáles son las razones por las que TM estaría haciendo muchas llamadas al sistema de archivos para cada sin cambios ¿archivo en una carpeta?

Lo pregunto porque estoy intentando diagnosticar la lentitud de las copias de seguridad incrementales de Time Machine en mi MacBook Pro de finales de 2015 con High Sierra. Cada copia de seguridad "horaria" tarda más de 30 minutos en completarse, a pesar de que la cantidad de datos respaldados cada vez es inferior a 2 GB.

Mirando los registros de la actividad del disco de Time Machine (usando sudo fs_usage -f filesys backupd ), el culpable parece ser el acceso al sistema de archivos de los archivos de mensajes y adjuntos no modificados asociados a Outlook 2016 Mac.

Outlook crea 256 carpetas para los mensajes y 256 carpetas para los archivos adjuntos, y distribuye uniformemente los nuevos mensajes y archivos adjuntos entre estas carpetas. Por ejemplo, mi perfil de Outlook tiene unos 250.000 mensajes, la mayoría de los cuales tienen más de un archivo adjunto. Cada una de esas 512 carpetas contiene unos 1.000 mensajes. Recibo unos 500 mensajes nuevos al día, así que si ha pasado un día desde mi última copia de seguridad, cada una de esas 512 carpetas tendrá entre 1 y 3 archivos nuevos y unos 1.000 archivos sin modificar.

Mirando los registros del sistema de archivos, Time Machine está haciendo muchas llamadas al sistema de archivos para cada archivo, a pesar de que sólo unos pocos cientos de archivos han cambiado de los más de 500.000 archivos en estas carpetas. El acceso al sistema de archivos para cada archivo no modificado es rápido (~0,075 segundos en el ejemplo de registro que se muestra a continuación), pero si se multiplica 0,075 segundos por 500K archivos, ¡son más de 10 horas! Time Machine ejecuta múltiples hilos, por lo que cada copia de seguridad incremental no tarda 10 horas, sino que tarda más de 30 minutos en cada copia de seguridad "horaria".

Eso es mucho uso de la batería y acceso al disco para mirar más de 500.000 archivos cada hora que no han cambiado. Tenga en cuenta que 30+ minutos es la velocidad TM después de He utilizado sudo sysctl debug.lowpri_throttle_enabled=0 . Sin este cambio, es aún más lento.

Estoy tratando de averiguar la causa del problema:

  • ¿Es por la configuración de mi ordenador? ¿Hay algún cambio que pueda hacer en mis archivos, en la configuración de Time Machine, etc. que haga que TM deje de dedicar tanto tiempo a examinar los archivos no modificados en cada copia de seguridad incremental?
  • ¿El problema es fundamental para la forma en que Outlook 2016 Mac almacena los mensajes y los archivos adjuntos, por lo que todos los usuarios de Mac de Outlook con un buzón grande y activo tendrán este problema? Por ejemplo, ¿hace Outlook algo inusual con los atributos que puede hacer que TM pase más tiempo examinando los archivos de Outlook en comparación con otras aplicaciones que crean muchos archivos pequeños?
  • ¿O la causa principal está en el diseño de Time Machine, donde se espera que si algún archivo de una carpeta ha cambiado, entonces TM hará llamadas relativamente costosas al sistema de archivos para cada archivo con el fin de verificar qué archivos han cambiado?

Aquí hay una muestra de registros (para un solo archivo que no ha sido cambiado desde la última copia de seguridad) que sugiere que Time Machine está haciendo un montón de acceso al sistema de archivos para cada archivo sin cambios. Cuento 11 (¡!) accesos al sistema de archivos para este archivo de 901 bytes del que ya se ha hecho una copia de seguridad y que no ha cambiado desde la última copia de seguridad.

09:14:19.783112  getattrlist                            .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000027   backupd.944294
09:14:19.783424  fsctl                                  .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000006   backupd.944294
09:14:19.783428  fsctl                                  .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000004   backupd.944294
09:14:19.783542  getattrlist                            .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000057   backupd.944294
09:14:19.783603  listxattr                              .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000016   backupd.944294
09:14:19.783612  listxattr                              .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000008   backupd.944294
09:14:19.805903  listxattr                              .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.022290   backupd.944294
09:14:19.806028  listxattr                              .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000109   backupd.944294
09:14:19.856232    HFS_update               (__M__c__)  .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000013   backupd.948297
09:14:19.856258  link                                   .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.050019   backupd.948297
09:14:19.856394  getattrlist                            .Office/Outlook/Outlook 15 Profiles/2018-05-11/Data/Message Attachments/137/8969C57E-7F6D-4152-AF11-FDF535486C92.olk15MsgAttachment    0.000051   backupd.948297

Sé que puedo excluir las carpetas de Outlook de las copias de seguridad de Time Machine, pero dudo en hacerlo porque podría impedirme restaurar los mensajes.

Ya he probado a borrar los registros de FSEvents (mediante sudo mv /.fseventsd /.fseventsd.bak y un reinicio) y permitir que se vuelvan a crear, lo que aceleró considerablemente las copias de seguridad, de modo que sólo tardarán unos minutos si no he iniciado Outlook desde la última copia de seguridad. Pero después de ejecutar Outlook, las copias de seguridad tardan más de 30 minutos. He comprobado, mirando los registros, que el tiempo extra no se debe al volumen de datos de la copia de seguridad: los 1,3 GB. Outlook.sqllite se hace una copia de seguridad en 1-2 minutos cada vez - pero en su lugar parece ser causada por los 100.000s de archivos que Time Machine está mirando pero no hace una copia de seguridad.

No es un problema de red ni de velocidad de mi unidad NAS de copia de seguridad: cuando TM está haciendo una copia de seguridad de archivos grandes, hace una copia de seguridad de 10 a 30 megabytes por segundo a través de WiFi (¡tengo WiFi rápido!). Además, la conexión directa a mi gigabit ethernet no mejora la velocidad cuando la TM está haciendo una copia de seguridad de todos esos pequeños archivos de Outlook.

ACTUALIZACIÓN:

Tal y como aconseja Monomeeth en su respuesta a continuación, he descargado y ejecutado Mecánico de la máquina del tiempo (¡una herramienta realmente útil!). Aquí está la salida de las últimas 12 horas.

Analysis from 2018-05-23 19:38:58 +0000 to 2018-05-24 05:38:58 +0000 for 10 hours:
Backing up to /dev/disk2s2: /Volumes/Time Machine Backups/Backups.backupdb
on which there were 411.74 GB, 411.74 GB, 411.74 GB, 411.74 GB, 411.74 GB, 411.74 GB available.
Started 6 auto backups, and 0 manual backups; completed 7 backups successfully,
last backup completed successfully 7.0 minutes ago,
backed up a total of 16417 files, range 639 to 4666 in each backup,
total data for each backup was 2.09 GB, 2.1 GB, 1.89 GB, 1.58 GB, 1.66 GB, 1.59 GB, 1.54 GB.
Times taken for each auto backup were 93.8, 37.8, 29.8, 34.4, 35.4, 87.6 minutes,
intervals between the start of each auto backup were 140.5, 70.8, 63.4, 69.9, 65.9 minutes.
Created 0 new backups, and deleted 7 old backups,
cancelled 4 backups.
7 errors reported:
2018-05-23 13:27:42.967395-0700 Error: Error Domain=NSOSStatusErrorDomain Code=-50 "paramErr: error in user parameter list" deleting backup: /Volumes/Time Machine Backups/Backups.backupdb/Justin’s MacBook Pro/2018-05-23-113921.inProgress/B14EC326-8AE7-4C23-8F37-17BDEFCF9F1C
2018-05-23 20:33:49.535143-0700 Error: Error Domain=NSOSStatusErrorDomain Code=-36 "ioErr: I/O error (bummers)" deleting backup: /Volumes/Time Machine Backups/Backups.backupdb/Justin’s MacBook Pro/2018-05-21-163447
2018-05-23 20:33:49.536821-0700 Error: Error Domain=NSOSStatusErrorDomain Code=-50 "paramErr: error in user parameter list" deleting backup: /Volumes/Time Machine Backups/Backups.backupdb/Justin’s MacBook Pro/2018-05-22-193257
2018-05-23 20:33:49.536960-0700 Error: Error Domain=NSOSStatusErrorDomain Code=-50 "paramErr: error in user parameter list" deleting backup: /Volumes/Time Machine Backups/Backups.backupdb/Justin’s MacBook Pro/2018-05-22-183736
2018-05-23 20:33:49.537620-0700 Error: Error Domain=NSOSStatusErrorDomain Code=-50 "paramErr: error in user parameter list" deleting backup: /Volumes/Time Machine Backups/Backups.backupdb/Justin’s MacBook Pro/2018-05-22-150607
2018-05-23 20:33:49.537704-0700 Error: Error Domain=NSOSStatusErrorDomain Code=-50 "paramErr: error in user parameter list" deleting backup: /Volumes/Time Machine Backups/Backups.backupdb/Justin’s MacBook Pro/2018-05-22-134626
2018-05-23 20:33:49.539118-0700 Error: Error Domain=NSOSStatusErrorDomain Code=-50 "paramErr: error in user parameter list" deleting backup: /Volumes/Time Machine Backups/Backups.backupdb/Justin’s MacBook Pro/2018-05-22-120245

Tenga en cuenta que no hay escaneos profundos, y cada copia de seguridad tomó un mínimo de 30 minutos para respaldar 1,5-2 GB. La mayor parte del tamaño es el único archivo Outlook.sqllite de 1,3 GB, del que se hace una copia de seguridad en unos 2 minutos según los registros del sistema de archivos, lo que supone unos 10 megabytes/seg. Pero la mayor parte del tiempo se toma (de nuevo según los registros del sistema de archivos) leyendo/comprobando 100.000's de archivos no modificados.

¿Es esto normal? Parece inesperado que TM tenga conocimiento de los archivos que han cambiado (a través de FSEvents) pero aún así tenga que mirar cada archivo. ¿Hay algo inusual en los archivos de Outlook que hace que esto ocurra con los archivos de Outlook pero no con los de otras aplicaciones? ¿Podría ser que Outlook esté utilizando atributos extendidos (por ejemplo, los atributos "Autor" y "Destinatario" en los archivos de mensajes de correo electrónico) y esos atributos son los que están causando la ralentización?

No sé qué pensar de los errores, pero se refieren a la eliminación de las copias de seguridad. ¿Quizás sea un problema no relacionado con la lentitud de mis copias de seguridad?

5voto

Monomeeth Puntos 139

RESPUESTA CORTA

Sí, es un comportamiento esperado.

Time Machine sólo hace copias de seguridad de los datos nuevos o modificados, y mantiene un registro de los datos eliminados. Esto incluye las bibliotecas que pueden contener decenas de miles de archivos (por ejemplo, su biblioteca de fotos) y otras ubicaciones (como directorios/carpetas que contienen un gran número de archivos (como los utilizados por MS Outlook). Lo hace no hacer una nueva copia de seguridad de toda una biblioteca/carpeta cada vez que se realicen cambios en ella, pero sólo se hace una copia de seguridad de los elementos que han sido modificados. Para que Time Machine haga esto correctamente, necesita comprobar cada elemento para determinar qué ha cambiado desde la última copia de seguridad.

RESPUESTA LARGA

El funcionamiento de Time Machine consiste en hacer una copia de seguridad de todo lo que haya cambiado desde la última copia de seguridad. Por ejemplo, un archivo que es:

  • Editado desde la última copia de seguridad es se ha vuelto a poner en marcha en la siguiente copia de seguridad
  • Creado desde la última copia de seguridad es respaldado en la siguiente copia de seguridad
  • Borrado desde la última copia de seguridad es no incluido en la siguiente copia de seguridad (es decir, no hay registro de ella en esa copia de seguridad, pero el archivo en sí sigue almacenado para las copias de seguridad más antiguas de las que formaba parte)

Ahora bien, la confusión suele venir de la forma en que Time Machine hace realmente una copia de seguridad. Voy a tratar de explicar esto a continuación.

  1. La copia de seguridad inicial que TM hace en una nueva unidad de copia de seguridad es una copia de seguridad completa de su Mac. Por lo tanto, si su Mac ha utilizado 80GB de una unidad de 1TB, entonces la primera copia de seguridad ocupará 80 GB de espacio en la nueva unidad de copia de seguridad.
  2. Todas las copias de seguridad incrementales restantes no hacen una copia de seguridad completa. En su lugar, TM hace una copia de seguridad de cualquier dato nuevo (es decir datos recién añadidos y cualquier datos editados ) y mantiene un registro de los datos borrados .
  3. En el caso de archivos como los paquetes (por ejemplo, el paquete de la Fototeca), TM identificará cualquiera:
    • nuevos datos (por ejemplo, nuevas fotos en la carpeta Masters en su paquete de Fototeca) y haga una copia de seguridad de esto
    • datos modificados en su paquete de la Fototeca (por ejemplo, las fotos editadas) y haga una copia de seguridad
    • datos borrados en tu paquete de la Fototeca (por ejemplo, las fotos que has eliminado) y guarda un registro del cambio
  4. Cuando la unidad de copia de seguridad se queda sin espacio, TM borrará todas las copias de seguridad más antiguas que necesite para poder hacer la siguiente (y aquí es donde los usuarios pueden perder datos que no formaban parte de las copias de seguridad más recientes)
  5. Independientemente de si se trata de la copia de seguridad completa inicial o de una copia de seguridad incremental, TM la mostrará al usuario como si fueran copias de seguridad completas separadas. Esto está diseñado sobre la base del diseño de la experiencia del usuario (UX) para que sea más fácil para los usuarios navegar y encontrar los datos, y actúa para tranquilizar a los usuarios que todo está allí. Según Apple:

Todo este proceso está diseñado para garantizar que Time Machine no sólo haga una copia de seguridad de tus datos, sino que recuerde cómo estaban en un momento determinado para que sea más fácil para los usuarios encontrar lo que están buscando. Según Apple:

...lo que diferencia a Time Machine de otras aplicaciones de copia de seguridad es que no sólo guarda una copia de seguridad de cada archivo, sino que recuerda cómo su sistema en un día determinado, por lo que puede volver a visitar su Mac mientras tal y como era en el pasado.

Fuente: Lo básico del Mac: Time Machine (archivo web de la base de conocimientos de Apple)

Así que sí, es un comportamiento esperado. Usando el ejemplo de tu pregunta, aunque hay 11 instancias que estás contando, todas ellas combinadas tardaron una fracción de segundo en ser procesadas por Time Machine, y desde mi punto de vista eso bien vale la pena por la tranquilidad y usabilidad que ofrece Time Machine.

En pocas palabras, no recomendaría tratar de interferir en ella.

[ACTUALIZACIÓN]

Esta actualización no sustituye a la información de alto nivel anterior, sino que proporciona más claridad debido a una revisión de la pregunta del PO que proporciona más contexto en torno a la pregunta.

Como sabes, Time Machine comprueba con la base de datos de eventos del sistema de archivos (FSEvents) almacenada en cada volumen para identificar qué archivos han cambiado desde la última copia de seguridad.

Sin embargo, si falta la base de datos de FSEvents, o si Time Machine determina que está corrupta o incompleta, realizará un escaneo profundo. Si hace un escaneo profundo, esto significa que comprobará la última marca de tiempo modificada de todos los archivos (y directorios) del volumen correspondiente . Como parte de este análisis profundo, Time Machine crea una lista de todos los elementos que han cambiado desde la última copia de seguridad. Obviamente, si estás haciendo una copia de seguridad en un dispositivo remoto (especialmente si es a través de Wi-Fi) entonces esto realmente ralentiza las cosas.

Mientras que usted podría desactivar la grabación de FSEvent en un volumen, esto no te va a ayudar porque quieres usar Time Machine para hacer una copia de seguridad de tus datos y esta acción sólo le obligaría a realizar un escaneo profundo.

A la luz de la información adicional que has proporcionado, tienes que determinar dos cosas:

  1. ¿Time Machine realiza un escaneo profundo cada vez que hace una copia de seguridad?
  2. Si es así, por qué ¿está haciendo eso?

Para responder a la primera pregunta, puede descargar e instalar el Mecánico de la Máquina del Tiempo (T2M2) . Esto analiza sus registros para comprobar si las copias de seguridad de Time Machine están funcionando normalmente o no.

Lo fundamental en tu caso es comprobar si el T2M2 indica lo siguiente:

started 1 deep traversal scans

completed 1 deep traversal scans

Si el uso de la herramienta anterior indica que Time Machine está realizando escaneos profundos, esto puede ser motivo de preocupación. No tanto si es algo ocasional, ya que esto puede suceder después de ciertos eventos de todos modos (por ejemplo, haber arrancado recientemente desde otro volumen, después de una restauración completa, después de una pérdida de energía, etc), pero si está sucediendo todo el tiempo, entonces sí suena la alarma. En ese caso, te remito a Time Machine - Solución de problemas de mensajes de copia de seguridad comunes .

0 votos

Hola @Monomeeth - gracias por la respuesta, pero en realidad estaba buscando información técnica más detallada sobre cómo Time Machine decide qué archivos de una carpeta han cambiado. He actualizado mi pregunta para aclarar lo que estoy buscando. El problema que estoy encontrando no es que TM haga una copia de seguridad de demasiados datos, sino que TM tarda demasiado tiempo en decidir qué archivos han cambiado. 0,075 segundos por archivo sin cambios por 500.000 archivos sin cambios son más de 10 horas. Incluso cuando hay varios hilos, eso es más de 30 minutos para una copia de seguridad "por hora"... ¡y un montón de batería desperdiciada! Estoy tratando de averiguar si puedo acelerar las cosas.

0 votos

@JustinGrant Primero hace un snapshot de APFS y luego examina los atributos de los archivos. Creo que nunca se basó en FSEvent.

0 votos

@mspasov - Es curioso, me cambié de otra solución de copia de seguridad a Time Machine específicamente por otra respuesta de Ask Different que decía: "desde 10.7 (Lion) MacOS proporciona un mecanismo llamado FSEvents que permite notificar a una app sobre los cambios para que pueda hacer su trabajo de una manera mucho más eficiente. Time Machine utiliza FSEvents". apple.stackexchange.com/a/323718/61097 ¿Está equivocada la respuesta de Matt? ¿O es sólo que TM en APFS funciona de manera diferente (y utiliza instantáneas no FSEvents) que TM en el antiguo sistema de archivos?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X