为什么我无法在 Linux 上创建大于 2 GB 的文件?

为什么我无法在 Linux 上创建大于 2 GB 的文件?

我想分享一些我使用 libpcap 和 snort 嗅探高容量(1 GB 全双工;最大 2 GB 聚合)网络链路时遇到麻烦时获得的知识。应用程序可以成功嗅探所有流量,但当捕获的文件大小达到 2 GB 时会崩溃。

如果您在创建 2 GB 文件时遇到问题,即使您有一个支持它的文件系统,和/或您知道内核支持它,那么这适合您。

答案1

Linux 的大文件支持(> 2GB)需要在三个不同的位置进行处理,以确保您不会遇到 2 GB 的最大文件大小限制:

  1. 内核中启用大文件支持

  2. 支持大文件大小的文件系统(许多基于 Linux 的文件系统都支持(ext3、reiserfs >= 3.6 等))

  3. 所使用的库或应用程序中的大文件支持

自 2.4.0-test7 以来,内核就已经支持大文件;如果您使用自定义内核,请确保已包含大文件选项。

大多数 Linux 文件系统都支持大文件,但在使用网络文件系统时可能会遇到问题。

最后,需要使用 gcc 选项 -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS=64 编译库(即 libpcap)和应用程序。请检查以确保您使用的软件包已使用这些选项进行预编译或自行编译。

这里更多细节。

答案2

看起来这是一个libpcap 的问题... 正如第一个答案所述。

重新编译 libpcap,或者寻找其他版本。

相关内容