/etc/hostsのサイズ制限は何ですか?

/etc/hostsのサイズ制限は何ですか?

サイズ制限を決定または設定するには/etc/hosts?何行まで可能ですか?

答え1

疑わしい効果には、遅いホスト名解決(OSが何らかの形で線形リストをより高速な検索構造に変換しない限り)と、意味tabのあるファイルサイズに達する前にシェル完了との驚くべき相互作用の可能性が含まれます。

例えば! 500,000のホストエントリ/etc/hosts

# perl -E 'for (1..500000) { say "127.0.0.10 $_.science" }' >> /etc/hosts

科学的な観点からは、tabZSHのデフォルトのホスト名の完成は私のシステムから完了のプロンプトを返すのに約25秒かかります(もちろん、これは5400RPMディスクを搭載した2009年のラップトップで発生しますが、まだそうです)。

答え2

行数の面ではサイズ制限がないと思います。

1985年に使用され始めたDNS以前は、このファイルがホスト名の検索を実行する唯一の手段でした。したがって、このファイルは、最もよく接続されたホスト名もサポートできる何千ものまたは少なくとも何百ものエントリを含めることができる必要があることを前提としています。 1985年ノード以前のインターネット。

以下は1985年の例です(形式変更)。http://jim.rees.org/apollo-archive/hosts.txt ファイルには1680行があり、そのうち1325がホスト行です。残りの355行はスペース、コメント、ネットワーク、またはゲートウェイ1です。

私が見つけることができる唯一の実際の制限は、一部のシステムでは個人ワイヤー制限は文字(私のOpenBSDコンピュータでは1024文字)未満ですBUFSIZ

に複数の項目がある場合は、/etc/hostsローカルネームサーバーの設定を検討する必要がありますが、これは私の個人的な意見です。


1この問題を調査してくれたJeff Schallerに感謝します。

答え3

/etc/hostsのサイズ制限をどのように決定しますか?

これは通常のファイルであるため、制限は基本ファイルシステムの制限(それ自体は後のディスクの数によって制限されます)に対応し、同じ(ルート()可能)ファイルシステム内の他のファイルが/使用するスペースを引いたものです。

  • ext2/3: 2TiB
  • ext4: 16TiB(デフォルトの4KiBブロックサイズ)
  • xfs: 500TiB

/etc/hostsのサイズ制限を設定するには?

手動で編集したファイルなので、手動でのみ実行できます。

sed -i '100,$d' /etc/hosts

(100行以上は削除してください)

答え4

...私は頭を握り、生涯にわたってある種のサイズ制限の問題を解決できる単一の状況や状況を考えることはできません。/etc/hosts深刻なsyscallファミリのパフォーマンスが打撃を受けるなど、実際の問題があります。その影響は、getaddrinfo()すべてのシステムコールがDNSクエリを送信するかどうかを決定する前にファイルを参照する必要があることです。これらの大きなプレーンテキストファイルを維持する問題は言うまでもありません。

私たちは、より高いレベルでコミュニケーションがとれない状況に直面しているようです。大容量ファイルで/etc/hostsどのような問題を解決しようとしていますか?私はこれよりも良い解決策があるとほとんど確信しています。

関連情報