FreeBSD系统提示run out of inodes

一台高负载的FTP&EMAIL Server异常如下:

(1)显示屏不断提示:inumber on /:filesystem full
(2)执行df查询或mkdir创建目录提示:Device not configured
(3)log日志提示:failed: No space left on device、file_dotlock_create
(4)执行halt、reboot、shutdown、whereis、last、top等命令均提示:command not found
(5)执行uptime命令显示load averages值很高
(6)执行vi命令提示:

/: create/symlink failed, no inodes free

/: create/symlink failed, no inodes free
ex/vi: Error: /var/tmp/vi.recover: No space left on device
ex/vi: Modifications not recoverable if the session fails
ex/vi: Error: /etc/rc.conf: No space left on device
ex/vi: Error: Unable to create temporary file: No space left on device

以上种种信息都提示系统的inodes用完了,只能通过删除文件释放inodes,或者重新创建拥有更多inodes的文件系统!
以下以重建usr文件系统为例,请自行举一反三参考。

一、可通过删除src、ports、obj这三个目录以应急释放更多的inodes。

[[email protected] /]#cd /usr && rm -rf src ports obj

二、使用cpio命令将要扩展的目录安装到根分区上:

[[email protected] /]#mkdir /tmpusr
[[email protected] /]#cd /usr
[[email protected] /]#find . -print -depth | cpio -dpam /tmpusr

三、通过init 1进入单用户模式:

[[email protected] /]#init 1

四、确定所有守护程序都已停止的情况下,可以卸载掉/usr:

[[email protected] /]#umount /usr

创建新文件系统使其具有更多的索引节点:

[[email protected] /]#newfs -i 1024 /dev/ad1s1a
inode的默认值为4096,因此,通过在指定参数-i 1024,将inode的数量有效地增加4倍。换句话说,现在可以拥有的文件数量是以前的四倍。

五、重新挂载/usr并拷贝数据:

[[email protected] /]#mount /dev/ad1s1a /usr
[[email protected] /]#cd /tmpusr
[[email protected] /]#find . -print -depth | cpio -dpam /usr

六、编辑/etc/fstab使其开机能自动挂载:

参考文章:FreeBSD系统下增加硬盘

七、重启系统测试是否一切正常。

[[email protected] /]#reboot

八、使用df命令查询inodes的使用情况:

[[email protected] /]#df -ih
Filesystem     Size    Used   Avail Capacity iused ifree %iused  Mounted on
/dev/ad0s1a     81G    4.4G     70G     6%    194k   11M    2%   /
devfs          1.0K    1.0K      0B   100%       0     0  100%   /dev
/dev/ad1s1a    484G     16G    430G     3%     23k   66M    0%   /usr