回答:
これらのものを内部的に制限するものは何ですか?
ZFSの制限は固定サイズの整数に基づいています。これは、コンピューターで計算を行う最も速い方法だからです。
別の方法は任意精度演算と呼ばれますが、本質的に低速です。これが、任意精度の算術がほとんどのプログラミング言語のアドオンライブラリであり、算術を実行するデフォルトの方法ではない理由です。例外もありますが、これらは通常、またはWolfram言語のような数学指向のDSLです。bc
高速演算が必要な場合は、固定サイズの単語、ピリオドを使用します。
任意精度の計算からの速度ヒットは、コンピューターのRAM内では十分に悪いですが、ファイルシステムが必要なすべての数値をRAMにロードするために必要な読み取り回数がわからない場合、非常にコストがかかります。任意のサイズの整数に基づくファイルシステムは、複数のブロックから各数値をつなぎ合わせる必要があり、メタデータブロックの大きさを前もって知っているファイルシステムに比べて、複数のディスクヒットから多くの追加のI / Oを必要とします。
次に、これらの各制限の実際的なインポートについて説明します。
2 128バイトは事実上すでに無限大です。代わりに、その数を約10 38バイトとして書き込むことができます。つまり、その制限に達するためには、10 個の50個の原子のすべてがデータの格納に使用される単一の地球サイズのZFSプールが必要です。バイトは、10 12アトム以下の要素によって格納されます。
10 12原子は多くのように聞こえますが、それは約47ピコグラムのシリコンです。
この ドキュメントの執筆時点で、microSDストレージのデータ密度はグラムで2.5×10 -13 g /バイトです。利用可能な最大のSDカードは1 TBで、重量は約0.25gです。¹microSDカードは純正品ではありませんシリコンですが、パッケージングを無視することはできません。これは、地球のコンピューターでも必要になるためです。プラスチックの密度が低く、金属ピンの密度が高いと、平均してシリコンとほぼ同じ密度になると仮定します。チップ間の相互接続などを考慮するために、ここでもいくつかの傾斜が必要です。
ピコ何かは10 -12なので、上記の47 pgと2.5×10 -13 g / Bの数値は約1桁離れています。つまり、最初の概算で、現在利用可能な最大のmicroSDカードから最大サイズのZFSプールを1つ構築するには、地球サイズの惑星全体の原子を使用する必要があるかもしれません。シリコン、カーボン、ゴールドなどの適切な組み合わせに近いもので、スラグが多すぎて見積もりを下回らないようにします。
ここで、テープやディスクのような密度の高いものの代わりにフラッシュストレージを使用しているのが不公平だと思われる場合は、関連するデータレートと、冗長性やデバイスの交換を検討していないことも考慮してください。この地球サイズのZFSプールは、置き換える必要のないvdevで構成され、妥当な時間でプールを満たすことができるほど高速にデータを転送できると想定する必要があります。ここでは、ソリッドステートストレージのみが有効です。
上記の概算はかなりおおざっぱであり、ストレージ密度は上昇を続けていますが、見通しを維持します。将来的には、最大サイズのZFSプールを構築するというこのスタントを取り除くために、クラストからクラストまでの合計を使用する必要があります小さな惑星のコアリソース。
これで、惑星サイズのファイルシステムができました。その中に保存されているファイルのサイズについて、私たちは何と言えますか?
地球上のすべての人に、そのプールの同じサイズのスライスを与えましょう。
10 38 ÷10 10 ≈10 28 ÷10 19 ≈10 9
これは、プールのサイズをEarth²の人口で割った値を最大ファイルサイズで割った値です(端数)。
言い換えれば、誰もが私たちの地球サイズのZFSストレージアレイの小さな個人用スライスに最大10億の最大サイズのファイルを格納できます。
(この例では、ストレージアレイがまだ惑星のサイズであることが気になる場合は、上記の最初の制限に達するためには、それがそれほど大きくなければならないことを忘れないでください。したがって、この例で引き続き使用するのは当然です。ここに。)
そのファイルごとの最大ファイルサイズはZFSで16 EiBです 。これはext4の最大ボリュームサイズよりも16倍大きく、それ自体が今日、途方もなく大きいと考えられています。
最大サイズのext4ディスクイメージのバックアップを保存するために、Planet ZFS(旧称Earth)のスライスを使用しているユーザーを想像してください。さらに、この認知症の顧客(常に1人です)はtar
、ZFSの最大ファイルサイズ制限に達するために、ファイルごとに16に増やすことにしました。そうすることで、その顧客はまだそれを約10億回繰り返す余地があります。
この制限について心配するなら、それはあなたが解決する必要があると想像しなければならない種類の問題です。そして、そのファイルをオンラインバックアップサービスに1回転送するために必要なデータ帯域幅を取得することさえありません。
地球コンピュータがどれほどありそうもないことについても明確にしましょう。最初に、重力の影響でそれ自体が崩壊して中央で溶融することを許可せずに、それを構築する方法を理解する必要があります。次に、残りのスラグなしで地球上のすべての原子を使用してそれを製造する方法を理解する必要があります。
さて、あなたは地球のコンピュータの表面を地獄のように変えたので、そのコンピュータを利用しようとするすべての人々は、どこか他の場所に住んでいなければならないでしょう。地球のコンピュータと現在の場所との間のすべてのトランザクションにレイテンシを追加する軽い遅延。今日の〜10msのインターネットping時間に問題があると考えている場合、地球の人口を月に移動させてこの地球コンピューターを作ることができる場合、キーボードとコンピューターの間に2.6光秒を置くことを想像してください。
ZFSのボリュームとファイルサイズの制限は、サイエンスフィクションの大きなものです。
2 48は、ディレクトリあたり約10 14ファイルです。これは、ZFSをフラットファイルシステムとして処理しようとするアプリケーションでのみ問題になります。
インターネット上の各IPアドレスに関するファイルを保存しているインターネット研究者を想像してみてください。最初に古いIPv4スペースのスラックスペースを差し引いてから、ホストにIPv6アドレスを追加して計算がうまくいくようにした後、正確に2 32個の IPが追跡されているとしましょう。以上2以上保存できるファイリングシステム構築するために彼を必要とする対処しようと、この研究者は何の問題である16 65536 - !— IPごとのファイル?
この研究者がTCPポートごとにファイルも保存しているとしましょう。そのため、IP:ポートの組み合わせごとに1つのファイルだけで、2 16乗数を使い果たしました。
修正は簡単です。IPにちなんだ名前のサブディレクトリにIPごとのファイルを保存し、IPごとのファイルを保持するディレクトリのサブディレクトリにポートごとのファイルを保存します。現在、私たちの研究者は、IP:ポートの組み合わせごとに10 14個のファイルを保存でき、長期的なグローバルインターネットモニタリングシステムに十分です。
ZFSのディレクトリサイズの制限は、私が「サイエンスフィクションビッグ」と呼んでいるものではありません。この制限に達する可能性のある実際のアプリケーションは今日知られているためですが、階層の力により、限定。
この制限は、特定のディレクトリでファイルを検索するために必要なデータ構造がRAMに収まりきらないようにするためだけに、これと同じくらい低く設定されている可能性があります。最初にこの問題を回避するために、データを階層的に編成することをお勧めします。
この1つの制限は厳しいように見えますが、実際には理にかなっています。
この制限はZFSに起因するものではありません。4.2BSDのFFSにさかのぼると思います。引用はわかりませんが、この制限が若い頃、「おばあちゃんへの短い手紙」を送るには十分なスペースだと誰かが指摘しました。
だから、それは疑問を投げかけます:なぜあなたはそれよりもわかりやすいようにファイルに名前を付ける必要があるのですか?それ以上の真のニーズがある場合は、おそらく階層が必要です。その時点で、制限に階層内のレベルの数に1を加えたものを乗算します。つまり、ファイルが階層の3レベル下に埋め込まれている場合、フルパスの名前の制限は4×255 = 1020文字です。
最終的に、この制限は人間の制限であり、技術的な制限ではありません。ファイル名は人間が使用するためのものであり、人間は実際にはファイルの内容を効果的に説明するために255文字を超える必要はありません。上限を高くしても役に立たないだけです。それ以来、人間は長いファイル名に対処する能力を獲得していないため、この制限は古い(1983)です。
奇妙に見える "255"の値がどこから来ているのかを尋ねる場合、それは8ビットバイトのサイズに基づくいくつかの制限です。2 8は256であり、ここで使用されるN-1値は、ファイルごとのメタデータの256バイトのフィールドでファイル名文字列の終わりをマークするためにnullターミネーターを使用していることを意味します。
実際には、どのような制限がありますか?
脚注:
0.01gの精度で指定されたスケールを使用してこれを測定しました。
この記事の執筆時点で75億5000万。上記では、これを 10 10に四捨五入しています。これは、世紀半ばにヒットするはずです。
youtube-dl
、そのようなコースのビデオをダウンロードするときなど、完全なファイル名を書き込めないときに壊れるソフトウェアがあります。
PATH_MAX
POSIXシステムでの最小数は256です。これは、最大でNAME_MAX
各文字のコンポーネントで構成できます(この値は少なくとも14です)。