ZFS は、Sun Microsystems Inc. が作成したローカル ファイル システムおよび論理ボリューム マネージャで、エンタープライズクラスのコンピューティング システムにおけるデータの配置、保存、および取得を指示および制御します。

ZFS ファイル システムおよびボリューム マネージャは、データの整合性と高い拡張性、次のような組み込みストレージ機能を特徴とします:

  • 複製-何かのレプリカ(複製)を作成する処理です。
  • 重複排除 – データの冗長なコピーを排除し、ストレージのオーバーヘッドを削減する処理。
  • 圧縮 – データを表現するために必要なビット数を削減すること。
  • スナップショット – 特定の時点におけるデータの参照マーカーのセット。
  • クローン – 何かの同一のコピー。
  • データ保護 – 重要な情報を破損および/または損失から保護するプロセス。
  • History of ZFS

    Sun のエンジニアは 2001 年に、同社の Unix ベースの Solaris オペレーティング システム (OS) 用に ZFS の開発作業を開始しました。 2005 年、Sun は ZFS のソース コードを、オープン ソースの OpenSolaris OS の一部として、CDDL (Common Development and Distribution License) のもとで公開しました。 Sun や他のベンダーの代表者を含む開発者のコミュニティは、オープン ソース コードの拡張に取り組み、ZFS を FreeBSD、Linux、および Mac OS X などの追加 OS に移植しました。 Oracle 社のエンジニアは、Solaris 上の ZFS を強化し、機能を追加し続けています。 Oracle 社では、独自の ZFS コードを Oracle Solaris、Oracle ZFS Storage Appliance、およびその他の Oracle テクノロジーの基盤として使用しています。

    開発コミュニティは、OpenSolaris の最終リリースにある ZFS ソース コードに基づいて OpenZFS という新しいオープン ソース プロジェクトを開始しました。 オープンコミュニティは、OpenZFSコードの新機能、改善、バグフィックスに取り組んでいます。 OpenZFSをサポートしているOSには、Apple OS X、FreeBSD、illumos(OpenSolarisをベースにしている)、Debian、Gentoo、UbuntuなどのLinuxの亜種があります。 OpenZFSはすべてのLinuxディストリビューションで動作しますが、ディストリビューションの一部として提供しているのは一部の商用ベンダーだけです。 OpenZFS をベースにした商用製品を持つ企業には、Cloudscaling、Datto、Delphix、Joyent、Nexenta、SoftNAS、Spectra Logic などがあります。

    ZFS と OpenZFS は、大量のデータを管理してデータの整合性を確保する必要がある企業にとって魅力的なものとなる傾向があります。 ユーザーには、科学機関、国立研究所、政府機関、金融会社、電気通信、メディアおよびエンターテインメント企業が含まれます。

    ZFS は当初 Zettabyte File System を意味しましたが、Zettabyte という単語はファイル システムの文脈ではもはや意味を持ちません。 128 ビット ファイル システムとして、ZFS は 256 兆ゼタバイトまでスケールする可能性があります。

    How ZFS works

    ZFS は単一のサーバー上で実行するように設計されており、何百、何千ものストレージ ドライブが接続されている可能性があります。 ZFS は利用可能なストレージをプールし、すべてのディスクを 1 つのエンティティとして管理します。 ファイルシステムに追加の容量が必要な場合、ユーザーはプールにさらにストレージドライブを追加することができます。 ZFS は拡張性が高く、大きな最大ファイル サイズをサポートします。

    ZFS は、データがディスクに書き込まれるたびに、メタデータのコピーを少なくとも 2 つ保存します。 メタデータには、データが格納されているディスクセクタ、データブロックのサイズ、およびデータ片のバイナリ桁のチェックサムなどの情報が含まれます。 ユーザーがファイルへのアクセスを要求すると、チェックサムアルゴリズムが計算を実行し、取得したデータがディスクに書き込まれた元のビットと一致するかどうかを確認する。 チェックサムが不整合を検出した場合、不良データにフラグを立てる。 ミラーリングされたストレージ プールまたは RAID の ZFS バージョンがあるシステムでは、ZFS はもう一方のドライブから正しいコピーを取得し、破損したデータ コピーを修復できます。

    ZFS は一般にコピーオンライト ファイル システムと呼ばれますが、Oracle はそれをリダイレクト オン ライトと記述します。 ZFS がデータをディスクに書き込むとき、所定の位置にあるデータを上書きしません。 ZFS は新しいブロックをディスク上の別の場所に書き込み、新しく書き込まれたブロックを指すようにメタデータを更新しますが、同時に、古いバージョンのデータも保持します。

    本当のコピーオンライト ファイルシステムは、元のブロックを上書きする前に、別の場所にデータ ブロックの正確なレプリカを作成します。 データを上書きする前に、システムはブロックの以前の値を読み取る必要があります。 コピーオンライト・ファイルシステムでは、データの書き込みごとに、読み取り、変更、書き込みの3つのI/O操作が必要になる。 対照的に、Redirect-on-Write システムは 1 つの I/O 操作しか必要とせず、より大きな効率と高いパフォーマンスを促進します。

    ZFS は、仮想サーバー環境と同様に、ファイル システム上で NFS を実行するネットワーク接続ストレージ システムによく使用される選択肢です。 もう 1 つの一般的な展開シナリオは、GPFS (General Parallel File System) や Lustre などのクラスタ化ファイル システムを ZFS 上に重ねて、追加のサーバー ノードへのスケーリングを可能にすることです。 OpenStack ユーザーは、Cinder ブロック ストレージおよび Swift オブジェクト ストレージの基礎となるファイル システムとして ZFS をデプロイすることができます。 ZFS および OpenZFS は、システムがデータのすべてのコピーを保持するため、ファイル システムのポイント イン タイム コピーを非常に効率的かつ高速に作成できます。 スナップショットはファイルシステムの不変のコピーであり、クローンは変更可能です。 スナップショットとクローンは、Solaris上のZFSの起動環境に統合されており、ユーザーはシステムのパッチや更新時に何か問題が発生した場合、スナップショットにロールバックすることができるようになっています。 ZFS のもう 1 つの潜在的な利点は、ランサムウェアに対する回復技術としてです。 RAID-Z は、同じデータを複数の場所に保存して、耐障害性を強化し、パフォーマンスを向上させることができます。 システムの他のドライブに保存されている情報を使用して、失われたドライブのデータを再構築します。 RAID-ZはRAID5と同様、各ドライブでパリティ情報をストライピングし、1台のドライブが故障してもストレージシステムが機能するようにする。 ただし、RAID-Zでは、ストライピングされたデータはフルブロックであり、そのサイズは可変である。 RAID-Zは通常RAID5と比較されますが、従来のRAIDの長年の問題に対処するため、いくつかのオペレーションが異なっています。 RAID-Zが対処する問題の1つは、ライトホール効果と呼ばれるもので、電源障害や致命的なシステム中断により、システムがどのデータまたはパリティブロックがディスクに書き込まれたかを判断できない場合です。 従来の RAID を使用するシステムのベンダーは、通常、無停電電源装置または専用のハードウェアを使用することでこの問題を解決しています。 ユーザーは、従来の RAID と同様に、ドライブをグループ化して配置するオプションがあります。 たとえば、6 台のドライブを 2 つのグループに分けて RAID-Z3 としてセットアップしたシステムでは、各グループで 3 台のドライブの損失を許容できます。 インラインデータ圧縮は、データを格納するのに必要なビット数を削減するために、ZFS および OpenZFS に組み込まれた機能です。 ZFS と OpenZFS はそれぞれ、多数の圧縮アルゴリズムをサポートしています。 ユーザーは、インライン圧縮を有効または無効にするオプションがあります。

    重複排除。 インラインのデータ重複排除は、ZFS および OpenZFS に組み込まれた機能で、冗長なデータを排除することによりストレージの効率化を可能にします。 ZFS と OpenZFS は、サイズが異なるブロックのチェックサムを調べることによって、重複するデータを見つけます。 ユーザーはインライン重複排除を有効または無効にすることができます。

    ZFS send/receive。 ZFS および OpenZFS は、ファイル システムのスナップショットを別のサーバー ノードに送信することを可能にし、ユーザーはバックアップやクラウド ストレージへのデータ移行などの目的でデータを別のシステムに複製することができます。 ZFS および OpenZFS は、管理タスクを実行できるユーザーを管理するために、委譲されたパーミッションとより細かいアクセス制御リストをサポートします。 ユーザーは、ZFS を読み取り専用に設定するオプションがあり、データを変更することはできません。 Oracle は Solaris 上の ZFS で暗号化をサポートしています。

    ZFS の利点と制限

    ZFS はファイル システムとボリューム マネージャーを統合しているので、ユーザーは別々のツールやコマンドを入手して学習する必要がありません。 ZFS は Oracle OS に組み込まれているため、豊富な機能セットとデータ サービスを無償で提供します。 オープンソースのOpenZFSは、自由に利用できます。 ファイルシステムは、ストレージプールにドライブを追加することで拡張することができます。 従来のファイル システムでは、容量を増やすためにディスク パーティションのサイズを変更する必要があり、ユーザーはしばしばボリューム管理製品を必要とします。

    ZFS は、複数のサーバーにスケールアウトできる GPFS や Lustre などの分散または並列ファイル システムとは対照的に、単一サーバーでの実行に制限されています。 統合された ZFS チェックサムアルゴリズムなどの機能は、追加の処理能力を必要とし、パフォーマンスに影響します。

    Linux コミュニティでは、ZFS コードおよびバイナリカーネルモジュールの再配布に関するライセンスについて、さまざまな意見があります。 たとえば、Red Hat は、CDDL で保護されたコードを一般公衆利用許諾 (GPL) で保護されたコードと一緒に配布することは問題であるとみなしています。 対照的に、Ubuntu を配布している Canonical は、CDDL と GPL ライセンスの条件を遵守していると判断しました。

    ZFS vs. OpenZFS

    Oracle の ZFS とオープンソースの OpenZFS は同じ ZFS ソースコードから派生しています。 Oracle とオープン ソース コミュニティは、それぞれ別のトラックで、ZFS と OpenZFS に拡張機能を追加し、パフォーマンスを大幅に向上させました。 Oracle ZFSのアップデートはプロプライエタリであり、Oracleテクノロジーでのみ利用可能です。 オープンソースのOpenZFSコードのアップデートは、自由に利用できます。

    2010年以降に Oracle が ZFS に対して行った拡張の一覧は以下のとおりです。

    • 暗号化、
    • L2 adaptive replacement cache (ARC) における OS 再起動時の圧縮データの持続のサポート、
    • 2 TB 以上のサイズの物理ディスクおよび仮想ディスク ボリュームのサポートを提供するブータブル Extensible Firmware Interface ラベル、
    • デフォルト ユーザーとグループのクォータ、
    • プール/ファイル システム監視、などです。

    オープン ソース コミュニティが OpenZFS に対して行った更新の一覧は以下のとおりです。

    • 追加の圧縮アルゴリズム;
    • resumable send/receive (長期間の ZFS 送受信オペレーションをシステム中断時点から再開できる);
    • compressed send/receive (ZFS プールから別のプールへ圧縮データを送信できるようになり、送信ノードから宛先に移動中にデータの解凍/圧縮が不要になった)]。
    • compressed ARC (ZFS が圧縮データをメモリに保持し、キャッシュにより大きな作業データセットを可能にする);
    • maximum block size increase from 128 KB to 16 MB (大きなファイルを扱う際のパフォーマンス向上とドライブ障害からの回復時のデータ再構成の高速化)

    コメントを残す

    メールアドレスが公開されることはありません。