如何绕过2TB核心转储文件系统限制?

时间:2013-08-21 21:45:08

标签: x86-64 redhat coredump

我在多线程程序中有一个巨大的VM地址空间。通常它运行在大约5TB的虚拟中,并且只能触及高达16GB的驻留集。我映射HugePages,并允许它们从他们的部分转储。 当RedHat 6.3 + Kernel 3.0.29系统强制进行崩溃转储时, 大部分驻留集都被转储,但核心文件停止在2TB。

-rw------- 1 root root 2.0T Aug 21 21:15 core-primes-6-1377119514.21645
在这种情况下,

最高报告~4TB。

21726 root     -91   0 4191g 7.1g  13m R 99.7  5.6   2:39.06 50 primes  

gdb报告核心被截断了 BFD:警告:/export0/crash/core-primes-6-1377119514.21645被截断:预期的核心文件大小> = 4488958177280,找到:2133738614784。

是否有一些神奇的foo允许内核转储超过2TB的内容 处理?文件系统是ext3,并且有足够的空间。 永远不会触及未使用内存的VM。

2 个答案:

答案 0 :(得分:1)

具有4KB块大小的基础etx3文件系统最大文件大小为2TB。切换到XFS文件系统会产生更大的最大文件大小,核心转储最多可达到〜16TB。但是转储需要30分钟。切换到ext4,本机最大文件大小为16TB。转储在<中完成。 4分钟。你只需记得更新fstab。 mkfs.ext4 -LEXPORT0 -Tlargefile / dev / sda10。使用大文件提示到文件系统需要比文件更多的空间。

答案 1 :(得分:0)

ulimit -c是用于验证和更改所创建的核心文件的最大允许大小的命令;它记录在bash手册页中。使用像

这样的东西
ulimit -c 16000000

作为root用户,您可以运行

ulimit -c unlimited