昨天,在服务器拷贝一个目录的备份后,发现:MySQL无法使用,重启后,也无法启动,出现以下错误:
[root@localhost data]# 091011 10:35:27 mysqld_safe mysqld process hanging, pid 14736 – killed
/usr/local/webserver/mysql/bin/mysqld_safe: line 137: 14736 已杀死 nohup /usr/local/webserver/mysql/libexec/mysqld –defaults-file=/data/mysql/3306/my.cnf –basedir=/usr/local/webserver/mysql –datadir=/data/mysql/3306/data –user=mysql –log-error=/data/mysql/3306/data/localhost.localdomain.err –pid-file=/data/mysql/3306/data/localhost.localdomain.pid –socket=/tmp/mysql.sock –port=3306 < /dev/null >> /data/mysql/3306/data/localhost.localdomain.err 2>&1
查看一下localhost.localdomain.err,发现
Can’t start server: can’t create PID file: No space left on device
目录下的localhost.localdomain.pid也没出现。
但是free查看了一下,该分区的空间还很大。不应该出现这个情况。
网上搜索了一下资料,可能是因为inode不足,于是df之后发现,果然,该分区使用了100%,删除一些文件后,重启下MySQL,搞定!
一般情况下,如果硬盘空间还很大,系统却提示不能创建文件和目录,那可能就是因为该分区有很多小文件。
inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是 Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。 inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。
除了删除部分没用的文件,网上还有一种操作方法是,链接到其他有空余inode分区
ln -s /opt/newcache /data/cache