Mysql 错误 28 设备上没有剩余空间

5 mysql linux ubuntu

我一直遇到与 mysql 相同的问题,错误代码为 28,这意味着设备上没有足够的空间。

现在奇怪的部分是有足够的空间,这里有一些我在谷歌上找到的提示,以确定我是否有足够的空间。(请记住,我是 linux 系统的新手)

du -sh /var/log/mysql

36K /var/log/mysql

df -h

Filesystem            Size  Used Avail Use% Mounted on
udev                  1.5G  4.0K  1.5G   1% /dev
tmpfs                 604M  224K  604M   1% /run
/dev/disk/by-uuid/7a06472d-4cc9-4383-93b0-4ecee9b21c04
                       24G   15G  8.4G  64% /
none                  5.0M     0  5.0M   0% /run/lock
none                  1.5G     0  1.5G   0% /run/shm
/dev/vda1             461M   36M  402M   9% /boot
Run Code Online (Sandbox Code Playgroud)

我一直试图解决这个问题很长时间了,但没有任何帮助,任何建议都会有所帮助。

编辑

最奇怪的部分是,如果我删除 200-800mb 的大文件,此错误会在很短的时间内消失,然后再次返回。我实际上已经删除了大约 10GB 的文件,希望能解决这个问题,但它没有帮助。

小智 9

“设备上没有剩余空间”也可能意味着该分区的 inode 不足。使用df -i检查inode使用。

编辑:每个文件、目录和符号链接都需要一个 inode。所以这个想法是从 / 分区中删除一些文件。文件有多大并不重要。当然,如果您能找到一些方便移动的文件,您当然可以在该分区上选择一些文件并将它们移动到另一个分区。

用完 inode 是不寻常的,因此您可能在某个目录中存在一些您不知道的小文件或零长度文件。不幸的是,我不知道找到这种东西的简单方法。运行find / -xdev将打印分区上每个文件和目录的名称。您也许能够发现一些充满空文件的可疑目录。

如果您可以向系统添加额外的磁盘分区,您可以选择 / 分区上的某个目录并将其设为单独的分区。将该目录中的所有文件复制到新分区,从 / 分区中删除它们,然后将新分区挂载到旧(现在为空)目录的顶部。

核心选项是备份 / 分区,擦除它,然后用更多的 inode 重建它。这是一个高级话题,我不会在这里解释。

  • 好的,为任何寻找“find”的人找到了解决方案。-type f -name sess_\* -delete` 就可以了(我使用了超过 200 万个索引节点,哈哈) (2认同)