1009 Linux的文件系统介绍以及各种设备的说明

摘要:
Linux文件系统基本的Linux目录树文件结构。linux文件系统由四部分组成:引导块、超级块、索引节点表和数据块。当Linux启动时,在连接文件系统之前,它将首先检查超级块中的相应字段。如果上次未执行卸载操作,则需要检查文件系统的完整性。Linux使用文件描述符来标识特定进程正在访问的文件。当打开或创建文件时,系统将返回其他操作的文件描述符以供参考,该描述符可用于标识其对应的特定文件。
Linux的文件编程
linux文件管理系统分为3部分
:与文件管理有关的软件,被管理的文件,实施文件管理需要的数据结构
用C语言建立,打开,关闭文件,向文件写入和读出数据等。

Linux文件系统简介
    从系统角度看
:文件系统是对文件存储空间进行组织和分配,负责文件存储,并对存入的文件进行保护和检索的系统。负责为用户建立文件,存入,读出,修改,转存,控制文件的存取,当用户不再使用时撤销文件等操作。
    linux文件系统基础
        linux目录树文件结构。linux中,所有的内容都被看成文件,包括硬件和目录。所有的操作都可以归结为对文件的操作,linux可以像操作普通文件一样来对磁盘文件,串口,键盘,显示器,打印机及其他的设备进行操作。
    bin:存放系统启动时需要的执行文件和一些用户常用的命令,例如cp,ls,cat等。
    boot:存放系统内核以及启动管理器,类似:grub
    cdrom:Ubuntu系统安装光盘镜像的挂在位置,这个目录根据用户的实际情况而存在,有些系统中可能没有。
    dev:设备文件目录,在其中存放了相应的设备信息。
    etc:存放相应的系统配置文件。
    home:用户主目录,在其中按照用户名存放了当前系统中存在用户的个人文件和信息,儡兮Windows中“我的文档”。
    lib:存放着系统最基本的动态链接共享库,其作用类似于Windows中的.dll文件。    
    lib64:这是lib目录的64位版本,当使用64位的操作系统时会存在这个目录,并且将对应的64位库函数存放在这里。
    lost+found:存放在文件系统修复时恢复的文件。
    media:用于存放Ubuntu系统加载的各种媒体,例如光盘,软盘等。
    mnt:用户临时挂载其他的文件系统,如挂载U盘,CDROM等。
    opt:用于存放安装时“可选”的程序,例如KDE,Gnome等。
    proc:系统内存的映射虚拟目录,可以通过直接访问这个目录来获取系统信息,他存在于内存中,而不是硬盘上。
    root:root用户的主工作目录,类似home。
    run:存放的是自系统启动以来描述信息的文件,某些类似Linux中这个目录可能位于var下。
    sbin:存放系统级的可执行文件,类似bin,但是这些文件只能供root用户访问,而不能供普通用户访问。
    selinux:存放提供强制访问控制的相应文件,在某些linux中可能不存在。
    srv:存放提供一些特定服务的文件。
    sys:存放系统信息相关文件。
    temp:存放临时文件。
    usr:存放普通用户的应用程序,文档,程序等。
    var:存放在时间,大小,内容上会经常变化的文件。
    注:Linux是主动管理文件,Windows是自己管理文件。
    linux文件系统由4部分组成:引导块,超级块,索引节点表,数据块。
    引导块:用于存放文件系统的引导程序,引导程序用于系统引导或启动操作系统,如果一个文件系统不存放操作系统,其引导块将为空。
    超级块:用来描述该文件系统管理的资源,其包含空闲索引节点表和空闲数据块表,用于具体说明文件系统的资源使用情况。
    索引节点表:用来存储文件的控制信息,每个节点对应一个文件。
    数据块:是磁盘上存放数据块的磁盘块,包括目录文件和数据。
    ***超级块***
    用于描述Linux文件系统的资源状态,包括文件系统的大小,空闲单元位置信息等。由以下字段构成:
    1.文件系统的容量信息,如:inode数目,数据块数目,保留块数目和块的大小等。
    2.文件系统中空闲块的数目。
    3.文件系统中部分可用的空闲块表。
    4.空闲块表中下一个空闲块号。
    5.索引节点表的大小。
    6.文件系统中空闲索引节点表
    7.空闲索引节点表中下一个空闲索引节点号
    8.超级块的锁字段,用于保证对存储单元的互斥操作
    9.空闲块表的锁字段和空闲索引节点的锁字段
    10.超级块是否被修改的标志
    11.其他字段,存放了文件系统是否完整的标志
    注:Linux关机时候要先将缓冲区数据写回文件系统,并且卸载该文件系统,如果没有卸载文件系统就关机,则很可能导致数据丢失。Linux启动的时候,在挂接(mount)一个文件系统之前首先会检查其超级块中的相应字段,如果上次没有进行卸载操作,则需要对该文件系统的完整性进行检查(fsck)。
    ********索引节点表********
    文件信息是由索引节点表来给出的,每个文件都有自己的索引节点表,在之中包含了该文件数据在磁盘上存储的位置信息,操作权限,文件所有者,操作时间等信息。索引节点表平时存储在磁盘上,在需要进行操作的时候读入内存,通常,存储在磁盘上的索引节点表称作磁盘索引节点,内存中的映像称作内存索引节点表。
    1.文件类型:普通文件,目录文件,链接文件,设备文件,管道文件等。
    2.文件链接数:记录了引用该文件的目录表项数,即记录了有多少个文件名指向该文件。
    3.文件属主标识:指出该文件的所有者ID
    4.文件属主的组标识:指出该文件所有者属组的ID
    5.文件的访问权限:系统将用户分为文件属主,同组用户和其他用户三类,每类用户可能获得对文件的一种或几种访问权限,目录文件的执行权限是指修改目录的权利。
    6.文件的存取时间:包括文件最后一次被修改的时间,最后一次被访问的时间和最后一次修改索引点的时间
    7.文件的长度:以字节表示的文件长度
    8.文件的数据块指针:文件操作的当前位置指针。
    文件描述符是Linux用于标识一个特定进程正在访问的文件,当打开一个文件或者创建一个文件,系统将返回一个文件描述符供其他操作引用,他可以用来标识其对应的特定文件。在Linux中,每个进程都可以拥有最多1024个文件描述符,并且有自己的文件描述符表,其中对于一般的进程是固定的,并且一般进程是固定的,并且是由系统自动打开的:0--标准输入文件,通常是键盘     1---标准输出文件,通常是显示屏   2----标准错误输出,一般也是屏幕
     Linux文件类型介绍
    -:普通文件,对应S_ISEEG()    l:链接文件,对应S_ISLNK()    
    c:字符设备文件,对应S_ISCHR()    s:套接字文件,对应S_ISSOCK()
    d:目录文件,对应S_SDIR()    b:块设备文件,对应S_ISBLK()
    p:管道文件,对应S_ISFIFO()
   

免责声明:文章转载自《1009 Linux的文件系统介绍以及各种设备的说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IntelliJ IDEA LicenseServer激活及使用iphone 推送服务Apple Push Notification Service下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

软件测试从业者必备的高频Linux命令

命令 cd 1.如何进入上级目录 cd .. 2.如何进入当前用户主目录 cd ~ 3.如何进入上两级目录 cd ../.. 4.进入当前目录命令 cd . 5.如何进入目录 /usr/isTester cd /usr/isTester 命令 mv 1.移动一个文件夹(isTester文件夹,移动到/APP/www目录) mv ~/isTester/ /A...

makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解

在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 1 1led.bin : crt0.S led.c 2 2 arm-linux-gcc -c -o crt0.o crt0.c 3 3 arm-linux-gcc -c...

[.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS

[.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS 本篇要点:在进阶篇快要结束的时候说说源代码管理器,我们的开发,不是一个人可以完成的事,团队协作很重要,而且要对产品生命周期和开发过程进行规范管理才行。那么源代码管理器是必不可少的。本篇主要介绍一款非常简单易用,且有一定普及率的源代码管理工具VSS. 1.VSS简介...

Oracle中组合索引的使用详解(转)

  在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点:     1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引;     2、 在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQ...

转:用jupyter notebook打开指定目录下的.ipynb文件

如果直接用命令行或者用快捷方式打开jupyter,默认的环境是anaconda的默认root环境,且打开的目录是默认的工作目录,不是我们的目标目录。 要想用jupyter打开的目录是目标目录,共有两个方法,一个是可以修改jupyter的默认工作目录路径,另一个是用命令行进入指定目录,然后切换到指定的环境,然后启动jupyter,就可以在网页里显示指定目录并...

Mongo 后台加索引踩坑

背景,随着mongo数据量变大,查询效率变低,要对索引进行优化,所在公司对mongo依赖比较严重,而DBA并不对mongo的权限做控制,所以每个后端开发都有mongo的读写权限,通常每个人各自管理自己的模块的数据。 由于笔者所负责的模块数据增长较快,用户的关键业务数据都存在mongo里面,很快mongo里面的数据就积累到几百万,之前只有一个五个字段的联合索...