Linuxで2 GBを超えるファイルを作成できないのはなぜですか?


8

libpcapとsnortを使用して大容量(1 GB全二重、最大2 GBの集約)ネットワークリンクをスニッフィングするときに問題が発生したときに得た知識を共有したいと思いました。アプリケーションはすべてのトラフィックを正常に傍受しますが、ファイルサイズが2 GBに達するとクラッシュします。

2 GBのファイルの作成に問題がある場合、それをサポートするファイルシステムがある場合や、カーネルがそれをサポートしていることがわかっている場合でも、これは最適です。


私はこれをコミュニティと共有すると思いました。変更が必要な場合はお知らせください。
romandas 2009年

回答:


22

Linuxの大容量ファイルサポート(> 2GB)は、最大ファイルサイズが2 GBに制限されないように、3つの別々の場所で対処する必要があります。

  1. カーネルで有効化された大容量ファイルのサポート

  2. 大きなファイルサイズをサポートするファイルシステム(多くのLinuxベースのファイルシステムはサポートしています(ext3、reiserfs> = 3.6など))

  3. 使用するライブラリまたはアプリケーション内での大容量ファイルのサポート

大きなファイルのカーネルサポートは、2.4.0-test7以降にあります。カスタムカーネルを使用する場合は、大きなファイルのオプションが含まれていることを確認してください。

ほとんどのLinuxファイルシステムは大きなファイルをサポートしていますが、ネットワークファイルシステムを使用すると問題が発生する場合があります。

最後に、ライブラリ(つまりlibpcap)とアプリケーションは、gccオプション-D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64を使用してコンパイルする必要があります。使用しているパッケージがこれらのオプションを使用してプリコンパイルされているか、独自のパッケージをロールしていることを確認してください。

詳細はこちらをご覧ください。


3
「FILE_OFFSET_BITS」の代わりに、「_ FILE_OFFSET_BITS」にする必要があります。
ジュリアーノ

あなたが正しい。修正。
romandas 2009年

1
反対票を投じる場合は、少なくともきちんとし、その理由を教えてください。
romandas 2009

注:_FILE_OFFSET_BITS合格O_LARGEFILEへのopen正しいアーチ上のシステムコールが、 _FILE_OFFSET_BITS移植性のために好ましい:stackoverflow.com/questions/2888425/...
チロSantilli冠状病毒审查六四事件法轮功

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.