問題のある影響には、ホスト名の解決が遅いこと (OS が線形リストをより高速な検索構造に変換しない限り?) や、シェル tab との驚くべき相互作用の可能性が含まれます。 意味のあるファイル サイズに達する前に完了します。
例えば! /etc/hosts
に 500,000 個のホスト エントリを配置すると、
# perl -E 'for (1..500000) { say "127.0.0.10 $_.science" }' >> /etc/hosts
科学の場合、デフォルトのホスト名 tab ZSH での完了は、私のシステムでは完了プロンプトを返すのに約 25 秒かかります (これは、5400 RPM ディスクを搭載した 2008 年以降のラップトップです)。
行数に関してサイズ制限はないと思います。
DNS (1985 年に使用が開始された) 以前は、ホスト名の検索を行うための唯一の手段として機能したのはこのファイルでした。したがって、これは、ファイルに数千または少なくとも数百のエントリを含めることができる必要があることを意味すると推測します。最もよく接続された 1985 年以前のインターネット ノードをサポートできます。
以下に 1985 年の例を示します (形式が多少変更されています):http://jim.rees.org/apollo-archive/hosts.txt このファイルには 1680 行あり、そのうち 1325 行がホスト行です。残りの 355 行は空白、コメント、ネットワーク、またはゲートウェイです。
私が見つけた唯一の実際の制限は、一部のシステムでは、個々の 行 BUFSIZ
未満に制限されています 文字 (私の OpenBSD マシンでは 1024)。
/etc/hosts
に一握り以上のエントリがある場合 、代わりにローカルネームサーバーを設定することを検討する必要がありますが、それは私の個人的な意見です.
これを掘り下げてくれた Jeff Schaller に感謝します。
<ブロック引用>
/etc/hosts のサイズ制限はどのように判断できますか?
これは通常のファイルであるため、制限は、基礎となるファイルシステムの制限 (その背後にあるディスクの数によって制限されます) から、同じ (おそらくルート (/
)) ファイルシステム:
- ext2/3:2 TiB
- ext4:16 TiB (デフォルトの 4KiB ブロック サイズ)
- xfs:500 TiB
/etc/hosts のサイズ制限を設定するにはどうすればよいですか?
これは手動で編集されたファイルであるため、手動でのみ:
sed -i '100,$d' /etc/hosts
(100 行以上を削除するため)。