ZFS とは何か? ZFS を使用する理由とその機能

ZFS とは何か? ZFS を使用する理由とその機能

ZFSの歴史

Z ファイル システム (ZFS) は、2001 年に Matthew Ahrens と Jeff Bonwick によって開発されました。 ZFS は、Sun MicroSystems の OpenSolaris の次世代ファイルシステムとして設計されました。 2008 年に、ZFS は FreeBSD に移植されました。同年、ZFS を Linux に移植するプロジェクトも開始されました。ただし、ZFS は GNU General Public License と互換性のない Common Development and Distribution License (CDDL) に基づいてライセンスされているため、Linux カーネルに移植することはできません。この問題を解決するために、ほとんどの Linux ディストリビューションは ZFS をインストールする何らかの方法を提供しています。
Oracle が Sun Microsystems を買収した直後に OpenSolaris がクローズドソースとなり、その後の ZFS の開発もクローズドソースになりました。多くの ZFS 開発者はこれに非常に不満を抱いていました。 この決定の結果、アーレンス氏やボンウィック氏を含む ZFS コア開発者の 3 分の 2 が Oracle を退職した。彼らは他の企業と協力し、2013 年 9 月に OpenZFS プロジェクトを設立しました。このプロジェクトは、ZFS のオープンソース開発をリードしています。
上で述べたライセンスの問題に戻りましょう。 OpenZFS プロジェクトが Oracle から分離された今、Linux カーネルに組み込めるように GPL 互換のライセンスを使用しないのはなぜかと疑問に思う人もいるかもしれません。 OpenZFS の公式 Web サイトによると、ライセンスを変更するには、現在の OpenZFS 実装 (初期公開の ZFS コードと OpenSolaris コードを含む) にコードを提供したすべての人に連絡して許可を得る必要があります。これはほぼ不可能でした (貢献者の中には亡くなった人や見つけるのが難しい人もいるため)。そのため、元のライセンスを維持することにしました。

ZFS とは何ですか? どのような機能がありますか?

前述したように、ZFS は高度なファイルシステムです。したがって、いくつかの興味深い特性があります。例えば:

  • ストレージプール
  • コピーオンライト
  • スナップショット
  • データの整合性検証と自動修復
  • RAID-Z
  • 単一ファイルの最大サイズは 16 EB (1 EB = 1024 PB) です。
  • 最大ストレージ容量は 256 京 (256*1015) ZB (1 ZB = 1024 EB)

これらの機能のいくつかを詳しく見てみましょう。

ZFS をインストールするにはどうすればよいですか?

ZFS をすぐに (そのままの状態で) 使用したい場合は、FreeBSD または illumos カーネルを使用するオペレーティング システムをインストールする必要があります。 illumos は OpenSolaris カーネルのクローンです。
実際、ZFS のサポートは、経験豊富な Linux ユーザーの一部が BSD を選択する主な理由です。
Linux で ZFS を試してみたい場合は、ストレージ ファイル システムでのみ使用できます。私の知る限り、ルート ディレクトリに ZFS をインストールしてすぐに使用できる Linux ディストリビューションは存在しません。 Linux で ZFS を試してみたい場合は、ZFS on Linux プロジェクトにその方法を示すチュートリアルが多数用意されています。

ストレージプール

ほとんどのファイル システムとは異なり、ZFS はファイル システムとボリューム マネージャーの機能を組み合わせています。つまり、他のファイル システムとは異なり、ZFS は、さまざまなハード ディスクまたはプールにまたがるファイル システムを作成できます。それだけでなく、ハードドライブを追加することでプールのストレージ容量を増やすこともできます。 ZFSはパーティション分割とフォーマットが可能

ZFS を使用する 10 の理由と機能

1. fsckやscandiskは不要

Linux、UNIX、Windows のいずれを使用していても、誰もが同じような経験をしたことがあると思います。システムが予期せず電源を失ったり、不正にシャットダウンしたりすると、システムの再起動後にファイルシステムに不整合の問題があることがわかります。このとき、修復するには fsck または scandisk が必要ですが、非常に時間がかかり、最終的には修復に成功しない可能性があります。さらに悪いことに、サーバーが fsck を実行する必要がある場合、サーバーをオフラインにすることしかできず、既存のアプリケーションには大容量のハード ドライブが搭載されていることが多いため、対応する fsck 修復時間も非常に長くなり、サーバーを使用する多くのユーザーにとってほとんど耐えられないほどです。
ZFS は COW (Copy on Write) メカニズムに基づくファイル システムであるため、ZFS を使用した後は fsck などのツールを完全に放棄できます。 COW はハードディスク上の既存のファイルを書き換えないので、ハードディスク上のすべてのファイルが有効であることが保証されます。したがって、そのような矛盾した概念は存在せず、当然、そのようなツールも必要なくなります。

2. シンプルな管理

新しいファイルシステムである ZFS は、従来のファイルシステム + ボリューム マネージャー + ストレージ アーキテクチャを完全に放棄します。すべてのストレージ デバイスは ZFS プールを通じて管理されます。さまざまなストレージ デバイスが同じ ZFS プールに追加される限り、この ZFS プール内のファイルシステムを簡単に管理および構成できます。さまざまな専門的な概念、newfs、metinit などのさまざまなコマンド、さまざまなボリューム マネージャーの使用方法を覚える必要がなくなります。 ZFS では、128 ビットのファイル システムを簡単に管理するために必要なのは、zpool (ZFS プール管理用) と zfs (ZFS ファイル システム管理用) の 2 つのコマンドだけです。たとえば、システム データが急速に増加し、既存のストレージ容量が不足しているため、ハード ディスクを追加する必要があるという状況によく遭遇します。従来のボリューム マネージャー管理方法に従う場合、多くの既存の要素を事前に考慮し、アプリケーションに応じて構成する必要があるさまざまなパラメーターを事前に計算する必要があります。 ZFS の場合、システム管理者は完全に解放され、複雑な手動の検討や計算を行う必要がなくなります。ZFS プールは自動的に調整され、需要に応じて動的に適応するため、これらを ZFS に任せることができます。この ZFS プールに新しいハードディスクを追加するには、簡単なコマンドだけが必要です。

zpool add zfs_pool mirror c4t0d0 c5t0d0

この動的に調整された ZFS プールに基づくすべてのファイル システムは、新しいハード ディスクをすぐに使用し、最も最適化されたパラメータを自動的に選択できます。 ZFSはグラフィカルな管理インターフェースも提供している

3. 定員制限なし

ZFS (Zettabyte File System) ファイルシステムは、その名前が示すように、非常に大規模なストレージを提供でき、実際には容量の問題が発生することはほとんどありません。既存の 64 ビット カーネルでは、最大 16 エクサバイト (264) のサイズの単一ファイルを収容でき、264 個のストレージ デバイスを使用でき、264 個のファイル システムを作成できます。

4. データの正確性と完全性を完全に保証する

すべての ZFS データ操作はトランザクションに基づいているため、対応する操作のグループは、ZFS によってトランザクション操作として解析されます。トランザクション操作とは、操作のグループが一緒に失敗するか、一緒に成功することを意味します。前述したように、すべての ZFS 操作は COW (Copy on Write) に基づいており、これによりデバイス上のデータが常に有効になり、システム クラッシュや予期しない停電によって不整合が発生することはありません。
データに対する別の潜在的な脅威としては、ハードディスク、RAID カードのハードウェアの問題、ドライバーのバグなどのハードウェアの問題が考えられます。既存のファイル システムではこの問題が発生することが多く、エラーのあるデータを上位層アプリケーションに直接渡してしまうだけです。この問題は通常、サイレント データ破損と呼ばれます。 ZFS では、ユーザー データであろうとファイル システム自体のメタデータであろうと、すべてのデータは 256 ビットのチェックサムの対象となります。ZFS はデータを送信するときにチェックを実行し、このサイレントなデータ破損状況を完全に排除します。

5. 優れたパフォーマンスとスケーラビリティを提供する

従来のファイルシステム + ボリュームマネージャ + ストレージアーキテクチャとは異なり、ZFS はストレージデバイスに基づいてすべての機能を直接提供します。そのため、独自の革新的な機能があり、そのパフォーマンスは当然ながら並外れています。

動的ストライピングと静的ストライピング

ZFS は COW とグローバル動的 ZFS プールに基づいているため、すべての書き込み操作は新しいデータ ブロックへの書き込み操作になります。 ZFS は、ZFS プールから最適なデバイスを動的に選択し、トランザクションで線形に書き込み、既存のデバイスの帯域幅を完全かつ効率的に利用します。この機能は、ダイナミック ストライピングと呼ばれます。対応する静的ストライピングは、従来のファイルシステムで使用される方法です。静的ストライピングでは、管理者が事前にこのストライプのセットを正しく計算して設定する必要があり、新しいデバイスが追加された場合は、手動で計算して再度設定する必要があります。さらに深刻なのは、手動計算が間違っていると、システムのパフォーマンスに直接影響することです。ダイナミック ストライピング機能を使用すると、人間の介入はまったく必要ありません。ZFS が自動的に調整し、最適な機器と最速の操作方法をインテリジェントに提供します。

複数のブロックサイズをサポート

ZFS は、512 バイトから 1M バイトまでのさまざまなサイズのデータ​​ ブロック定義をサポートします。多くの場合、固定サイズのデータ​​ ブロックを持つ従来のファイル システムとは異なり、ZFS はさまざまなサイズのファイルに基づいて動的に計算し、最適なデータ ブロックを動的に選択できます。
異なるサイズのデータ​​ ブロックは、実際のハード ディスク容量と読み取り速度に直接影響します。より小さなデータ ブロックを使用すると、ファイルの保存によって発生する断片化が少なくなり、小さなファイルの読み取りと書き込みが高速になりますが、作成するメタデータが多くなり、大きなファイルの読み取りと書き込みに時間がかかります。より大きなデータ ブロックを使用すると、使用されるメタデータが少なくなり、大きなファイルの読み取りと書き込みが容易になりますが、断片化がさらに発生します。 ZFS は、既存のファイルの使用状況を実際に調査してデータ ブロック サイズを選択するアルゴリズムを分析し、実際のファイル サイズに基づいて最適なデータ ブロックを動的に決定します。したがって、ZFS は非常にインテリジェントであり、システム管理者の介入なしに自己チューニング結果を達成できます。もちろん、ZFS は、単一のファイルまたはファイル システム全体に使用されるデータ ブロック サイズをユーザーがカスタマイズすることもサポートしています。

インテリジェントプリフェッチ

ほとんどのオペレーティング システムにはデータの事前読み取り機能があり、ZFS はファイル システム上に直接構築された、よりインテリジェントなデータの事前読み取り機能です。複数の読み取りモードをインテリジェントに識別してデータを事前に読み取ることができるだけでなく、各読み取りデータ ストリームに対してこの読み取り前のインテリジェント識別を実行することもできます。これは、多くのストリーミング メディア プロバイダーにとって非常に便利です。
スケーラビリティの面では、既存のファイルシステムが主に制限された静的モデルに基づいているのに対し、ZFS は ZFS プールの動的な概念を採用しています。メタデータも動的であり、読み取りと書き込みの操作は並列で、優先順位の概念があるため、大量のデータや複数のデバイスの場合でも線形のパフォーマンスの向上が保証されます。

6. 自己修復機能

ZFS Mirror 和RAID-Z

従来のハードディスクミラーリングや RAID 4 および RAID 5 アレイ方式では、上記のような問題、つまりサイレントデータ破損が発生します。ハードディスクに物理的な問題が発生してデータ エラーが発生した場合、RAID 4 および RAID 5 アレイを含む既存のミラーは、エラーのあるデータを上位レベルのアプリケーションに通知せずに送信します。メタデータでこのエラーが発生すると、システムが直接パニックに陥ります。 さらに深刻な状況があります。RAID 4 および RAID 5 アレイでは、停電が発生したときにシステムがパリティ値を計算し、新しいデータと新しいパリティ値を再度書き込むと、アレイ全体の保存されたデータはすべて無意味になります。
ZFS では、対応する ZFS ミラーと RAID-Z 方式が提案されています。データを読み取るときに、256 ビットのチェック コードで自動的にチェックし、このサイレント データ破損を積極的に検出し、対応するミラー ハード ディスクまたは RAID-Z アレイ内の他のハード ディスクを介して正しいデータを取得して上位アプリケーションに返すと同時に、元のハード ディスクのデータ破損を自動的に修復します。

障害マネージャ

Solaris 10 には、Solaris の Fault Manager (Solaris 10 のもう 1 つの新機能) と連携して、ZFS プールおよびストレージ デバイスのエラーをリアルタイムで診断、分析、報告する ZFS 診断エンジンが含まれています。ユーザーは、Fault Manager からわかりやすいメッセージをタイムリーに受け取ることができます。診断エンジンは問題を修復または解決するためのプロアクティブなアクションを実行しませんが、システム管理者にメッセージで実行可能なアクションを通知します。次のような ZFS エラー メッセージ (REC-ACTION が推奨アクション) が表示されます。

SUNW-MSG-ID: ZFS-8000-D3、タイプ: 障害、バージョン: 1、重大度: 重大
イベント時間: 2006 年 3 月 10 日金曜日 11:09:06 MST
プラットフォーム: SUNW、Ultra-60、CSN: -、ホスト名: neo
ソース: zfs-diagnosis、リビジョン: 1.0
イベント ID: b55ee13b-cd74-4dff-8aff-ad575c372ef8
説明: ZFS デバイスに障害が発生しました。詳細については、http://sun.com/msg/ZFS-8000-D3 を参照してください。
自動応答: 自動応答は行われません。
影響: プールのフォールト トレランスが損なわれる可能性があります。
REC-ACTION: 「zpool status -x」を実行し、不良デバイスを交換します。

7. セキュリティ

セキュリティの面では、ZFS は NT スタイルの NFSv4 に似た ACL (読み取り制御リスト) をサポートしています。さらに、前述の 256 ビット検証コードでは、SHA-256 検証アルゴリズムを含むさまざまな検証方法を選択できるため、物理的なストレージ ユニット レベルでのデータ セキュリティが確保されます。

8. 超強力な機能

「最後のファイルシステム」として、ZFS は基本的なファイルシステムとボリューム管理機能をカバーし、クォータ、予約、圧縮、スナップショット、クローンなど、多くのエンタープライズレベルのスーパー機能を提供します。そしてとても速いです。このファイル システムを使用すると、ボリューム マネージャーは不要になります。

9. 互換性

ZFS は POSIX 仕様と完全に互換性のあるファイル システムであるため、上位層のアプリケーションにはまったく影響がありません。 ZFS は、任意の ZFS ファイル システムを通常のブロック デバイスとして使用できるエミュレートされたボリューム モジュールも提供します。同時に、ZFS はボリューム マネージャーに基づいて構築されたボリュームをストレージ デバイス ユニットとして使用することもできます。これにより、アプリケーションや既存のファイルシステムを変更することなく、ZFS が提供するさまざまな機能を誰もが自由に利用できるようになります。

10. オープンソース

ZFS は、OpenSolaris のオープンソース プロジェクトとして Sun Microsystems によって運営されており、完全に無料で使用できます。つまり、営利企業の高い品質だけでなく、オープンソース モデルの利点も享受できるということです。
現在このファイル システムをサポートしているのは Solaris のみですが、このオープン ソース モデルにより、ZFS ベースのアプリケーションがさらに普及することは間違いありません。現在、一部の海外開発者が ZFS を Linux および Mac OS に移植しています。 ZFS を試してみたい場合は、現在 Solaris 10 にバンドルされているため、最新バージョンの Solaris 10 6/06 (http://www.sun.com/software/solaris/get.jsp) をダウンロードする必要があります。

追加メモ

この記事では、ZFS の利点について説明します。さて、ZFS の非常に現実的な問題についてお話ししましょう。 RAID-Z を使用すると、ストレージ容量を増やすために多数のディスクを購入する必要があるため、コストが高くなる可能性があります。
ZFS をすでに使用しましたか?あなたの経験はどんな感じですか?

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

<<:  MySQLデータをOracleに移行する正しい方法

>>:  Vueコンポーネントの基本のまとめ

推薦する

userdel コマンドを使用して Linux ユーザーを削除する方法の詳細なチュートリアル

セルデルとは何かuserdel は、ユーザーを削除するための低レベルのツールです。 Debian で...

Windows サーバー ファイルをローカルにバックアップする方法、Windows サーバー データ バックアップ ソリューション

重要なデータはバックアップする必要があり、リアルタイムでバックアップする必要があります。そうしないと...

aタグのhref属性とonclickイベントの比較

まず、href 属性と onclick イベントの実行順序について説明します。マウスが a タグをク...

CSS フレックスレイアウトのリストの最後の行を左揃えにする N 通りの方法 (要約)

張新旭氏の記事を引用して皆さんにシェアしたいと思います。 変更を加えたい場合は、対応する画像によって...

nginx + fastcgi を使用して画像認識サーバーを実装する

背景ディープラーニング モデルの推論には、特定のデバイスが使用されます。マシンは、モデルの読み込み、...

HTML におけるスクリプトの配置に関する簡単な説明

以前は、スクリプトは HTML 内のどこにでも配置できると思っていましたが、今日、要件に取り組んでい...

MySQLデータ移行方法とツールの分析

この記事は主にMySQLデータ移行方法とツールの分析を紹介します。サンプルコードを通じて詳細に紹介さ...

JavaScript 組み込みの日付と時刻の書式設定のサンプル コード

1. 基礎知識(日付オブジェクトのメソッド) 😜 getFullYear() は年を表す4桁の数字を...

Linux 上でプロジェクトをリリースするために Tomcat を展開するプロセスにおけるさまざまな問題と解決策

プロジェクトをプロジェクトサイトのテスト環境にデプロイするJDK1.8トムキャット8.5 Maven...

CSS3 を使用したテキスト折り紙効果のサンプルコード

序文この記事では主に、CSS3 を使用してテキスト折り紙効果を実現する例を紹介します。これは、参考と...

タオバオモールのホームページ上の大きな画像のデザイン構造に関する分析と意見(写真)

前回、Taobaoの詳細ページを分析した後(クリックして表示)、ショッピングモールの基本テンプレート...

CentOS7 (YUM) での MySQL 5.7 のインストールと設定のチュートリアル

インストール環境: CentOS7 64ビット、MySQL5.7 1. YUMソースを設定するMyS...

MySQLの自動増分主キーの実装の詳細な説明

目次1. 自己増分値はどこに保存されますか? 2. 自己価値修正メカニズム3. 自動増分値を変更する...

CSS マージンの折りたたみの詳細な説明

前のこれは古くからある古典的な質問です。以前読者から質問があったので、ここでお答えします。簡単な例か...

Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

1. 環境整備CentOS Linux リリース 7.5.1804 (コア)インストールフォルダを作...