GNU/Linux >> Linux の 問題 >  >> Linux

ZFSとは何ですか?なぜ人々はそれについて夢中なのですか?

今日は、高度なファイルシステムであるZFSについて見ていきます。それがどこから来たのか、それが何であるのか、そしてなぜそれが技術者や企業の間でとても人気があるのか​​について議論します。

私は米国出身ですが、音がかっこいいので、ZeeFSではなくZedFSと発音したいと思います。好きなように発音できます。

注:この記事では、ZFSが何度も繰り返されています。機能とインストールについて話すときは、OpenZFSについて話します。 ZFS(Oracleによって開発された)とOpenZFSは、OracleがOpenSolarisをシャットダウンして以来、異なるパスをたどってきました。 (これについては後で詳しく説明します。)

ZFSの歴史

Zファイルシステム(ZFS)は、2001年にMatthewAhrensとJeffBonwickによって作成されました。ZFSは、SunMicrosystemsのOpenSolaris用の次世代ファイルシステムとして設計されました。 2008年、ZFSはFreeBSDに移植されました。同じ年、ZFSをLinuxに移植するプロジェクトが開始されました。ただし、ZFSはGNU GeneralPublicLicenseと互換性のないCommonDevelopmentand Distribution Licenseの下でライセンスされているため、Linuxカーネルに含めることはできません。この問題を回避するために、ほとんどのLinuxディストリビューションはZFSをインストールする方法を提供しています。

OracleがSunMicrosystemsを購入した直後、OpenSolarisはクローズソースになりました。 ZFSの今後の開発もすべてクローズドソースになりました。 ZFSの開発者の多くは、このイベントの順番に不満を持っています。 AhrensとBonwickを含むコアZFS開発者の3分の2は、この決定のためにOracleを離れました。彼らは他の企業に加わり、2013年9月にOpenZFSプロジェクトを作成しました。このプロジェクトはZFSのオープンソース開発を主導してきました。

上記のライセンスの問題に戻りましょう。 OpenZFSプロジェクトはOracleとは別のものであるため、Linuxカーネルに含めることができるようにライセンスをGPLと互換性のあるものに変更しないのはなぜか疑問に思う人もいるかもしれません。 OpenZFS Webサイトによると、ライセンスを変更するには、現在のOpenZFS実装にコードを提供した人に連絡する必要があります(含む OpenSolarisまでの最初の一般的なZFSコード)、ライセンスを変更する許可を取得します。この仕事はほぼ不可能であるため(一部の寄稿者は死んでいるか、見つけるのが難しい可能性があるため)、彼らは自分たちが持っているライセンスを保持することにしました。

ZFSとは何ですか?その機能は何ですか?

前に述べたように、ZFSは高度なファイルシステムです。そのため、いくつかの興味深い機能があります。例:

  • プールされたストレージ
  • コピーオンライト
  • スナップショット
  • データの整合性の検証と自動修復
  • RAID-Z
  • 最大16エクサバイトのファイルサイズ
  • 最大256クアッドリリオンゼタバイトのストレージ

それらの機能のいくつかを分解してみましょう。

プールされたストレージ

ほとんどのファイルシステムとは異なり、ZFSはファイルシステムとボリュームマネージャーの機能を組み合わせています。これは、他のファイルシステムとは異なり、ZFSは一連のドライブまたはプールにまたがるファイルシステムを作成できることを意味します。それだけでなく、別のドライブを追加することでプールにストレージを追加できます。 ZFSはパーティション分割とフォーマットを処理します。

コピーオンライト

コピーオンライトは、もう1つの興味深い(そしてクールな)機能です。ほとんどのファイルシステムでは、データが上書きされると、データは永久に失われます。 ZFSでは、新しい情報は別のブロックに書き込まれます。書き込みが完了すると、ファイルシステムのメタデータが更新され、新しい情報を指すようになります。これにより、書き込み中にシステムがクラッシュした場合(または何か他のことが起こった場合)、古いデータが保持されます。また、システムがクラッシュした後、システムがfsckを実行する必要がないことも意味します。

スナップショット

コピーオンライトは、別のZFS機能であるスナップショットにつながります。 ZFSはスナップショットを使用して、ファイルシステムの変更を追跡します。 「スナップショットには元のバージョンのファイルシステムが含まれており、ライブファイルシステムにはスナップショットの作成以降に行われた変更が含まれています。追加のスペースは使用されません。新しいデータがライブファイルシステムに書き込まれると、このデータを保存するために新しいブロックが割り当てられます。」ファイルが削除されると、スナップショット参照も削除されます。したがって、スナップショットは主にファイルへの変更を追跡するように設計されていますが、ファイルの追加と作成は追跡しません。

スナップショットを読み取り専用としてマウントして、ファイルの過去のバージョンを回復できます。ライブシステムを以前のスナップショットにロールバックすることもできます。スナップショット以降に行われたすべての変更は失われます。

データの整合性の検証と自動修復

新しいデータがZFSに書き込まれるたびに、そのデータのチェックサムが作成されます。そのデータが読み取られると、チェックサムが検証されます。チェックサムが一致しない場合、ZFSはエラーが検出されたことを認識します。その後、ZFSは自動的にエラーの修正を試みます。

RAID-Z

ZFSは、追加のソフトウェアやハードウェアを必要とせずにRAIDを処理できます。当然のことながら、ZFSにはRAIDの独自の実装があります:RAID-Z。 RAID-Zは、実際にはRAID-5のバリエーションです。ただし、「予期しない再起動後にデータとパリティ情報が不整合になる」というRAID-5書き込みホールエラーを克服するように設計されています。基本レベルのRAID-Z(RAID-Z1)を使用するには、ストレージ用に少なくとも2つのディスク、パリティ用に1つのディスクが必要です。 RAID-Z2には、パリティ用に少なくとも2台のストレージドライブと2台のドライブが必要でした。 RAID-Z3には、パリティ用に少なくとも2台のストレージドライブと3台のドライブが必要です。ドライブをRAID-Zプールに追加する場合は、2の倍数で追加する必要があります。

巨大なストレージの可能性

ZFSが作成されたとき、それはファイルシステムの最後の単語になるように設計されていました。ほとんどのファイルシステムで64ビットが使用されていた当時、ZFSの作成者は128ビットにジャンプして将来を保証することにしました。これは、ZFSが「32ビットまたは64ビットシステムの160億倍の容量を提供する」ことを意味します。実際、Jeff Bonwick(作成者の1人)は、「128ビットのストレージプールを完全に投入すると、文字通り、海を沸騰させるよりも多くのエネルギーが必要になる」と述べています。

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

箱から出してZFSを使用したい場合は、FreeBSDまたはillumosカーネルを使用したオペレーティングシステムのいずれかをインストールする必要があります。 illumosはOpenSolarisカーネルのフォークです。

実際、ZFSのサポートは、一部の経験豊富なLinuxユーザーがBSDを選択する主な理由の1つです。

LinuxでZFSを試してみたい場合は、ストレージファイルシステムとして使用できます。最近、Ubuntu 19.10では、そのままルートにZFSをインストールする機能が導入されました。 UbuntuでのZFSの使用についてもっと読む。 LinuxでZFSを試すことに興味がある場合は、LinuxでのZFSプロジェクトに、その方法に関するチュートリアルがいくつかあります。

警告

この記事では、ZFSの利点について説明しました。ここで、ZFSの簡単な問題について説明します。 RAID-Zの使用は、ストレージスペースを追加するために購入する必要のあるドライブの数が多いため、コストがかかる可能性があります。

ZFSを使用したことがありますか?あなたの経験はどのようなものでしたか?以下のコメントでお知らせください。

この記事がおもしろいと思ったら、ソーシャルメディア、Hacker News、またはRedditで共有してください。



Linux
  1. bashrcファイルに欠落しているコマンドは何ですか?

  2. libtool の .la ファイルは何のためのものですか?

  3. CentOS のキックスタート ファイルの %pre セクションで使用できるコマンドは何ですか?

  1. iノードは何に適していますか?

  2. `touch`コマンドの正当な使用法は何ですか?

  3. Exec 3とは何ですか?

  1. LsとHexdumpがファイルサイズについて意見が一致しないのはなぜですか?

  2. Linux のスパース ファイルとは

  3. grep、awk、sed の違いは何ですか?