Linux基础-----文件系统

文件系统:管理文件,实现文件的按名存取:
rootfs:根文件系统
     叶子节点:文件(最后一级,以无法存储其他文件)
    
     文件系统由内核提供,数据存储在硬盘,而程序不能直接和硬件沟通,通过内核提供的接口(系统调用)向内核发起请求
     由内核来完成相关工作,但系统调用过于底层,又将多个系统调用封装成更高级的接口提供上层应用使用,这些封装

     后的系统调用叫库(API),通过库来使用某些功能,如读取 写入 执行 删除等调用。
    
    
     MBR:共计512字节 (硬盘的0扇区)  引导整个磁盘上的操作系统
          446字节:bootloader
          64字节:分区表
          2字节:磁盘是否可引导
    
     每一个分区前两个扇区(1024字节)Boot block:引导块:用于引导该分区上的操作系统
    
     文件系统将分区化为3部分,Boot block 索引 存储区,又将存储区划分成多个块,1K 2K 4K,文件系统会给
     这些块进行编号(block号),根据索引里面的对应关系来确定数据存储在哪些块当中。
    
     索引信息(元数据):文件的大小 权限 属主 属组 时间戳 数据对应的块的标号(磁盘块指针实现)


磁盘块指针:如果数据过大,占用块就会过多,而数据的块标号信息存储在inode,导致indoe也会过于庞大,为了解决这个问题,利用层次化的结构:

如果是小文件,磁盘块指针会直接指向数据块(直接指针),如果文件过大,使用二级指针,指向一个区域,区域内表明,这是一个区域,这个区域包含着一部分磁盘块标号信息,这样就节省了indoe空间


     每个文件都会有一个条目,每个条目称为:索引节点
     整个空间叫索引,每一个条目叫索引节点:inode:文件的元数据:和数据内容没有关系
     为了方便查找,每个inode都有一个编号:inode编号
    
     目录:文件的路径映射:目录也是文件,也有indoe的条目,数据也存储在硬盘块上
     目录磁盘块数据:该目录下的文件的indoe编号  对应的文件名  文件的类型


     目录只存放着该目录下的一级子目录信息,不包含子目录里面的文件信息,子目录里的文件信息存放在子目录.依次类推

     如/var下面有log目录,var只需要记录log的信息,而log下面的文件信息,有log记录)
    
     如:文件系统如何找到/var/log/messages这个文件
     1.首先根据根的inode编号(根会自引用),找到根的inode,通过inode找到对应的磁盘块,这个磁盘块中包含var这个文件的的inode编号和对应的文件名及类型,
     2.通过var的inode的编号,来找到对应indoe,通过var的inode的信息找到var这个文件所在的磁盘块,通过磁盘块的数据找到log目录的inode编号和对应的文件名及文件类型
     3.通过log的inode编号,找到log的indoe来确定磁盘块,通过磁盘块中存储的memssages这个文件的inode的编号和对应文件名,确定是哪个磁盘块,最后读取到了messages的内容
    

创建文件

1.找一个空闲的iode,空闲的磁盘块

   inode位图: 每个inode对应一个位,位为0为空闲,1为占用

   块inode位图:每个块对应一个位,为0空闲,为1占用

  

block group:块组 (组内块数量相等)

     将过多的块划分成不同的组,找空闲的inode或block时,可以扫描某一组的位图,根据位图确定空闲,一个组不够用时,可以跨组引用

    

每个组是自我管理

    磁盘的第2个1024字节称为:超级块(块组0的超级块)

     超级块:存储着磁盘有多少个组,每个组从哪个块开始到哪个块结束

  

GDT:块组描述表:块位图在哪存放 inode图存放在哪  inode表存放位置  空闲块 空闲inode

          每个块组都有自己的:inode表 块位图 inode位图  GDT 

tune2fs - l :查看超级块

f

dumpe2fs :输出ext 文件系统信息

     -h :显示超级块信息

du 目录 :查看目录的文件大小及总大小

     -s :只查看目录大小
     -h:单位换算,显示比较直观的方式

df  :显示磁盘相关信息

     -l: 磁盘信息 总容量块  已用块 空闲块  使用比例  挂载点

     -h:人性化显示

     -P:posix兼容的风格显示

     -i:indoe相关的信息

删除

1.把文件的inode数据清.把inode归类至未使用

2.默认不会清除块数据,仅会把磁盘块归类为未使用,将来如果使用,直接覆盖

复制

1.找空闲块将数据复制进去,并建立新的inode

移动(相同分区)

1.在新的路径建立一个条目,条目指向原有inode

2.删除原路径的对应条目,文件的inode和数据库不动

移动(非一个分区)

1.创建一个新文件,删除老文件

链接文件  ln -s 原文件  链接文件

     软连接(符号链接)

          ls -l 文件类型为l的文件   链接文件

              bash中测试文件是否为软连接文件

              

          1.能跨分区,可以对所有文件创建,包括目录

          2.删除原文件,链接文件将无法使用

          3.所有链接文件,与原文件指向不同的inode,并非同一个文件

              

     硬链接  ln  原文件 链接文件    

          1.两个不同的路径指向同一个inode,使用同一个磁盘块

          2.删除某个路径,不会情况文件的inode,知道文件上的最后一个路径删除

          3.硬连接不能跨分区,不能对目录建立硬连接

               ls -l  第2列显示的数字就是文件被硬连接的次数

               ls -i 显示文件的inode 

          4.所有连接指向同一个inode,因此他们是同一个文件

          

ext系统文件系统:扩展属性

     lsattr  显示扩展属性

          chattr  修改扩展属性 

               -a:只允许追加内容

               -i:对所有人变成只读文件,包括root

压缩 解压缩  归档

          压缩:tar -czvf  test.tar.gz  /test

                    -c:创建压缩

                    -z:使用gzip压缩

             zip格式压缩  zip test.zip  test

             zip格式解压缩 uzip  test.zip

          解压缩:tar -xvf test.tar.gz 

                    -C :指定解压缩路径

     dd命令

               dd if=原文件 of=目标文件

               

          


本文出自 “悬剑” 博客,请务必保留此出处http://sublime.blog.51cto.com/8856101/1538528

Linux基础-----文件系统,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。