目次

ファイルシステムの選び方

FreeBSD でハードディスク(またはSSD)を使用する場合、 UFS または ZFS のファイルシステムを選ぶことができます。

UFS はその名の通り UNIX で使われてきた伝統的なファイルシステムの後継であり、 時代に合わせて扱える容量や性能を改善したファイルシステムです。

ZFS はもともと Sun Microsystems が開発した次世代のファイルシステムで 多数のハードディスクを効率的に運用できるように設計されました。

それぞれ次のようなメリット・デメリットがあります。

UFS

メリット

  1. ZFS と比較して少ないメモリで動作する
  2. 今までの UNIX のハードディスクの運用知見が活かせる
  3. スナップショット機能 (*1)
  4. ジャーナリング機能 (*1)
  5. POSIX.1e ACL サポート
  6. NFS v4 ACL サポート
  7. TRIM サポート

*1: 14.0 からスナップショットとジャーナリングの両方を同時に選択可能。14.0 より前の版ではどちらか一つのみ使用可能。

デメリット

  1. ファイルシステムの容量はディスクパーティションに依存する
  2. 冗長構成は GEOM またはハードウェア任せ
  3. データのチェックサムがない
  4. メタデータのチェックサムは 13.0 以降でサポート予定

ZFS

メリット

  1. パーティションにとらわれずに柔軟にファイルシステムのサイズを変更できる
  2. 全てのデータ、メタデータがチェックサムで検証される
  3. 効率的なキャッシュ機能 (ARC: adaptive replacement cache)
  4. ストライプ, ミラー, RAID-Z などの冗長構成をファイルシステムレベルでサポートしている
  5. RAID-Z によるサイレントクラッシュ防止機能
  6. 圧縮機能
  7. スナップショット機能
  8. スナップショットからクローンを作成する機能
  9. 広大なディスク領域を管理できる(最大 16エクサ=2^64 バイトのファイルシステムが構築可能)
  10. スナップショットとクローンを合わせてルートファイルシステムを任意に切り替えられる (boot environment)
  11. NFS v4 ACL サポート
  12. TRIM サポート

デメリット

  1. メモリ使用量が大きい (搭載メモリ 4GB 以上を推奨)
  2. キャッシュミス時のペナルティが大きい
  3. UFS と扱いが大きく異なるため UFS の運用知見が通用しない
  4. POSIX.1e ACL のサポートがない

どちらを選ぶべきか

FreeBSD を動かすマシンの搭載メモリが少ない(4GB未満)ならば UFS を選ぶべきです。 ZFS を動かすこともできますが、おそらく期待するような性能は得られないでしょう。

また、伝統的な UNIX のハードディスク管理に慣れており、 歴史的な経緯や過去の経験からあまり運用を変えたくないのであれば UFS を選択するべきです。

アプリケーションに多くのメモリを割り当てたい場合も UFS の方が良いでしょう。 ZFS は ARC に大量のメモリを使用します。その分アプリケーションに割り当てられるメモリが 少なくなるため、例えば memcached サーバのような用途には UFS が適しています。

メモリがそれなりに搭載できるならば(4GB〜)、ZFS を選ぶこともできます。 たとえハードディスクが1本しかなくても、ZFS のメリットが魅力的に思えるようならば 十分に ZFS を選ぶ理由になることでしょう。 例えば、圧縮機能はディスクアクセス量を減らし見た目のスループットを向上させます。 また、ARCにも圧縮されたデータが乗るため、見た目のキャッシュサイズも増大することになります。

多数のハードディスク(3〜4本以上)を扱うならば、ZFS は魅力的な選択肢になるでしょう。 冗長構成を組んだ状態から任意にファイルシステムのサイズ割り当てを変えられるため、 より効率的にディスク容量を管理することができます。

データベースのようにアプリケーションにも多くのメモリを割り当てかつ、 ハードディスクの管理を楽に行いたいような場合は一概にどちらが良いかを判断することはできません。 実際にベンチマークをとって選ぶべきだと思います。