This is most likely because the device is out of space or out of inodes. Use df to find how much space is left. Also use df -i to find out if there are any inodes left.
If you are simply out of space, you may be able to fix it by changing your partition sizes. gParted is a program that can do this without destroying data. If you are out of inodes, or if repartitioning is not an option, you will have to move some of the data onto a different device.
If the problem was that you are out of inodes, you can move the data off the device, reformat it with different settings to allow more inodes, and move the data back to the device. The relevant options for mkfs.ext4 (also ext 2 and 3) are -i bytes_per_inode, -I inode-size, and -N number_of_inodes. You might ask why not just make a billion inodes - those inodes add some overhead and make things somewhat slower.