Macintosh: ファイルシステムの「仕様」と「用語」

This article has been archived and is no longer updated by Apple.


この記事では、“Mac OS 標準 (HFS)”フォーマットの制限事項、処理に影響を及ぼすような実用的な“上限”、および“Mac OS 拡張 (HFS Plus)”フォーマットについて説明します。

この記事では、ボリュームとファイルシステムに関する「技術用語」について説明します。また、異なったハードディスク上に異なったフォーマットを使う場合に、小さいサイズのファイルが、小さいハードディスク上に比べて大きいハードディスク上でより多くの領域を取ってしまう理由についても説明します。“Mac OS 拡張”フォーマット、Mac OS 9 のボリュームとファイルの上限について詳しくは、次の記事をご覧ください:
記事 30344:Mac OS: Mac OS 8.1 拡張フォーマットについて
記事 24601: “Mac OS 拡張”フォーマット: ボリュームとファイルの上限

“Mac OS 標準”フォーマットの仕様
ハードディスクのブロック配置やアロケーションブロックサイズの決定方法などの説明の前に、“HFS”とも呼ばれる Macintosh の標準的なフォーマットについて説明しましよう。

以下は、Macintosh の標準的なフォーマットの構造を説明するために使われる「仕様」と関連する「技術用語」です。

ボリューム
“ボリューム”とは、ハードディスク全体、またはパーティションに分割されたハードディスクの一部分のことです。ひとつのハードディスクを分割すると、各パーティションが“ボリューム”とみなされます。

  • 漢字Talk 6 と 7 での最大ボリュームサイズは、「2 ギガバイト」です。漢字Talk 7.5 では上限を「4 GB」に増やし、漢字Talk 7.5.2(以降)ではいくつかのコンピュータの上限を「2 テラバイト (TB)」に増やしました。次のコンピュータが含まれます:
    漢字Talk 7.5.2 以降であらかじめインストールされているコンピュータ
    PCI スロットを搭載している Macintosh コンピュータ
  • ボリュームの数の最大数は、Mac OS で開けるファイル数の上限により、理論的には「173」が上限です。コンピュータが起動するときに他のファイルも開くので、実際の上限は、オペレーティング・システムが開くファイルの数に依存して変わります。
  • ファイルの最大サイズは「2 ギガバイト」です。
  • ボリュームの最大ファイル数は「65,536」です。
  • フォルダの中の最大ファイル数は「32,767」です。
  • ファイルの中の最大データフォーク・サイズは「2 ギガバイト」です。
  • ファイルの中の最大リソースフォーク・サイズは「16 メガバイト」です。

パーソナルファイル共有を含む AppleShare は、それ自身のボリュームサイズの制限を持っていることにご注意ください。詳しくは、次の記事をご覧ください:記事 15460:AppleShare File Sharing: 制限の一覧

論理ブロック
論理ブロックは、「最高 512 バイト」で構成されるハードディスク領域の単位です。論理ブロックは「0」から「n」まで(「n」はそのボリュームの最後のブロック)番号がつけられます。ハードディスクに必ずしも必要ではありません。ボリュームサイズを「512 バイト」で割った数字が、論理ブロックの数です。

アロケーションブロック
アロケーションブロックは、ひとつ、または、ふたつ以上の論理ブロックで構成されたボリューム上の記憶容量の単位です。ボリュームが大きいほど、多くの論理ブロックがひとつのアロケーションブロックに割り当てられます。アロケーションブロックの最大数は、ひとつのボリュームに対して「65,536」です。たいていのボリュームは、これよりちょっと少ない数になります。

Macintosh と DOS 環境の両方で、両方のオペレーティング・システムが「16 ビットアドレス」でアロケーションブロックを割り当てるため、ドライバの最大ブロック数は「65,536」です。512 MB より大きいサイズのハードディスクは、8 K 以下のブロックサイズを使うことができません。アドレスを割り当てるのに十分なアドレスサイズがない(ブロック数が「16 ビットアドレス」の最大値を超えてしまう)ためです。そのため、Macintosh のパーティションのひとつが 2 GB の場合、最小ファイルサイズは「32 K」になります(1 文字だけの「SimpleText ファイル」を保存する場合でも、ハードディスク領域の 32 K を使ってしまいます)。これは、ハードディスクのサイズによって、ファイル最小サイズが決まってしまうということです。

ファイルフォークが何バイトのデータを含んでいるかにかかわらず、ファイルフォークが空でない場合は、常に少なくとも「1 ロケーションブロック」を占めます。ファイルの“データフォーク”と“リソースフォーク”にデータが含まれている場合、ファイルは「2 アロケーションブロック」を使います。すべてのファイルが 1 アロケーションブロックだけとすると、ボリュームのアロケーションブロック数と同じ数のファイルが存在し得ます。しかし、ファイルが 1 アロケーションブロックより大きいと、可能なファイルの合計数は減少します。例えば、65,535 アロケーションブロックをもつボリュームは、次のようにファイルを持てます:

  • 65,536 ファイル、各ファイルは「1」アロケーションブロック。
  • 32,768 ファイル、各ファイルは「2」アロケーションブロック。
  • 2,048 ファイル、各ファイルは「32」アロケーションブロック。
  • 1,024 ファイル、各ファイルは「64」アロケーションブロック。

上記の数値は、すべてシステムのレコード構造から算出されたものです。ルートディレクトリで実際に利用可能な数は、他の要因により厳しく制限されます。「標準ファイル」ダイアログは List Manager (リストマネージャ)を使います。List Manager(リストマネージャ)はデータサイズの上限が「32K」なので、ファイル数は「800」から「900」の間になります。ディレクトリで、もっと多くのファイルを管理できますが、List Manager は最初の「32K」を表示しません。

ふたつめの要因は、ディレクトリのファイル数が「800」から「900」になったときの、Finder の処理能力に関係します。ディレクトリにこの数のファイルが存在すると、ファイルのアイコンを動かすなどの単純なオペレーションですら、処理速度がかなり落ちる傾向があります。この制限は、それぞれの Macintosh モデルの速度によって変わります。


アロケーションブロックサイズを決める
アロケーションブロックサイズを計算するには、以下の手順に従ってください:
1. ドライブのサイズをメガバイト単位にして、「2,000(1 MB のディスク領域に 2,000 ディスクブロックがある)」を掛けます。
2. Macintosh は 65,536 を越えるアロケーションブロックを持つことができないので、その数を「65,536」で割ってください。
3. この数を切り上げて、それに「512」を掛けます。
この結果が、アロケーションブロックのバイト数です。230 MB ドライブを使った例を示します:

  • 230 x 2000 / 65536 = 7.019
  • 7.019 を切り上げて 8
  • 8 x 512 = 4096 バイト
これは、どのようなを意味を持つのでしょうか?ハードディスクのサイズが大きいほど、アロケーションブロックサイズは大きくなり、小さいサイズのファイルに無駄に使われる領域がさらに増えることになります。大きいハードディスクに多くの小さいファイルを入れていると、ファイルの大部分が 32 K より小さいサイズの場合、ハードディスク領域は効率的に使われていません。

注意:ハードディスクは異なったメーカーで製造されているので、上記の計算値とは異なった値を得ることがあります。これは、500 MB ハードディスクが正確に「500 MB」ではなくて、通常は少し大きいサイズになっているからです。これにより、計算結果は表にある論理ブロックのサイズとは異なったサイズになります(以下のアロケーションブロックサイズの表をご覧ください)。ただし、誤差は「+ / - 512 バイト以内」になるはずです。この誤差はハードディスクのサイズが大きくなる程、大きくなります。例えば、500 MB ハードディスクの場合、実際に計算すると「8192 バイト」になりますが、いくつかの Macintosh コンピュータの 500 MB ハードディスクは実際には 540 MB なので、表の数値のように、論理ブロックサイズは「8704」になります。

アロケーションブロックサイズの表
以下の表は、上記で説明した計算式に基づき、さまざまなボリュームサイズを想定した、アロケーションブロックサイズの完全なリストです:
ボリュームサイズ   アロケーションブロックサイズ   ファイルの最小サイズ

       0-32MB       1 論理ブロック          0.5K
      33-64MB       2 論理ブロック          1.0K
      65-96MB       3 論理ブロック          1.5K
     97-128MB       4 論理ブロック          2.0K
    129-160MB       5 論理ブロック          2.5K
    161-192MB       6 論理ブロック          3.0K
    193-224MB       7 論理ブロック          3.5K
    225-256MB       8 論理ブロック          4.0K
    257-288MB       9 論理ブロック          4.5K
    289-320MB      10 論理ブロック          5.0K
    321-352MB      11 論理ブロック          5.5K
    353-384MB      12 論理ブロック          6.0K
    385-416MB      13 論理ブロック          6.5K
    417-448MB      14 論理ブロック          7.0K

    449-480MB      15 論理ブロック          7.5K
    481-512MB      16 論理ブロック          8.0K
    513-544MB      17 論理ブロック          8.5K
    545-576MB      18 論理ブロック          9.0K
    577-608MB      19 論理ブロック          9.5K
    609-640MB      20 論理ブロック         10.0K
    641-672MB      21 論理ブロック         10.5K
    673-704MB      22 論理ブロック         11.0K
    705-736MB      23 論理ブロック         11.5K
    737-768MB      24 論理ブロック         12.0K
    769-800MB      25 論理ブロック         12.5K
    801-832MB      26 論理ブロック         13.0K
    833-864MB      27 論理ブロック         13.5K
    865-896MB      28 論理ブロック         14.0K
    897-928MB      29 論理ブロック         14.5K
    929-960MB      30 論理ブロック         15.0K
    961-992MB      31 論理ブロック         15.5K
   993-1024MB      32 論理ブロック         16.0K
  1025-1056MB      33 論理ブロック         16.5K
  1057-1088MB      34 論理ブロック         17.0K

  1089-1120MB      35 論理ブロック         17.5K
  1121-1152MB      36 論理ブロック         18.0K
  1153-1184MB      37 論理ブロック         18.5K
  1185-1216MB      38 論理ブロック         19.0K
  1217-1248MB      39 論理ブロック         19.5K
  1249-1280MB      40 論理ブロック         20.0K
  1281-1312MB      41 論理ブロック         20.5K
  1313-1344MB      42 論理ブロック         21.0K
  1345-1376MB      43 論理ブロック         21.5K
  1377-1408MB      44 論理ブロック         22.0K
  1409-1440MB      45 論理ブロック         22.5K
  1441-1472MB      46 論理ブロック         23.0K
  1473-1504MB      47 論理ブロック         23.5K
  1505-1536MB      48 論理ブロック         24.0K
  1537-1568MB      49 論理ブロック         24.5K
  1569-1600MB      50 論理ブロック         25.0K
  1601-1632MB      51 論理ブロック         25.5K
  1633-1664MB      52 論理ブロック         26.0K
  1665-1696MB      53 論理ブロック         26.5K
  1697-1728MB      54 論理ブロック         27.0K

  1729-1760MB      55 論理ブロック         27.5K
  1761-1792MB      56 論理ブロック         28.0K
  1793-1824MB      57 論理ブロック         28.5K
  1825-1856MB      58 論理ブロック         29.0K
  1857-1888MB      59 論理ブロック         29.5K
  1889-1920MB      60 論理ブロック         30.0K
  1921-1952MB      61 論理ブロック         30.5K
  1953-1984MB      62 論理ブロック         31.0K
  1985-2016MB      63 論理ブロック         31.5K
  2017-2048MB      64 論理ブロック         32.0K
  2049-2080MB      65 論理ブロック         32.5K
  2081-2112MB      66 論理ブロック         33.0K
  2113-2144MB      67 論理ブロック         33.5K
  2145-2176MB      68 論理ブロック         34.0K
  2177-2208MB      69 論理ブロック         34.5K
  2209-2240MB      70 論理ブロック         35.0K
  2241-2272MB      71 論理ブロック         35.5K
  2273-2304MB      72 論理ブロック         36.0K
  2305-2336MB      73 論理ブロック         36.5K
  2337-2368MB      74 論理ブロック         37.0K

  2369-2400MB      75 論理ブロック         37.5K
  2401-2432MB      76 論理ブロック         38.0K
  2433-2464MB      77 論理ブロック         38.5K
  2465-2496MB      78 論理ブロック         39.0K
  2497-2528MB      79 論理ブロック         39.5K
  2529-2560MB      80 論理ブロック         40.0K
  2561-2592MB      81 論理ブロック         40.5K
  2593-2624MB      82 論理ブロック         41.0K
  2625-2656MB      83 論理ブロック         41.5K
  2657-2688MB      84 論理ブロック         42.0K
  2689-2720MB      85 論理ブロック         42.5K
  2721-2752MB      86 論理ブロック         43.0K
  2753-2784MB      87 論理ブロック         43.5K
  2785-2816MB      88 論理ブロック         44.0K
  2817-2848MB      89 論理ブロック         44.5K
  2849-2880MB      90 論理ブロック         45.0K
  2881-2912MB      91 論理ブロック         45.5K
  2913-2944MB      92 論理ブロック         46.0K
  2945-2976MB      93 論理ブロック         46.5K
  2977-3008MB      94 論理ブロック         47.0K

  3009-3040MB      95 論理ブロック         47.5K
  3041-3072MB      96 論理ブロック         48.0K
  3073-3104MB      97 論理ブロック         48.5K
  3105-3136MB      98 論理ブロック         49.0K
  3137-3168MB      99 論理ブロック         49.5K
  3169-3200MB     100 論理ブロック         50.0K
  3201-3232MB     101 論理ブロック         50.5K
  3233-3264MB     102 論理ブロック         51.0K
  3265-3296MB     103 論理ブロック         51.5K
  3297-3328MB     104 論理ブロック         52.0K
  3329-3360MB     105 論理ブロック         52.5K
  3361-3392MB     106 論理ブロック         53.0K
  3393-3424MB     107 論理ブロック         53.5K
  3425-3456MB     108 論理ブロック         54.0K
  3457-3488MB     109 論理ブロック         54.5K
  3489-3520MB     110 論理ブロック         55.0K
  3521-3552MB     111 論理ブロック         55.5K
  3553-3584MB     112 論理ブロック         56.0K
  3585-3616MB     113 論理ブロック         56.5K
  3617-3648MB     114 論理ブロック         57.0K

  3649-3680MB     115 論理ブロック         57.5K
  3681-3712MB     116 論理ブロック         58.0K
  3713-3744MB     117 論理ブロック         58.5K
  3745-3776MB     118 論理ブロック         59.0K
  3777-3808MB     119 論理ブロック         59.5K
  3809-3840MB     120 論理ブロック         60.0K
  3841-3872MB     121 論理ブロック         60.5K
  3873-3904MB     122 論理ブロック         61.0K
  3905-3936MB     123 論理ブロック         61.5K
  3937-3968MB     124 論理ブロック         62.0K
  3969-4000MB     125 論理ブロック         62.5K
  4001-4032MB     126 論理ブロック         63.0K
  4033-4064MB     127 論理ブロック         63.5K
  4065-4096MB     128 論理ブロック         64.0K

Macintosh 標準フォーマットのボリューム構造
ボリュームの最初の 2 論理ブロック(「ブロック 0」と「ブロック 1」)はブートブロックです。ここにはボリュームをマウントするための情報が保存されます。

3 番目の論理ブロック(「ブロック 2」)は「マスターディレクトリブロック (MDB)」です。このブロックは、“フラットディレクトリボリューム”のデータ構造部分を含んでいます。これは“ボリューム情報”と“ボリュームアロケーションブロックマップ”を含んでいます。このブロックには、ディレクトリのファイル数やドライブが初期化された最新の時間のような、ハードディスクのための情報が保存されます。

論理名ブロック「3 から x(以下の表をご覧ください」は“ボリュームビットマップ”を含んでいます。このブロックは、各ビットが各“アロケーションブロック”に対応する、ビットの列を含んでいるデータ構造です。“ボリュームビットマップ”は、“アロケーションブロック”にあるデータへの「リファレンス」を保存し、どのブロックが割り当てられていて、どこが空いていて使用できるかを示します。“ボリュームビットマップ”は、「階層ディレクトリボリューム」と「メモリ」上の両方に存在します。

ボリュームは「最小 32,768」のアロケーションブロック、「最大 65,536」のアロケーションブロックを持ちます。この表は、アロケーションブロックの数に基づいて、“ボリュームビットマップ”の最後の論理ブロックを定義します:

  アロケーションブロック         最後のボリュームビットマップ論理ブロック

     > 61,440                                         18
     > 57,344                                         17
     > 53,248                                         16
     > 49,152                                         15
     > 45,056                                         14
     > 40,960                                         13
     > 36,864                                         12
     > 32,768                                         11


“アロケーションブロック”はボリュームビットマップの次から始まります。アロケーションブロックに含まれるのは、「カタログ」、「エクステント」、「データ」ファイルです。

「カタログ」ファイルは、ボリュームに保存されるすべてのファイルとフォルダのリストです。カタログファイルは階層ディレクトリボリュームのファイルとディレクトリの関係を維持します。これは、フラットディレクトリボリュームのファイルディレクトリに対応します。カタログファイルは“B ツリー構造”で管理され、アクセスされます。ファイルはツリー上に平等にバランスがとれた“アルファベット順”で並べられています。そのため、「A」で検索しても「Z」で検索してもかかる時間は同じです。この構造でカタログファイルはまとめられています。

「エクステント」ツリーファイルは、ボリューム上のすべてのファイルの位置情報を含んでいます(「エクステント」は一連の連続するアロケーションブロックです)。エクステントツリーファイルには、作成したデータファイルについての情報(ファイルがどこにあるか、ファイルがいくつの「エクステント」に分割されているかなど)が保存されます。作成したファイルは複数の「エクステント」に分割されます。エクステントツリーファイルからの情報により、内部でエクステントがひとつにリンクされると、見かけは 1 つのデータファイルになります。

次の、最も大きいボリュームのセクションには、上記のファイルを使って参照されるすべての実際の“データファイル”と“アプリケーション”が含まれます。

ハードディスクの最後のブロックの前には、「代替マスターディレクトリ」を含んでいます。この代替は「論理ブロック 2」に保存される“MDB”のバックアップです。ファイルマネージャーが、“MDB”が損傷を受けているので正しい情報で書き直される必要があると決定すると、代替が使われます。

一番最後のブロックは空です。それはハードディスクのバッドセクションを調べるために使われます。


できること
では、大きいハードドディスク上のファイルサイズを減少させるにはどうすればよいのでしょう?ひとつの解決方法は、「最大 65,536 ブロック」の値を使って、大きいハードドディスクを、小さいサイズのパーティション(論理ドライブ)に、パーティション分割することです。

Apple の「ドライブ設定」を使うと、以下のドライブ設定ガイドファイルに載っている、限定された Apple ハードドライブといくつかのリムーバブル装置をパーティション分割できます。サポートされていないハードディスクの名前がこのリストにありますが、サポートされていないハードディスクを選択すると、「未サポートドライブのディスクを修正することはできません」というメッセージが表示されます。

「ドライブ設定」は Power Macintosh コンピュータのすべてにサポートされます。これには、オリジナルの Power Macintosh コンピュータと新しい PCI ベースの Power Macintosh コンピュータが含まれす。また、「ドライブ設定」は IDE ドライブ搭載 68LC040 プロセッサベースのシステムにもサポートされます。Power Macintosh Upgrade Card にはサポートされません。ドライブ設定 1.0.2 は“オンライン・サービス”から入手できます。

他社から、「ドライブ設定」によってサポートされていない、Macintosh システムの上に、複数の Macintosh パーティションを作成するためのソリューションが提供されています。いくつかを紹介します:

  • FWB Software 社の Hard Disk Toolkit (HDT)
  • La Cie 社の Silverlining
  • Micronet Technology 社の Micronet Utility
  • MicroTech Internationa 社の MicroTech Utility
  • Casa Blanca Works 社の Drive 7


“Mac OS 拡張”フォーマット
Mac OS 8.1 をリリースした 1998 年に、アップルは “Mac OS 拡張”フォーマット(“HFS Plus フォーマット”とも呼ばれます)として知られている新しいファイルシステムフォーマットをリリースしました。“Mac OS 拡張”フォーマットについて詳しくは、次の記事をご覧ください:
記事 30344:Mac OS: Mac OS 拡張 (HFS Plus) ボリュームハードドライブフォーマットについて
記事 24601:Mac OS 8, 9: “Mac OS 拡張”フォーマット - ボリュームとファイルの上限


アップルからリリースしていない製品に関する情報は、情報提供のみの目的で提供されるものであり、アップルがその情報を推奨したり是認するものではありません。詳しくは各ベンダーにお問い合わせください。

以下の記事は、特定のベンダーの住所や電話番号を検索する際にお役立てください:
17159: Locating Vendor Information(英語の情報です)

Published Date: 2008/10/04