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

rom*_*das 8 linux files

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

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

rom*_*das 22

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)和应用程序。检查以确保您使用的软件包是使用这些选项预编译的,或者是您自己的。

请参阅此处了解更多详情。

  • 而不是“FILE_OFFSET_BITS”,它应该是“_FILE_OFFSET_BITS”。 (3认同)