背景有时会出现这样的情况,磁盘空间显示已经被占满,但是在查看磁盘的具体文件占用情况时,发现磁盘仍然有很大的空余空间。
1. 执行df命令查看磁盘使用情况,发现磁盘已经满了。
-bash-4.2$ df -thfilesystem type size used avail use% mounted on/dev/vda1 ext4 30g 30g 0 100% /devtmpfs devtmpfs 489m 0 489m 0% /devtmpfs tmpfs 497m 0 497m 0% /dev/shmtmpfs tmpfs 497m 50m 447m 11% /runtmpfs tmpfs 497m 0 497m 0% /sys/fs/cgroup 2. 执行du命令查看各个目录的磁盘占用情况,把各个目录文件的大小相加,发现并没有占满磁盘,有10多g空间莫名失踪。
-bash-4.2$ du -h --max-depth=1 /home16m /home/logs11g /home/serverdog11g /home 3. 为何会出现这样的情况呢?
因为虽然文件已被删除,但是一些进程仍然打开这些文件,因此其占用的磁盘空间并没有被释放。执行?lsof?命令显示打开已删除的文件。将有问题的进程重启(或,清空),磁盘空间就会得到释放。
-bash-4.2# lsof | grep deletemysqld 2470 mysql 4u reg 253,1 0 523577 /var/tmp/ibfteqfn (deleted)mysqld 2470 mysql 5u reg 253,1 0 523579 /var/tmp/ibahcidw (deleted)mysqld 2470 mysql 6u reg 253,1 0 523581 /var/tmp/ibljialu (deleted)mysqld 2470 mysql 7u reg 253,1 0 523585 /var/tmp/ibcfnztb (deleted)mysqld 2470 mysql 11u reg 253,1 0 523587 /var/tmp/ibcjuqva (deleted)那么,linux的文件系统,到底为什么这么设计呢?要了解这些,就要先弄清楚并不容易,下面将从一些基本概念入手,一步步将这些梳理清楚:
什么是虚拟文件系统(vfs:virtual filesystem)?什么是通用文件模型?文件的概念超级块对象(superblock object)索引节点对象(inode object)文件对象(file object)目录项对象(dentry object)文件的表达内存表达磁盘表达目录树的构建软链接 vs 硬链接文件 & 磁盘管理索引节点状态文件 & 进程管理操作:打开&删除虚拟文件系统(virtual filesystem)下图显示了linux操作系统中负责文件管理的基本组件。上半区域为用户模式,下半区域为内核模式。应用程序使用标准库libc来访问文件,库将请求映射到系统调用,以便进入内核模式。
可以给开公司的发票吗-其他问题云服务器cvm和ecs有什么区别云服务器能备案几个域名网站电脑中刺客信条英灵殿出现存档数据损坏的解决教程mysql不严谨模式怎么开启?618云服务器秒杀【亳州网站建设】这些SEO关键词选择错误,不要忽视了lamp下如何一键安装php