zoukankan      html  css  js  c++  java
  • Linux文件系统分析

    1. 文件系统

    • 文件系统是一个对存储设备上的数据进行组织的机制,这种机制便于用户和操作系统进行交互。文件系统有对应的物理空间,Linux下每个分区都是一个文件系统,都有自己的目录结构。文件系统包含着文件中的数据、文件系统的结构,操作系统内的所有文件、目录、软连接以及文件保护信息等都存储在其中。Linux支持多种格式的文件系统,并且可以同时挂载多个文件系统。
    • Linux下文件系统的体系结构如下:

    • VFS,虚拟文件系统。VFS层的作用是隔离了不同文件系统之间的差异,为上层提供统一的API接口。
    • General Block Device Layer层的作用是隔离不同存储设备的硬件差异,为上层提供统一的IO操作接口。

    2. 根文件系统

    2.1 根文件系统简述

    • 根文件系统首先是一种文件系统,它不仅具有普通文件系统的存储数据文件的功能,而且相对于普通的文件系统,它的特殊之处在于:它是内核启动时所挂载的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。
    • Linux的文件结构是单个树状结构,根目录是所有Linux文件和目录所在的地方,需要挂载一个具体的磁盘分区。根文件系统被挂载到根目录下“/”后,在根目录下就有根文件系统的各个目录,文件:/bin /sbin /mnt等,再将其他分区挂接到/mnt目录上,/mnt目录下就有这个分区的各个目录,文件。
    • 挂载,指的是将一个文件系统和一个存储设备进行关联。执行挂载时,要提供文件系统类型、文件系统和一个挂载点。

    P.S.:上图目录结构中所列出的目录/bin,/dev,/etc,/lib,/proc,/var,/usr对于根文件系统来说是必须具有的,其他目录都是可选的。

    2.2 查看文件系统挂载情况

    在Linux下,可以使用命令查看文件系统的挂载情况。

    “mount”命令,查看具体的挂载情况:

    # mount
    rootfs on / type rootfs (rw)
    /dev/root on / type nfs (rw,relatime,vers=2,rsize=4096,wsize=4096,namlen=255,hard,nolock,proto=udp,port=65535,timeo=10,retrans=3,
    
    sec=sys,mountport=65535,mountproto=,addr=192.168.1.100)
    
    
    proc on /proc type proc (rw,relatime)
    sysfs on /sys type sysfs (rw,relatime)
    tmpfs on /var type tmpfs (rw,relatime)
    tmpfs on /tmp type tmpfs (rw,relatime)
    tmpfs on /dev type tmpfs (rw,relatime)
    # df
    Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/root             19478204   5695772  12769952  31% /
    tmpfs                   175892         0    175892   0% /var
    tmpfs                   175892         0    175892   0% /tmp
    tmpfs                   175892         0    175892   0% /dev

    2.3 根文件系统的目录结构 “df”命令,查看文件系统的相关信息:

    在嵌入式体统中,为了精简系统。/bin,/dev,/etc,/lib,/proc,/var,/usr对于根文件系统来说是必须具有的,其他目录都是可选的。

    /                 

    /bin         

    该目录下存放所有用户都可以使用的、基本的命令,譬如cd,ls,cp等。这些命令在挂载其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中。

    /sbin           

    该目录下存放的是基本的系统命令,它们用于启动系统,修复系统等,与/bin目录相似,在挂接其他文件系统之前就可以使用/sbin,所以/sbin目录必须和根文件系统在同一个分区中。

    /dev

    该目录下存放的是设备文件,设备文件是Linux中特有的文件类型。在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。譬如通过"dev/ttySAC0"文件可以操作串口0。

    /etc

    该目录下存放着各种配置文件,对于PC上的Linux系统,/etc目录下的文件和目录非常多,这些目录文件是可选的,它们依赖于系统中所拥有的应用程序是否需要配置文件。在嵌入式系统中,这些内容可以大为精减。

    /lib

    该目录下存放共享库和可加载驱动程序模块。共享库用于启动系统、支持可执行程序的运行。

    /home               

    用户目录,它是可选的,对于每个普通用户,在/home目录下都有一个以用户名命名的子目录,里面存放用户相关的配置文件。

    /root

    根用户的目录,与此对应,普通用户的目录是/home下的某个子目录。

    /usr

    该目录存放的是共享、只读的程序和数据,/usr目录下的内容可以在多个主机间共享。

    /var

    与/usr目录相反,/var目录中存放可变的数据,比如spool目录(mail,news),log文件,临时文件。

    /proc

    该是一个空目录,常作为proc文件系统的挂载点,proc文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。

    /mnt

    用于临时挂载某个文件系统的挂接点,通常是空目录,也可以在里面创建子目录来临时挂载光盘、硬盘,譬如/mnt/cdram /mnt/hda1 。

    /tmp

    用于存放临时文件,通常是空目录,一些需要生成临时文件的程序用到的/tmp目录下,所以/tmp目录必须存在并可以访问。

    3. 常用的文件系统

    Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统 进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。

    参考链接: 

          http://tieba.baidu.com/p/2852126057

                          https://blog.csdn.net/special00/article/details/51262334

          https://www.cnblogs.com/linfeng-learning/p/9285545.html

  • 相关阅读:
    codeforces B. Strongly Connected City(dfs水过)
    codeforces A. Bayan Bus(简单模拟)
    AC_Dream 1211 Reactor Cooling
    AC_Dream 1224 Robbers(贪心)
    java中DatagramSocket连续发送多个数据报包时产生丢包现象解决方案
    AC_Dream 1216 G
    java模拟一个简单的QQ
    codeforces D. Design Tutorial: Inverse the Problem
    codeforces B. Design Tutorial: Learn from Life
    codeforce A. Design Tutorial: Learn from Math
  • 原文地址:https://www.cnblogs.com/CaesarTao/p/10600618.html
Copyright © 2011-2022 走看看