(APFSを搭載したHigh Sierra MacBook Proの)Time Machineは、最後のバックアップ以降にフォルダー内のどのファイルが変更されたかをどのように認識しますか?TMは、ファイルが変更されたディレクトリを監視するためにFSEventsに依存していることを知っています。私が知らないのは、フォルダ内の1個以上のファイルが変更されたことをTMが知ったときのTMの動作です。Time Machine自体に関する高レベルの情報ではなく、詳細な技術説明を探しています。具体的には:
- TMは、最後のバックアップバージョンと同じファイルを特定するために、各ファイルに関する情報(たとえば、1つの変更ファイルと999ファイルが最後のバックアップ以降変更されていないフォルダー内)を使用しますか?TMはファイルサイズと変更時間のみを参照しますか?実際にファイルの内容を読み取りますか?ファイル属性を読み取りますか?
- Time Machineは、どのファイルシステムAPI呼び出しを使用して、どのファイルが変更されたかを確認しますか?具体的には、フォルダーリストごとに1つ(または少数)の呼び出しを行いますか(ディレクトリ一覧を取得するなど)。または、ファイルの内容、属性などの追加情報を取得するために、ファイルごとに1回以上の呼び出しを行いますか?
- 上記の質問に対する回答が異なる場合(「TMがXXXを実行する場合があり、YYYを実行する」など)、TMがフォルダー内の変更されていない各ファイルに対して多くのファイルシステム呼び出しを行う理由は何ですか?
High Sierraを実行している2015年後半のMacBook Proで遅いTime Machineの増分バックアップを診断しようとしているので、私は尋ねています。「毎時」のバックアップは、毎回バックアップされるデータ量が2GB未満であっても、30分以上かかります。
タイムマシンのディスクアクティビティのログ(を使用sudo fs_usage -f filesys backupd
)を見ると、原因は、Outlook 2016 Macに関連付けられた未変更のメッセージファイルと添付ファイルのファイルシステムアクセスであるようです。
Outlookは、メッセージ用に256個のフォルダーと添付ファイル用に256個のフォルダーを作成し、これらのフォルダー間で新しいメッセージと添付ファイルを均等に配布します。たとえば、私のOutlookプロファイルには約25万のメッセージがあり、そのほとんどに1+の添付ファイルがあります。これらの512個のフォルダーにはそれぞれ、約1,000個のメッセージが含まれています。1日に約500件の新しいメッセージが届くため、最後のバックアップから1日が経過した場合、これらの512個のフォルダーにはそれぞれ1〜3個の新しいファイルと約1,000個の未変更のファイルがあります。
ファイルシステムログを見ると、Time Machineは各ファイルに対して多くのファイルシステムコールを行っていますが、これらのフォルダー内の500,000以上のファイルのうち数百のファイルのみが変更されています。変更されていない各ファイルのファイルシステムへのアクセスは高速です(以下のログの抜粋例では〜0.075秒)が、0.075秒に500Kファイルを掛けると、10時間以上かかります!Time Machineは複数のスレッドを実行するため、各増分バックアップは10時間かかりませんが、代わりに「毎時」バックアップごとに30分以上かかります。
1時間ごとに500,000以上のファイルを見るために、変更されていないバッテリー使用量とディスクアクセスが大量にあります。私が使用した後の 30分以上がTM速度であることに注意してくださいsudo sysctl debug.lowpri_throttle_enabled=0
。この変更がなければ、さらに遅くなります。
私は問題の根本原因を解明しようとしています:
- コンピューターの構成はどうですか?ファイルやTime Machineの設定などに変更を加えることで、TMがすべての増分バックアップで変更されていないファイルの調査に時間を費やすのをやめることがありますか?
- 問題はOutlook 2016 Macがメッセージと添付ファイルを保存する方法の基本であるため、大きくアクティブなメールボックスを持つOutlookのすべてのMacユーザーはこの問題を抱えていますか?たとえば、Outlookは、TMが多くの小さなファイルを作成する他のアプリと比較してOutlookのファイルを調べるのに余分な時間を費やす原因となる属性を使用して異常なことをしますか?
- または、Time Machineの設計の根本的な原因は、フォルダ内のファイルが変更された場合、TMが各ファイルに対して比較的高価なファイルシステム呼び出しを行い、どのファイルが変更されたかを確認することです
これは、Time Machineが変更されていない各ファイルに対して多くのファイルシステムアクセスを実行していることを示唆する(最後のバックアップ以降に変更されていない単一ファイルの)ログサンプルです。すでにバックアップされており、最後のバックアップ以降変更されていないこの901バイトのファイルに対して、11(!!!)のファイルシステムアクセスをカウントします。
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
Time MachineバックアップからOutlookフォルダーを除外できることは知っていますが、メッセージを復元できない可能性があるため、これを行うことにheしています。
私はすでにFSEventsログを削除して(sudo mv /.fseventsd /.fseventsd.bak
再起動して)、再作成できるようにしました。これにより、バックアップがかなり高速化され、最後のバックアップ以降にOutlookを起動していない場合に数分しかかかりません。しかし、Outlookを実行した後、バックアップには30分以上かかります。ログを見て、余分な時間がバックアップデータボリュームによるものではないことを確認しました。1.3GB Outlook.sqllite
ファイルは毎回1〜2分でバックアップされますが、代わりに100,000個のファイルが原因であるようです。 Time Machineは見ているが、バックアップはしていない。
ネットワークの問題でも、バックアップNASドライブの速度の問題でもありません。TMが大きなファイルをバックアップしているとき、WiFiを介して毎秒10〜30メガバイトをバックアップします(高速WiFiです!)。また、TMがこれらすべての小さなOutlookファイルを駆け巡っているとき、ギガビットイーサネットに直接接続しても速度は向上しません。
更新:
Monomeethが以下の回答でアドバイスしたように、Time Machine Mechanic(本当に役立つツール!)をダウンロードして実行しました。過去12時間の出力は次のとおりです。
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
ディープスキャンは行われず、各バックアップは1.5〜2 GBをバックアップするのに最低30分かかりました。サイズの大部分は1.3GBの単一のOutlook.sqlliteファイルで、ファイルシステムログに従って約2分でバックアップされ、約10メガバイト/秒で動作します。しかし、ほとんどの時間は(ここでもファイルシステムのログによると)変更されていない100,000個のファイルを読み取り/チェックすることによって費やされます。
これは正常ですか?TMが(FSEventsを介して)どのファイルが変更されたかを知っているが、それでもすべてのファイルを調べる必要があるのは予想外のようです。Outlookのファイルで異常が発生し、Outlookのファイルでは発生するが、他のアプリケーションのファイルでは発生しない異常がありますか?Outlookが拡張属性(たとえば、電子メールメッセージファイルの "作成者"および "受信者"属性)を使用しており、これらの属性が速度低下の原因となっている可能性がありますか?
エラーをどうすればよいかわかりませんが、バックアップの削除に関するものです。おそらく、それは遅いバックアップとは無関係の問題でしょうか?