コンピュータを使っている際に、最も恐ろしいのは「作ったデータを失ってしまう」ことだ。macOSが標準で搭載するバックアップ機能「Time Machine」は、ユーザーがミスなどでデータを損失する危険を最小限にしてくれる便利な機能だ。前回の予定ではモバイル向けのTime Machine機能を紹介する予定だったが、ちょっと予定を変更して、今回は最新のシステムで採用されている新しいフォーマットと、それを利用したTime Machineバックアップについて解説する。

最新のMac用フォーマット「APFS」

macOSでは「FAT」「exFAT」や「NTFS」といったWindows用フォーマットに加え、「HFS+(Mac OS拡張)」「APFS」といったmacOS専用フォーマットも利用できる。ただし、どのフォーマットも同じ扱いではなく、例えばNTFSであれば読み込み専用といった制限もある。macOSの場合、システムのインストールにはHFS+か、APFSである必要がある。さらにmacOS Big Surからは標準フォーマットが「APFS」に固定され、HFS+のシステムディスクはAPFSに変換されるようになった。

APFSというのは「Apple File System」の略で、登場は2016年(リリースは2017年)という、新しいフォーマットだ。macOSではmacOS High Sierra(10.13)、iOSではiOS10.3から採用され、現在はmacOS、iOS、iPad OS、watchOS、tvOSの全てで使用されている。

  • High Sierra以降のシステムではディスクユーティリティでフォーマットする際に「APFS」が選べる

このフォーマットにはパーティションを作る際にサイズを指定しなくても後で自由に変更できるなど、さまざまな特徴があるが、大きな特徴を挙げると(1)高速、(2)高セキュリティ、(3)高セーフティなどになるだろう。

(1)については、これまでのHFS+フォーマットがかなり「遅い」デバイスであるHDDに最適化されていたのに対し、SSDなどのフラッシュメモリに最適化されたフォーマットであることが大きく貢献している。HFS+が一度に1つの読み書きしか実行できない「シングルスレッド」のフォーマットであるのに対し、APFSは同時に複数の処理を行える「マルチスレッド」対応になっているのだ。

ファイルをコピーする際に、並列して複数のファイルがコピーされるので、次々に処理をこなしていける。またHFS+では書き込み時に変更点を2回書き込んでいたが、これが1回で済むようになり、単純に2倍近く速くなった。

さらに、データを複製する際に、実際に書き込むのではなく、ファイルの所在を管理するデータ(メタデータ)だけを処理し、実際にデータを書き込むのは「複製したファイルが改変されたとき」にする「コピーオンライト」に対応している。APFSでは単純なファイルの複製が一瞬で終わるのはこのためだ。そして新しく作られたファイルへの改変は差分データとして保存されるため、ファイル2つが消費するのは「オリジナル+差分」の容量だけで済む。結果として書き込み時間も減らせ、容量効率も高まるわけだ。

  • コピーオンライトではファイルの情報だけが先にファイルを2つあるように見せている。複製したファイルの改変は一時的にキャッシュされ、保存時にファイルに書き込まれる。このときデータをブロック単位で扱えるため、差分が取りやすくなっているのもAPFSの機能だ

(2)についてはネイティブに暗号化されるフォーマットであり、APFSではmacOSの暗号化機能「File Vault」がデフォルトで適用されるようになっている。当然、データの暗号化自体も高速で、ユーザーは暗号化されていることを意識することなく、通常のデータ書き込みの感覚で利用できる。

(3)については、ファイルの所在などを記録したレコードファイルを、上書き更新ではなく、その都度新規作成するため、レコード破損によるファイルへのアクセス障害が起きなくなっている。また、ファイルを上書きする際も、従来は単純に上書きしていたが、APFSでは新規に作成して古い方へのリンクを外し、あとで削除するようになっている。これによって上書き時に何らかの原因で書き込みが中断された場合などに、ファイルが破損する恐れが少なくなっており、万が一壊れても、元のファイルが残っているので、リンクを貼り直すだけでいい。これは前述した「コピーオンライト」による恩恵だ。

そしてもう1つ、APFSでは「スナップショット」という仕組みが採用された。これがTime Machineとも大きく関わってくるのだ。

バックアップを激変させる「スナップショット」

スナップショットとは、ボリュームのある瞬間を切り取って保存する機能だ。スナップショットは複数保存でき、任意に削除することもできる。

従来型のバックアップで、例えばAとBというファイルが共有されている場合を考えよう。AとBをバックアップ中に、誰かがAを更新してしまうと、バックアップされたAはその他のファイルとは時系列が異なる「A’」の状態になってしまう。例えばBがAを引用しているつもりでも、バックアップを戻したらAがA’に変わっており、整合性が取れなくなってしまう場合があるということだ。

しかしスナップショットでは、スナップショット作成の瞬間の状態で一度ファイルを固定し、外部向けにはA’とB’を用意しておく。そして外部から変更があった場合は、AではなくA’に変更分を記録し、バックアップが終わった段階でAをA’に置き換えて変更を反映する。バックアップの瞬間に戻しても、AはAのままなので、Bとの関係の整合性は正しく保たれる。

また、スナップショットを作成した瞬間に更新用に作成されるA’は、実際に容量を持たず、Aへの参照情報だけを持つ。実際の変更分はスナップショットの管理領域にあるキャッシュに差分だけが書き込まれ、後で反映する形になる。実際のところ、スナップショットの仕組みは前述した「コピーオンライト」を利用しているので、APFS最大の機能はコピーオンライト、と言ってもいいかもしれない。

  • スナップショットでは「取った瞬間」の状態がそのままキープされる。各スナップショットは変更された差分のみを保存し、変更がない場合は前のスナップショットを参照する。ちなみにWindowsでは「ボリュームシャドウコピーサービス(VSS)」という名前で実装されている

さて、すでに勘のいい方はお気付きだろうが、このスナップショットはTime Machineのバックアップにおいても非常に有効な機能だ。ということで、macOS Big SurからはTime Machine用のバックアップディスクのフォーマットにAPFSが採用されるようになり、バックアップ自体がスナップショット機能を使うようになった。

つまり、APFSにおけるTime Machineのバックアップは、実際にはスナップショットを記録しているということだ。Time Machineのバックアップ中にファイルが変更されても、前述したようにバックアップを取り始めた瞬間で状態は保存されているため、ファイルの整合性を心配する必要はない。HFS+の時代はファイルを常にチェックして、変更のあったファイルをマークして、それをバックアップするという挙動になっていたが、APFSの場合、2つのスナップショットを比較して差分だけを記録するようになったため、仕組みがグッとシンプルになった。シンプルということはトラブルも起きにくく、挙動も軽くなるため、いいこと尽くめなのだ。

なお、新しいAPFSフォーマットと、それを活用した新しいTime Machineは非常に強力だが、Big Sur以降のシステムで作成したバックアップは、Big Sur以前のシステムとは互換性がない。HFS+を使ったTime Machine用ハードディスクを新しいシステムに接続するとAPFSに変換できるのだが、もし古いシステムでバックアップを参照しなければならないケースを想定するなら、変換せずにHFS+のまま運用するか、別のストレージにTime Machine以外の手段でバックアップを取る必要がある。すでにTime Machineの標準がAPFSになって2年以上経つため、そのようなケースは少ないと思われるが、念のため気をつけておこう。

またAFPSでは従来のHFS+用のサードパーティ製ディスクユーティリティソフトの多くが非対応になっている。筆者が個人的に推している「Disk Warrior」も2年近く非対応のままだ。以前よりトラブルが起きにくくなっているため、必要ないということなのかもしれないが、何かあった時に頼れるのがシステム付属の「ディスクユーティリティ」くらいしかない。万が一のトラブルに備える意味でも、Time Machineによるバックアップはしっかり取っておこう。

次回は(今度こそ)モバイル環境におけるTime Machineの機能について紹介する。