加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

/tmp/orbit-oracle/目录inode耗尽

发布时间:2021-01-24 23:29:58 所属栏目:站长百科 来源:网络整理
导读:[[email?protected] orbit-oracle]# cd / [[email?protected] /]# du -cks * |sort -nr|head -n 20 du: cannot access `proc/3493/task/3493/fd/4‘: No such file or directory du: cannot access `proc/3493/task/3493/fdinfo/4‘: No such file or direct

[email?protected]:/extFlash1/rootfs/gentoo# df -i
Filesystem?????????? Inodes? IUsed? IFree IUse% Mounted on
/dev/sda2?????????? 1179648 210218 969430?? 18% /
udev???????????????? 124795??? 532 124263??? 1% /dev
tmpfs??????????????? 126991??? 455 126536??? 1% /run
none???????????????? 126991????? 6 126985??? 1% /run/lock
none???????????????? 126991????? 1 126990??? 1% /run/shm
/dev/sda5???????????? 24096??? 231? 23865??? 1% /boot
/dev/sdb1??????????? 655360 317560 337800?? 49% /extFlash1
/dev/mapper/loop0p2? 222656 222656????? 0? 100% /mnt

由于文件系统所对应的inode已经全部使用,最终无法给后续复制的文件分配inode。

3、解决方法

重新格式化/dev/mapper/loop0p2,并指定inode数,如下:

mkfs.ext4?/dev/mapper/loop0p2? -N 235000 (inode 数根据实际情况估计)

?

http://bbs.chinaunix.net/thread-2195775-1-1.html

2.6 inode与ln?

一个文件包括有名称、内容和管理信息如权限或修改时间。
管理信息就存放在Inode中,同时存放的还有文件的长度,文件放在磁盘的位置等

查看一个文件的Inode号码
# ls -i
654076 test1??

我们用ln使一个链指向一个已有的文件。
#ln test1 test2
#ls -i
654076?test1??654076?test2
这里test1和test2的Inode号码是一样的。
也就是说他们其实是同一个文件(Inode号码相同,也即是文件放在磁盘的位置一样),但是具有两个名称。
这样的好处是可以让一个文件存在不同的目录,或者存在不同的名称。
对test1的修改也即是对test2的修改。
# ls -l
-rw-r--r--??2 root root 29 Dec 29 17:32 test1
-rw-r--r--??2 root root 29 Dec 29 17:32 test2
? ?? ?? ?? ?? ?~~ 这里的2,就表示指向同一个Inode的链接数。

删掉test2
#ls -l
-rw-r--r--??1 root root 29 Dec 29 17:32 test1

或许会有疑惑,既然test1和test2是同一个文件,为什么删除test2,test1还在呢?
在这种情况,删除test2只是删除了一条指向654076这个Inode的一个链接。
文件依然存在。只有当最后一条链被删除时,即指向Inode的链接数为0时,文件才被删除。

# ln /boot/grub/grub.conf /home/test/grub
ln: creating hard link `grub‘ to `/boot/grub/grub.conf‘: Invalid cross-device link

在这里,我的系统分了/,/boot,等分区
ln有一个问题就是不能跨设备(分区或者文件子系统)创建链接,一是因为分区可以被mount和umount,
跨分区的硬链接在分区umount会带来一些麻烦,另外每个分区的Inode值不相同。

昨天看见有个帖说,除了swap区,可以把所有的磁盘分成一个区。
但是这样当一个分区出现文件系统错误,可能所有的数据都没有了。
而划分多个分区,每个分区的Inode不同。即使某个分区的数据错误,也不至于影响到整个系统。

跨设备创建链接,可以使用
#ln -s /test /home/test/test

# ls -li /test
13 -rw-r--r--??1 root root 0 Dec 29 17:45 /test

# ls -li /home/test/test
1697478 lrwxrwxrwx??1 root root 5 Dec 29 17:46 /home/test/test -> /test

这样就是一个软链接,它是可以跨设备的,在文件类型这里会显示l
可以看到它们的Inode号码是不同的,而且链接的数目分别各为1
因此它们并不是同一个文件。

在软链接的情况下,修改链接到的文件/home/test/test,也修改了被链接的文件/test。
但这种方式和硬链接是不同的。这是通过某种机制来实现同步。而不是同一个文件的修改。

删除链接到的文件,对被链接文件没有任何影响。
而删除被链接文件/test,链接到的文件依然存在,但是会闪烁,提示被链接的文件不存在了
也不能读取该文件了
#rm /test
# ls -il /home/test/test
1697478 lrwxrwxrwx??1 root root 5 Dec 29 17:51 /home/test/test -> /test
# more /home/test/test
/home/test/test: No such file or directory

事实上/home/test/test是存在的,作为一种特殊的文件类型为l的文件。
只不过软链接的一些规则决定了它不可读。

为了加深对文件Inode的理解,可以从mv和cp文件来说明:

# cp test1 test2
# ls -i
654076 test1??654081 test2

这两个文件Inode值不一样,cp的实质是复制创建了一个新文件

#mv??test1 test3
#ls -i
654076 test3

跟上面的比较,test1和test3的Inode是相同。
所以mv只是更改了文件的名称,也即是访问文件的入口
它们是指向同一个位置磁盘上的文件。

但是如果mv一个文件到另一个分区。
如前面所讲,不同分区的Inode值是不同的。
# ls -il /root/fs/test
654076 -rw-r--r--??1 root root 29 Dec 29 17:32 /home/fs/test
# mv test /boot/test
# ls -il /boot/test
16 -rw-r--r--??1 root root 29 Dec 29 17:32 /boot/test

所以mv文件到不同的分区,是删除掉原分区的文件之后在另外一个分区重新创建这个文件。
因此有了一个不同的Inode值。

2.7 调整Inode数量
另外,每个分区的Inode数目是有限的。
可以使用df -i来查看

# df -i
Filesystem? ?? ?? ?? ?Inodes? ?IUsed? ?IFree IUse% Mounted on
/dev/mapper/VolGroup00-LogVol00
? ?? ?? ?? ?? ?? ?? ?1958400? ?97435 1860965? ? 5% /
/dev/sda1? ?? ?? ?? ???26104? ?? ?32? ?26072? ? 1% /boot
/dev/shm? ?? ?? ?? ?? ?23850? ?? ? 1? ?23849? ? 1% /dev/shm

当一个磁盘分区(文件子系统)的Inode被用光的时候,是无法再创建文件的。
这种情况在邮件服务器或者BBS这种系统中容易出现,因为用户创建了很多小文件的情况。

要增加Inode的数量只能umount文件系统,然后用mke2fs命令来调整

#mke2fs.ext3 /dev/sda1 [ -N number-of-inodes ]?
直接指定需要的Inode数目
或者
#mke2fs.ext3 /dev/sda1 [ -i bytes-per-inode ]
调整字节/inode的比例,来达到增加创建inode数目的目的。
磁盘空间一定的情况下,当然比例越小,能创建的Inode就越多

当然如果你是只有很少但是很大的数据库文件。就可以调高bytes/inode的比例。
(更多的关于mke2fs的信息,自己去man)

不过注意。调整Inode相当于重新格式化了分区。原有的文件都会丢失
所以确实需要调整的话,先要备份数据;
或者在服务器搭建时预先设置好。

?

================================

http://www.eygle.com/archives/2007/07/inode_no_space_lefton_device.html

这是一则学习笔记,具体问题ITPUB上提问的朋友已经自己解决。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读