这是一个RHEL服务器,我正在它上运行一个MySQL服务器,数据库和日志文件(但是,日志是禁用的)位于/srv目录中,其中有很多可用的空间。
最近,我有一个崩溃的表,所以我尝试修复它,但是在第二天,我发现MySQL无法以错误的方式响应许多查询,这表明没有磁盘空间:
ERROR 1030 (HY000): Got error 28 from storage engine所以我运行了下面的命令,看看是什么占用了空间
[root@tms /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server-slash
9.9G 9.5G 0 100% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
/dev/sda1 485M 58M 402M 13% /boot
/dev/mapper/server-var
739G 252G 450G 36% /srv令人惊讶的是,这是/目录。但更令人惊讶的是,/下的目录没有显示超过2GB的使用空间,而df显示/的总空间为9.9GB。
[root@tms /]# du -sh /*
7.5M /bin
48M /boot
200K /dev
24M /etc
4.0K /home
223M /lib
21M /lib64
16K /lost+found
4.0K /media
4.0K /mnt
183M /opt
...deleted some file-not-found errors for files under /proc
0 /proc
144K /root
14M /sbin
4.0K /selinux
252G /srv
0 /sys
44K /tmp
917M /usr
259M /var那么,为什么df显示错误的值呢?我怎么才能找出实际占用空间的东西呢?
发布于 2013-07-11 12:14:33
一种常见的编程技术是创建一个临时文件并立即取消它的链接()。这将使文件(及其空间)在程序的持续时间内可用,但在使用它的程序终止时会自动删除它。一个优点是没有必要编写epilog (清理)代码。
若要确定是否有保存未链接文件的进程打开,请执行以下操作:
lsof -a +L1 /dev/server_slash(或)
lsof +D /dev/server_slash +L1查找NLINK值为零(0)的任何文件。这些文件的链接计数为零,当最后一个进程终止时将消失。大小/偏移量列将提供有关文件的字符大小。
发布于 2013-07-11 11:54:01
1) df不报告在unix样式的文件系统上为root保留的空间(默认为5%)。所以df的报告总是比你应该报告的少。
2)不过,在这里,我猜您在没有安装srv分区的情况下运行了数据库。如果没有安装的srv分区,事情就会被写到挂载点上。到/-分区中的srv目录下。(根分区),因此在/-分区上占用了很大的空间。
但是,当您将srv-分区挂载到srv-目录上时,/-分区的srv目录下的所有文件都会被“挂载”到它上的分区“隐藏”,但空间仍然被占用,尽管您无法看到它或访问它来删除它。
尝试卸载srv -分区(转到singleuser-moder/runlevel 1/维护模式,从而停止一切),检查它是否真的已卸载(使用mount),并查看是否有文件隐藏在通常用作挂载点的目录下(usr、srv、home、var、tmp、.)在/-分区中。我敢打赌你一定会在其中一些找到大的东西。当您完成并重新启动时,请确保srv-分区按其应有的方式实际挂载。
这种方法--您可以在目录中拥有通常由挂载分区隐藏的内容--有时实际上是有用的。
https://unix.stackexchange.com/questions/82618
复制相似问题