cmake读取配置文件操作 虚拟文件系统的作用


cmake读取配置文件操作 虚拟文件系统的作用

文章插图
背景
有时会出现这样的情况 , 磁盘空间显示已经被占满 , 但是在查看磁盘的具体文件占用情况时 , 发现磁盘仍然有很大的空余空间 。
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的文件系统 , 到底为什么这么设计呢?要了解这些 , 就要先弄清楚并不容易 , 下面将从一些基本概念入手 , 一步步将这些梳理清楚:
虚拟文件系统(virtaul filesystem)
下图显示了Linux操作系统中负责文件管理的基本组件 。上半区域为用户模式 , 下半区域为内核模式 。应用程序使用标准库libc来访问文件 , 库将请求映射到系统调用 , 以便进入内核模式 。
所有与文件相关的操作的入口都是虚拟文件系统(VFS) , 而非特定的额文件系统(如Ext3、ReiserFS和NFS) 。VFS 提供了系统库和特定文件系统之间的接口 。因此 , VFS 不仅充当抽象层 , 而且实际上它提供了一个文件系统的基本实现 , 可以由不同的实现来使用和扩展 。因此 , 要了解文件系统是如何工作的 , 就要先了解VFS。
通用文件模型
VFS 的主要思想在于引入了一个通用文件模型(common file model) 。通用文件模型由以下对象类型组成:
超级块对象(superblock object)内存:文件系统安装时创建 , 存放文件系统的有关信息磁盘:对应于存放在磁盘上的文件系统控制块(filesystem control block)
索引节点对象(inode object)内存:访问时创建 , 存放关于具体文件的一般信息(inode 结构)磁盘:对应于存放在磁盘上的文件控制块(file control block)每个索引节点对象都有一个索引节点号 , 唯一地标识文件系统的文件
文件对象(file object)内存:打开文件时创建 , 存放打开文件与进程之间进行交互的有关信息(file 结构)打开文件信息 , 仅当进程访问文件期间存在于内核内存中 。
目录项对象(dentry object)内存:目录项一旦被读入内存 , VFS就会将其转换成dentry 结构的目录项对象磁盘:特定文件系统以特定的方式存储在磁盘上存放目录项(即 , 文件名称)与对应文件进行链接的有关信息


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: