This article is for an older version of CCC. You can find the latest version here.
Product: 
ccc5

数年前、AppleがAPFSファイルシステムを紹介したとき、次の新しい概念が一緒に登場しました: APFS コンテナ です。すべてのAPFSボリュームは1つのコンテナの中にあり、そのコンテナはディスクのパーティションスキームの中にあります。コンテナ内のすべてのボリュームはコンテナで利用可能なスペースを共有します。別のAPFSコンテナはお互いのスペースを共有しません。

macOS High Sierraで、Appleはボリュームに 役割 の概念を追加しました。その時点では、役割は3つだけで、大部分は平均的ユーザが気付くものではありませんでした:Preboot、復旧、そしてVM (仮想メモリ)です。これらの役割により、システムが特定のボリュームを特定の目的に識別できるようになり、その後ボリュームを特定の方法で扱えるようになります (例えば、上記の役割を持つ任意のボリュームをデフォルトで非表示にしたり、またデフォルトでマウントしないようにできます)。

以下の記述でこれらのAPFSの概念を説明しましょう:

APFSファイルシステムの概念

パーティションスキームは物理的ディスク全体を網羅します。パーティションスキーム内には1つ以上のAPFSコンテナを作成でき、それぞれのコンテナ内には1つ以上のAPFSボリュームを作成できます。過去のパーティションとは異なり、コンテナ内のすべてのボリュームはコンテナに割り当てられたスペースを共有します。上の例では、3つのグレーのヘルパーパーティション、システムとデータボリューム、そして“その他のボリューム”、それらすべてがその700GBのストレージにアクセスできます。しかし、“その他のボリューム B”は別のコンテナにあるので、コンテナ“A”のボリュームとスペースを共有しません。通常、ディスクはこのようにパーティションされていませんが、例えば、同じディスクにある起動ディスクのクローンを維持したい場合 (例、デバロッパがテスト目的で)、それが必要になります。

新しい概念:APFSボリュームグループ

macOS Catalinaで、AppleはAPFSファイルシステムにもう1つの新しい概念を紹介しました: ボリュームグループ です。これはAPFSコンテナ内のボリュームを概念的にグループ化したもので、新しいサブ構造ではありません。また、AppleはAPFSボリュームに利用できる役割の数を大幅に広げました (現在16のユニークな役割があります)。Catalinaにアップグレードすると、現在使用中のmacOSシステムボリュームは名前が変更されます。例えば、“Macintosh HD - Data”にです。その役割は データ に設定され、その後、新しいボリュームが システム の役割と共に起動ディスクのAPFSコンテナに追加され、同時にデータボリュームと共にグループ化されます。そのグループ内の2つのボリュームは、特別な絆を共有し、Finderから、およびそれぞれのボリュームのファイルシステムから特別な扱いを受けます。ユーザの視点から見ると、これら2つのボリュームは1つの、統合されたボリュームとして扱われます。しかし、ディスクユーティリティを見ると、2つのボリュームは異なる、別個の項目として表示されます。

読み出し専用のシステムボリューム

おそらく、macOS Catalinaでの最大の変更を1つ挙げるなら、システムボリュームが起動時にマウントされる方法、つまり読み出し専用ということです。ボリュームを読み出し専用にマウントすることで、攻撃者がmacOSのシステムボリュームのコンテンツに変更を加えることが不可能になります。だからと言って、お使いのMacがすべての考え得る攻撃から100%安全という訳ではありません。むしろ、それらの危険に対する防御の1つと考える方が良いでしょう。

macOS Big Surより、Appleは暗号で封印された “署名付きのシステムボリューム”を導入して、システムボリュームの保護を拡張しました。システムボリュームが起動時にマウントされることが完全になくなり、代わりに、システムボリュームのスナップショットがマウントされ、起動ディスクとして使用されています。そのスナップショットは読み出し専用で、完全にイミュータブルです。

データボリューム

データボリュームはシステムボリュームの読み出し/書き込みの“影”と考えることができます。データボリュームにはすべてのユーザデータ (例、ホームフォルダ、他社製アプリケーション等) が含まれていますが、同時に、読み出し専用ボリュームに存在できない一握りのシステムコンポーネントも含まれています。例えば、AppleはSafariをデータボリュームに配置しています。おそらく、より頻繁にアップデートできるからでしょう。現在の起動ディスクのデータボリュームは、システムの特別なマウントポイントにマウントされています。FinderからMacintosh HD > システム > ボリューム > {データボリューム名} と進むと、見つけられます。そこで目にするのは、システムボリュームのルートレベルのフォルダのレプリカです。これらのフォルダ内には、まだ書き込み可能なシステムコンポーネントがすべてあります。しかし通常、これらの項目はFinderに表示されません。というのは、Finderは2つのボリュームのコンテンツを視覚的に1つにして、1つのボリュームとして表示するからです。また、Finderがデータボリュームをその他すべてのボリュームの横にリスト表示することはありません。つまり、 データボリュームはマウントされていますが、非表示です

Firmlinksと絆を築くには

1つの統合されたボリュームであるという幻想を解き放つために、AppleはAPFSにFirmlinksのサポートを追加しました。名前が暗示する通り、Firmlinkは概念的にソフトリンクとハードリンク間を繋ぎます。しかし、おそらくその説明でそれらがより明確になる訳ではありません (ソフトリンクとハードリンクに精通している人でさえも!)。Appleは、Firmlinkを2つのファイルシステム間の“双方向ワームホール”と説明しています。“ユーザ”フォルダを例にとって見てみましょう。システムボリュームのルートレベルにある“ユーザ”フォルダは、実際データボリュームのルートレベルにある“ユーザ”フォルダを指すFirmlinkです。システムボリュームの“/Users”フォルダに進んでみると、実際データボリュームの“/Users”フォルダのコンテンツが表示されます。同様に、もしデスクトップのフォルダを見ているとして (つまり、データボリュームのコンテンツを見ています) 、数レベル上に進むとします。“ユーザ”フォルダの親に到達した時には、見ているのはもはやデータボリュームではなく、むしろ、そのFirmlinkによってシステムボリュームのルートレベルに転送されています。

macOS Catalinaにはシステムボリュームのさまざまなフォルダを、データボリュームの書き込み可能なフォルダにリンクする20ちょっとのFirmlinkがあります。興味があるなら、Firmlinkの全リストを起動ディスクの“/usr/share/firmlinks”から閲覧できます。

アプリケーションフォルダとFinderのおふざけ

Firmlinksはほぼ明白でわかりやすいですが、1つ実に顕著な例外があります。それはアプリケーションフォルダです。システムボリュームのルートレベルにあるアプリケーションフォルダは、データボリュームのルートレベルにあるアプリケーションフォルダへのFirmlinkです。しかし、起動ディスク > システム > ボリューム > データ > アプリケーション、と進むと、アプリケーションの大部分がそこにないのに気が付くでしょう。しかし、システムボリュームのアプリケーションフォルダを見ると、それらはすべてそこにあります!ここでFinderがちょっとした魔法を使います。読み出し専用のシステムアプリケーションフォルダは、実はシステムボリュームの、システム > アプリケーション、と進んだ場所にあります。そして、Finderでアプリケーションフォルダを開くと、そのフォルダの集合体とデータボリュームのルートレベルのアプリケーションフォルダが表示されています。平均的ユーザにはこれが期待通りの動作で、それは素晴らしいことです。しかし、この同じ集合体はお使いのMacの現在の起動元ではない、他のシステムボリューム (例、お使いのバックアップディスク)に適用されていないことに気が付くでしょう。それらのボリュームで、表示されているシステムボリュームのルートレベルのアプリケーションフォルダを開くと、データボリュームのルートレベルのアプリケーションフォルダへのFirmlinkのコンテンツのみが表示されます (例、Appleのアプリケーションは無く、サードパーティのアプリケーションとSafariのみ)。しかし、安心してください。すべてのアプリケーションはバックアップされています!それらはバックアップボリュームの、システム > アプリケーション、にあります。

関連ドキュメント

Tags: