Woher weiß Time Machine (auf einem High Sierra MacBook Pro mit APFS), welche Dateien in einem Ordner sich seit der letzten Sicherung geändert haben? Ich weiß, dass TM auf FSEvents angewiesen ist , um nach Verzeichnissen mit geänderten Dateien zu suchen. Was ich nicht weiß, ist, was TM tut, wenn es erfährt, dass sich 1+ Dateien in einem Ordner geändert haben. Ich suche nach einer detaillierten technischen Erklärung, nicht nach allgemeinen Informationen über Time Machine selbst. Speziell:
Ich frage, weil ich versuche, langsame inkrementelle Time Machine-Backups auf meinem MacBook Pro von Ende 2015 mit High Sierra zu diagnostizieren. Jede „stündliche“ Sicherung dauert mehr als 30 Minuten, obwohl die jedes Mal gesicherte Datenmenge unter 2 GB liegt.
Betrachtet man die Protokolle der Festplattenaktivität von Time Machine (mit sudo fs_usage -f filesys backupd
), scheint der Übeltäter der Dateisystemzugriff auf unveränderte Nachrichten- und Anhangsdateien zu sein, die mit Outlook 2016 Mac verbunden sind.
Outlook erstellt 256 Ordner für Nachrichten und 256 Ordner für Anhänge und verteilt neue Nachrichten und Anhänge gleichmäßig auf diese Ordner. Zum Beispiel hat mein Outlook-Profil etwa 250.000 Nachrichten, von denen die meisten 1+ Anhänge haben. Jeder dieser 512 Ordner enthält ungefähr 1.000 Nachrichten. Ich erhalte ungefähr 500 neue Nachrichten pro Tag. Wenn also seit meiner letzten Sicherung ein Tag vergangen ist, enthält jeder dieser 512 Ordner 1-3 neue Dateien und ungefähr 1.000 unveränderte Dateien.
Wenn Sie sich die Dateisystemprotokolle ansehen, führt Time Machine viele Dateisystemaufrufe für jede Datei durch, obwohl sich nur ein paar hundert Dateien von über 500.000 Dateien in diesen Ordnern geändert haben. Der Dateisystemzugriff für jede unveränderte Datei ist schnell (~0,075 Sekunden im Beispielprotokollauszug unten), aber wenn Sie 0,075 Sekunden mit 500.000 Dateien multiplizieren, sind das über 10 Stunden! Time Machine führt mehrere Threads aus, sodass jede inkrementelle Sicherung nicht 10 Stunden dauert, sondern mehr als 30 Minuten für jede „stündliche“ Sicherung.
Das ist eine Menge Akkuverbrauch und Festplattenzugriff, um sich jede Stunde mehr als 500.000 Dateien anzusehen, die sich nicht geändert haben. Beachten Sie, dass 30+ Minuten die TM-Geschwindigkeit ist, nachdem ich verwendet habe sudo sysctl debug.lowpri_throttle_enabled=0
. Ohne diese Änderung ist es noch langsamer.
Ich versuche, die Ursache des Problems herauszufinden:
Hier ist ein Protokollbeispiel (für eine einzelne Datei, die seit der letzten Sicherung nicht geändert wurde), das darauf hindeutet, dass Time Machine für jede unveränderte Datei viel Dateisystemzugriff durchführt. Ich zähle 11 (!!!) Dateisystemzugriffe für diese eine 901-Byte-Datei, die bereits gesichert wurde und seit der letzten Sicherung unverändert ist.
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
Ich weiß, dass ich Outlook-Ordner von Time Machine-Sicherungen ausschließen kann, aber ich zögere, dies zu tun, da es mich daran hindern könnte, Nachrichten wiederherzustellen.
Ich habe bereits versucht, die FSEvents-Protokolle (über sudo mv /.fseventsd /.fseventsd.bak
einen Neustart) zu löschen und neu zu erstellen, was die Sicherungen erheblich beschleunigte, sodass sie nur wenige Minuten dauern, wenn ich Outlook seit der letzten Sicherung nicht gestartet habe . Aber nachdem ich Outlook ausgeführt habe, dauern Backups mehr als 30 Minuten. Ich habe anhand von Protokollen überprüft, dass die zusätzliche Zeit nicht auf das Backup-Datenvolumen zurückzuführen ist - die 1,3-GB- Outlook.sqllite
Datei wird jedes Mal in 1-2 Minuten gesichert -, sondern anscheinend durch die 100.000 Dateien verursacht wird Time Machine sieht sich das an, sichert aber nicht.
Es ist weder ein Netzwerkproblem noch ein Geschwindigkeitsproblem meines Backup-NAS-Laufwerks: Wenn TM große Dateien sichert, sichert es 10-30 Megabyte pro Sekunde über WLAN (ich habe schnelles WLAN!). Auch die direkte Verbindung mit meinem Gigabit-Ethernet verbessert die Geschwindigkeit nicht, wenn TM all diese winzigen Outlook-Dateien durchwühlt.
AKTUALISIEREN:
Wie von Monomeeth in seiner Antwort unten empfohlen , habe ich Time Machine Mechanic heruntergeladen und ausgeführt (wirklich hilfreiches Tool!). Hier ist die Ausgabe der letzten 12 Stunden.
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
Beachten Sie, dass es keine tiefen Scans gibt und jede Sicherung mindestens 30 Minuten dauerte, um 1,5 bis 2 GB zu sichern. Die meiste Größe ist die einzelne Outlook.sqllite-Datei mit 1,3 GB, die laut den Dateisystemprotokollen in etwa 2 Minuten gesichert wird, was etwa 10 Megabyte/s ausmacht. Aber die meiste Zeit wird (wieder laut Dateisystemprotokollen) mit dem Lesen/Prüfen von 100.000 unveränderten Dateien verbracht.
Ist das normal? Es scheint unerwartet, dass TM weiß, welche Dateien sich geändert haben (über FSEvents), aber trotzdem jede Datei ansehen muss. Gibt es etwas Ungewöhnliches an den Dateien von Outlook, das dazu führt, dass es mit den Dateien von Outlook, aber nicht mit den Dateien anderer Anwendungen passiert? Könnte es sein, dass Outlook erweiterte Attribute verwendet (z. B. „Autor“- und „Empfänger“-Attribute für E-Mail-Nachrichtendateien) und diese Attribute die Verlangsamung verursachen?
Ich bin mir nicht sicher, was ich von den Fehlern halten soll, aber sie beziehen sich auf das Löschen von Backups. Vielleicht ist das ein Problem, das nichts mit meinen langsamen Backups zu tun hat?
KURZE ANTWORT
Ja, das ist das erwartete Verhalten.
Time Machine sichert nur neue oder geänderte Daten und protokolliert alle gelöschten Daten. Dazu gehören Bibliotheken, die Zehntausende von Dateien enthalten können (z. B. Ihre Fotobibliothek) und andere Speicherorte (z. B. Verzeichnisse/Ordner, die eine große Anzahl von Dateien enthalten (z. B. die von MS Outlook verwendeten). Es wird keine neue Sicherung durchgeführt jedes Mal, wenn Sie Änderungen daran vornehmen, eine ganze Bibliothek/einen ganzen Ordner, sichert aber nur die geänderten Elemente.Damit Time Machine dies ordnungsgemäß tun kann, muss es jedes Element überprüfen, um festzustellen, was sich seit der letzten Sicherung geändert hat.
LANGE ANTWORT
Time Machine funktioniert so, dass es alles sichert, was sich seit der letzten Sicherung geändert hat. Zum Beispiel eine Datei, die ist:
Nun, die Verwirrung kommt normalerweise von der Art und Weise, wie Time Machine tatsächlich ein Backup durchführt. Ich werde versuchen, dies weiter unten zu erklären.
Dieser gesamte Prozess soll sicherstellen, dass Time Machine nicht nur Ihre Daten sichert, sondern sich auch merkt, wie sie zu einem bestimmten Zeitpunkt aussahen, sodass Benutzer leichter finden können, wonach sie suchen. Laut Apple:
... was Time Machine von anderen Sicherungsanwendungen unterscheidet, ist, dass es nicht nur eine Ersatzkopie jeder Datei speichert, sondern sich auch merkt, wie Ihr System an einem bestimmten Tag aussah – sodass Sie Ihren Mac wieder so sehen können, wie er in der Vergangenheit aussah.
Quelle: Mac Basics: Time Machine (Webarchiv der Apple Knowledge Base-Dokumentation)
Also ja, das ist das erwartete Verhalten. Wenn Sie das Beispiel in Ihrer Frage verwenden, haben Sie, obwohl Sie 11 Instanzen zählen, alle zusammen einen Bruchteil einer Sekunde für die Verarbeitung von Time Machine benötigt, und aus meiner Sicht ist das die Ruhe und Benutzerfreundlichkeit dieser Zeit wert Maschinenangebote.
Kurz gesagt, ich würde nicht empfehlen, zu versuchen, sich daran zu stören.
[AKTUALISIEREN]
Diese Aktualisierung ersetzt nicht die oben genannten Informationen auf hoher Ebene, bietet jedoch weitere Klarheit aufgrund einer Überarbeitung der Frage des OP, die weiteren Kontext rund um die Frage bietet.
Wie Sie wissen, überprüft Time Machine die Dateisystemereignisdatenbank (FSEvents), die auf jedem Volume gespeichert ist, um festzustellen, welche Dateien sich seit der letzten Sicherung geändert haben.
Wenn jedoch die FSEvents-Datenbank fehlt oder wenn Time Machine feststellt, dass sie beschädigt oder unvollständig ist, führt sie einen gründlichen Scan durch. Wenn es einen tiefen Scan durchführt, bedeutet dies, dass es den Zeitstempel der letzten Änderung aller Dateien (und Verzeichnisse) auf dem relevanten Volume überprüft . Als Teil dieses tiefen Scans erstellt Time Machine eine Liste aller Elemente, die sich seit der letzten Sicherung geändert haben. Wenn Sie auf einem Remote-Gerät sichern (insbesondere wenn es über Wi-Fi erfolgt), verlangsamt dies natürlich die Dinge wirklich.
Sie könnten zwar die FSEvent-Aufzeichnung auf einem Volume deaktivieren, dies wird Ihnen jedoch nicht helfen, da Sie Time Machine zum Sichern Ihrer Daten verwenden möchten und diese Aktion es nur dazu zwingen würde, einen tiefen Scan durchzuführen.
Angesichts der zusätzlichen Informationen, die Sie bereitgestellt haben, müssen Sie zwei Dinge feststellen:
Um die erste Frage zu beantworten, können Sie Time Machine Mechanic (T2M2) herunterladen und installieren . Dadurch werden Ihre Protokolle analysiert, um zu überprüfen, ob Time Machine-Sicherungen normal ausgeführt werden oder nicht.
Das Wichtigste in Ihrem Fall ist zu prüfen, ob T2M2 Folgendes anzeigt:
started 1 deep traversal scans
completed 1 deep traversal scans
Wenn die Verwendung des obigen Tools anzeigt, dass Time Machine tatsächlich Tiefenscans durchführt, kann dies Anlass zur Sorge geben. Nicht so sehr, wenn es eine gelegentliche Sache ist, da dies sowieso nach bestimmten Ereignissen passieren kann (z. B. wenn es kürzlich von einem anderen Volume gebootet wurde, nach einer vollständigen Wiederherstellung, nach einem Stromausfall usw.), aber wenn es die ganze Zeit passiert, dann tut es das Alarmglocken läuten. In diesem Fall verweise ich Sie auf Time Machine - Troubleshooting Common Backup Messages .
Justin Grant
mspasov
Justin Grant
mspasov
Monomet
Justin Grant
Monomet
Justin Grant
Monomet
Justin Grant
Justin Grant
Justin Grant
Justin Grant
fs_usage
Tool hat selbst mit der-w
Option den vorderen Teil des Pfads abgeschnitten, wodurch es unmöglich war zu erkennen, ob es sich um mein Laptop-Laufwerk oder das Remote-Backup-Laufwerk handelte, das gelesen und beschrieben wurde. (Fortsetzung unten)Justin Grant
Monomet