zoukankan      html  css  js  c++  java
  • Linux根文件系统:Linux文件系统概述

    本文参考资料:http://tieba.baidu.com/p/2852126057
                             https://blog.csdn.net/special00/article/details/51262334

    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”命令,查看文件系统的相关信息:

    # 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 根文件系统的目录结构 

    在嵌入式体统中,为了精简系统。/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),为各类文件系统提供一个统一的操作界面和应用编程接口。

    各文件系统的具体介绍详见。

  • 相关阅读:
    LeetCode 382. Linked List Random Node
    LeetCode 398. Random Pick Index
    LeetCode 1002. Find Common Characters
    LeetCode 498. Diagonal Traverse
    LeetCode 825. Friends Of Appropriate Ages
    LeetCode 824. Goat Latin
    LeetCode 896. Monotonic Array
    LeetCode 987. Vertical Order Traversal of a Binary Tree
    LeetCode 689. Maximum Sum of 3 Non-Overlapping Subarrays
    LeetCode 636. Exclusive Time of Functions
  • 原文地址:https://www.cnblogs.com/linfeng-learning/p/9285545.html
Copyright © 2011-2022 走看看