从lsof开始,深入研究Linux虚拟文件系统
|
有时会出现这样的情况,磁盘空间显示已经被占满,但是在查看磁盘的具体文件占用情况时,发现磁盘仍然有很大的空余空间。 1.执行df命令查看磁盘使用情况,发现磁盘已经满了。 -bash-4.2$ df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/vda1 ext4 30G 30G 0 100% / devtmpfs devtmpfs 489M 0 489M 0% /dev tmpfs tmpfs 497M 0 497M 0% /dev/shm tmpfs tmpfs 497M 50M 447M 11% /run tmpfs 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来访问文件,库将请求映射到系统调用,以便进入内核模式。 (编辑:拼字网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 它们属于哪里? “ifconfig eth0 up”amp;“dhcli
- itools添加农历方法
- ruby-on-rails – 将Ruby 2.0.0-p247更新为Ruby-2.0.0-p353
- linux – Tensorflow推荐的系统规格?
- 360儿童卫士3使用说明 360儿童智能手表3说明书
- Linux提示删除文件cannot remove `文件名#39;: Operation n
- linux – 使用systemd服务单元的Restartamp;RestartSec或使
- 安装 Fedora 36 后一些适合中国用户的简单操作
- 深入浅出的Linux文件夹介绍
- linux – 是负责设置堆栈的程序还是操作系统

