Vincent says:
- logrotate is your friend... :)
- or use 64 bits arch
1. Logrotate is already my friend (it was misconfigured though...)
2. 64bit architecture is not a limit for having larger files. MacOS X
on intel has no problem creating such large files.
On 06.09.2006, at 02:34, Mi Reflejo wrote:
The 2gb limit is in 32-bit cpu: Most exactly in libc, kernel fs
drivers and VFS layer.
This is not correct anymore. The kernel is running 32bit (but is
actually a AMD Opteron with EMT64 support) but can deal with large
filesystems. The filesystem also supports file larger than 2GB
(people using VMWAre would cry otherwise). So the only location left
is in libc.
See this:
Let me create a file larger than 2G
$ dd if=/dev/zero of=test bs=1M count=2050
2050+0 records in
2050+0 records out
2149580800 bytes (2.1 GB) copied, 48.2032 seconds, 44.6 MB/s
[EMAIL PROTECTED] ~]$ ls -l test
-rw-rw-r-- 1 afink afink 2149580800 Sep 6 05:42 test
[EMAIL PROTECTED] ~]$
So we can create files larger than 2GB on that filesystem. This was
not the case in 2001 when I run into that problem too where the
filesystem was really the limit. So it can not be kernel, not
filesystem. So it must be a libc limitation but for appending data to
a existing file, it sounds rather strange to me that fprintf has this
limit. Lets test this with a small piece of C:
#include <stdio.h>
#include <errno.h>
main()
{
FILE *f;
int i;
f = fopen("test.bin","a");
if(f==NULL)
{
fprintf(stderr,"could not open file\nerrno= %d
\n",errno);
return -1;
}
fseek(f,0,SEEK_END);
for(i=0;i<1000;i++)
{
fprintf(f,"The world is nice\n");
}
fclose(f);
}
This code shows that when I do a fopen on the 2.1GB file, I get an
error 27 back. ( EFBIG). So it must be libc issue. However libc is
used on my other platforms too and doesnt show this behaviours.
As "dd" has no probelm, Kannel can be made not having a problem too.
Furthermore, Kannel should not crash in that scenario which it
currently does.
And Kannel doesnt recover from that crash after a restart because the
logfile doesnt change its size (we dont truncate it). So using the
box around the box to autorestart it, wont solve it.