You're probably using a filesystem that has a 2TB maximum file size (for example, ext3 with a 4KB or 8KB block size). `truncate` won't let you specify a target file size greater than the maximum your file system supports; 2044GB is very close to 2TB. I'm not sure why it's not exactly 2048GB that causes the problem; it's probably something internal to ext3's method of storing files