Linux虚拟文件系统

1. 磁盘分区与目录

所有磁盘分区都必须被挂载到目录上才能使用。所谓的“挂载”就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,即进入该目录就可以读取该分区的数据,这个操作称之为“挂载”,进入点的那个目录称为“挂载点”。

由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区的,其它的目录可依据用户需求挂载到不同的分区。

上图中,假设我的硬盘分为三个区,分区1被挂载到根目录,分区2被挂载到/home这个目录,分区3被同时挂载到/var和/tmp目录===》即通过/及其以下的目录可以访问到分区1的数据;通过/home可以访问到分区2的数据;通过/var和/tmp目录可以访问到分区3的数据。

所有磁盘分区都必须被挂载后才可以使用,一个分区只有建立了文件系统(即分区的格式化)后,才可以被使用。

2. 虚拟文件系统的作用

为了能够支持各种实际文件系统,VFS定义了所有文件系统都支持的基本的、概念上的接口和数据结构;同时,实际文件系统也需要提供VFS所期望的抽象接口和数据结构,将自身的诸如文件、目录等概念在形式上与VFS的定义保持一致。

换句话说,一个实际的文件系统想要被Linux支持,就必须提供一个符合VFS标准的接口,才能与VFS协同工作。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS层和内核的其它部分看来,所有文件系统都是相同的。下图显示了VFS在内核中与实际文件系统的协同关系:

3. 关于文件系统的三个易混淆的概念

创建:以某种方式格式化磁盘的过程就是在其之上建立一个文件系统的过程。创建文件系统时,会在磁盘的特定位置写入关于该文件系统的控制信息。
注册:向内核报到,声明自己能被内核支持,一般在编译的时候注册,也可以加载模块的方式手动注册。注册过程实际上是将表示各实际文件系统的数据结构struct file_system_type实例化。
安装:执行mount操作进行挂载,将文件系统加入到Linux的跟文件系统的目录树结构上。

4. 索引节点(inode)

inode有两种,一种是VFS的inode,一种是具体文件系统的inode。前者在内存中,后者在磁盘中,所以每次其实是将磁盘中的inode填充到内存中的inode。

inode号是唯一的,表示不同的文件,在Linux内部,访问文件都是通过inode号来进行的。

当创建一个文件的时候,就给文件分配了一个inode。一个inode只对应一个实际文件,一个文件也会只有一个inode。

5. sys_open函数调用关系图

sys_open()
    do_sys_open()
        getname()
        get_unused_fd_flags()
        do_filp_open()
            set_nameidata()
            path_openat()
                get_empty_filp()
 
                path_init()
                link_path_walk()
                do_last()
                    lookup_open()
                        atomic_open()
                            error = dir->i_op->atomic_open()
                    may_open()
                    vfs_open()
                        do_dentry_open()
                            f->f_op = fops_get(inode->i_fop);
                            open = f->f_op->open;
                            error = open(inode, f);
 
            restore_nameidata()
        fsnotify_open()
        fd_install()

6. 挂载命令

mount命令使用格式

mount [-参数] [设备名称] [挂载点]

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值