当前位置: 技术问答>linux和unix
YAFFS文件系统管理NAND FLASH空间问题
来源: 互联网 发布时间:2016-04-25
本文导语: 当我把NAND MOUNT上以后,通过DF查询空间使用情况, 大概是已用96字节, 但当我频繁的CP,RM多个文件后, 即写多个文件,然后再擦除, 确认NAND上没有文件, 最后查询空间使用情况,已经增加上已经使用1000多字节。 ...
当我把NAND MOUNT上以后,通过DF查询空间使用情况,
大概是已用96字节,
但当我频繁的CP,RM多个文件后,
即写多个文件,然后再擦除,
确认NAND上没有文件,
最后查询空间使用情况,已经增加上已经使用1000多字节。
我想如此反复进行下去的话,即使NAND上没有文件,最后可能
也会没空间了。
不知道大家有没有遇到这种情况?
帮我分析一下是哪个环节出了问题,谢谢!
大概是已用96字节,
但当我频繁的CP,RM多个文件后,
即写多个文件,然后再擦除,
确认NAND上没有文件,
最后查询空间使用情况,已经增加上已经使用1000多字节。
我想如此反复进行下去的话,即使NAND上没有文件,最后可能
也会没空间了。
不知道大家有没有遇到这种情况?
帮我分析一下是哪个环节出了问题,谢谢!
|
这可能是正常现象! 不会没有空间的,假如你创建了100个文件,然后删除了100个! 用df查看下,空间占
使用了多少,然后你在创建文件(内容为空),只要小于100个,df看到的信息应该是不变化的!这可能是文
件系统为了提高效率,预分配的一种策略吧!
你要明白目录和文件在文件系统具体实现中的异同,如果弄清除了,估计就明白了这个问题!
每创建一个文件时,主要创建了2个东西:1,文件节点;2,文件名;文件节点主要用来保存该文件的内容等信息;而文件名是作为该文件所在目录的内容保存在目录节点中的;所以,就算你创建空文件,也会消耗磁盘空间,因为在目录节点中会占用一个记录用来保存文件名; 而有的文件系统(比如ext2/ext3, yaffs不是很清除,估计也是这样),目录节点的内容只增加,不减少!当用rm删除一个文件的时候,我们只是掐断了文件名和indoe之间的关联而已,并将indoe标记为删除,将目录节点中该文件名标记为删除。实际上它们都还好好的存在磁盘上,这就是为什么删除的文件的可以恢复回来的原因! 由于文件名占用空间一般很少,所以很多文件系统实现中就不回收文件名所占用的信息!
你在前面用df看到的应该就是残留下来的文件名所占用的空间!由于它们被标记为删除了,所以下次创建文件名的时候可以复用。这也不会导致空间的浪费和泄露!
大概意思,要讲清楚也不是一两句话能行的!
good luck!
使用了多少,然后你在创建文件(内容为空),只要小于100个,df看到的信息应该是不变化的!这可能是文
件系统为了提高效率,预分配的一种策略吧!
你要明白目录和文件在文件系统具体实现中的异同,如果弄清除了,估计就明白了这个问题!
每创建一个文件时,主要创建了2个东西:1,文件节点;2,文件名;文件节点主要用来保存该文件的内容等信息;而文件名是作为该文件所在目录的内容保存在目录节点中的;所以,就算你创建空文件,也会消耗磁盘空间,因为在目录节点中会占用一个记录用来保存文件名; 而有的文件系统(比如ext2/ext3, yaffs不是很清除,估计也是这样),目录节点的内容只增加,不减少!当用rm删除一个文件的时候,我们只是掐断了文件名和indoe之间的关联而已,并将indoe标记为删除,将目录节点中该文件名标记为删除。实际上它们都还好好的存在磁盘上,这就是为什么删除的文件的可以恢复回来的原因! 由于文件名占用空间一般很少,所以很多文件系统实现中就不回收文件名所占用的信息!
你在前面用df看到的应该就是残留下来的文件名所占用的空间!由于它们被标记为删除了,所以下次创建文件名的时候可以复用。这也不会导致空间的浪费和泄露!
大概意思,要讲清楚也不是一两句话能行的!
good luck!