Thanks for the response Charles. But there are very few small files in this system. If I mount this boot device at /tmp/mnt/mtdblock1:On 05/12/13 18:46, Charles Manning wrote:
On Friday 06 December 2013 01:27:09 Dominic Raferd wrote:
I am responsible for a PBX system which uses embedded uClinux on 256MBHello Dominic
internal memory disk, this uses YAFFS2 filesystem and it is rapidly running
out of memory. df used space is 240MB (96% of total) and du used space is
76MB. Once df gets to 100% used I guess the whole system will fail and be
irrecoverable. I don't understand much about YAFFS but here is some info:
root@G-124:~# cat /proc/yaffs
YAFFS built:Apr 22 2010 11:02:12
$Id: yaffs_fs.c,v 1.89 2009-11-29 21:50:10 charles Exp $
$Id: yaffs_guts.c,v 1.98 2009-12-07 01:17:33 charles Exp $
Device 0 "file system"
startBlock......... 0
endBlock........... 1951
totalBytesPerChunk. 2048
nDataBytesPerChunk. 2048
chunkGroupBits..... 0
chunkGroupSize..... 1
nErasedBlocks...... 63
nReservedBlocks.... 5
blocksInCheckpoint. 0
nTnodesCreated..... 97500
nFreeTnodes........ 41
nObjectsCreated.... 96700
nFreeObjects....... 92
nFreeChunks........ 8822
nPageWrites........ 8033
nPageReads......... 89169
nBlockErasures..... 180
nGCCopies.......... 4471
garbageCollections. 72
passiveGCs......... 0
nRetriedWrites..... 0
nShortOpCaches..... 10
nRetireBlocks...... 0
eccFixed........... 0
eccUnfixed......... 0
tagsEccFixed....... 0
tagsEccUnfixed..... 0
cacheHits.......... 20
nDeletedFiles...... 0
nUnlinkedFiles..... 56
nBackgroudDeletions 0
useNANDECC......... 1
noTagsECC.......... 0
isYaffs2........... 1
inbandTags......... 0
emptyLostAndFound.. 0
disableLazyLoad.... 0
(The mounting memory loss may be related to frequent power cuts. Is there
anything that can be done to recover the lost memory (currently 164MB)
before the system fails entirely?
I would be very grateful for some urgent help/input, and can pay something
for a positive resolution. (The PBX box also has an attached USB drive
(8GB) but although this is working fine I don't believe the system can boot
from here, and it has no local interface, only via ethernet.)
If you have a wide disparity between du and df this typically means that you
have lots of small files.
du just adds up file contents and such to estimate space used with no
knowledge of file system layout. It makes various guesses. df asks the file
system what space is in use so that is a more accurate value.
If you store a 1-byte file in Yaffs you will end up with:
1x object header chunk + 1x data chunk = 2 chunks = 4k on your system.
However that overhead is fixed, so if you have a 1MB file, it just takes up
1MB + 1x object header chunk = 1MB + 2048 bytes.
So... what are you storing that you can get rid of?
# find /tmp/mnt/mtdblock1 -size -10c|wc -l
87
# find /tmp/mnt/mtdblock1 -size -100c|wc -l
281