您的位置:首页 > 其它

Ramdisk 上的 "No space left on device" 问题 .

2013-10-11 14:14 597 查看
最近将基于ramdisk启动linux内核,运行到shell后,想mount SD卡,先创建 mnt目录:
#.> mkdir mnt

mkdir: can't create directory 'mnt': No space left on device

于是运行df命令:

#.> df

Filesystem Size Used Available Use% Mounted on

/dev/root 7.9M 5.5M 2.0M 73% /
ramdisk是8M的,显然空间是有剩余的。

网上搜索 “No space left on device” 得一篇:
http://blog.csdn.net/wangwq_me/article/details/7785041 其中有以下一段文字:
“但也正因为这种文件系统的结构,当你在 Linux 中进行 IO 操作的时候,需要的资源除了磁盘空间以外,还要有剩余的 Inode 才行。缺省情况下, Linux 在系统安装过程中按照1个 Inode 对应 2k 磁盘空间来计算每个分区的最大 Inode 数。一旦文件系统创建之后,每个分区可用 Inode 数就无法进行动态调整。”

好吧,怀疑inode已经没有了。运行df -i命令:结果当前版本busybox 的df命令不支持 -i选项,也就是无法检查inode使用状态。

回到PC端,在ubuntu下检查:
sudo mount -o loop ramdisk.bin mnt/
df -i mnt/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/loop0 496 496 0 100% /mnt

很明显了,确实是inode用光了。。

那就重新生成ramdisk.bin吧:
genext2fs -N 2000 -b 8192 -d mnt/ ramdisk-new.bin

检验一下:
sudo umount mnt/
sudo mount -o loop ramdisk-new.bin mnt/
df -i mnt/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/loop0 2000 507 1493 26% mnt

貌似正常了。用新的ramdisk-new.bin来启动linux。再试验,OK。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: