第7章:Linux磁盘与文件系统管理(1)

一、文件系统特性

文件系统运作方式
这与操作系统的文件数据有关。较新的操作系统的文件数据除了文件实际内容,通常会含有非常多的属性,例如Linux操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。文件系统通常会将这两部分的数据存放在不同的区块,权限与属性放置到inode,实际数据放在data block区块中。此外,还有一个超级区别会记录文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。

  • inode:记录文件的属性,一个文件占用1个inode,同时记录此文件的数据所在的block号码
  • block:实际记录文件的内容,若文件较大,则会占用多个block

inode存放block号码的好处:磁盘能够在较短时间内读取出全部的数据,读写效率高
这种数据存取的方法称为索引式文件系统
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-InDc3rdD-1582378667339)(https://user-images.githubusercontent.com/56629574/67255341-272c0e00-f4b4-11e9-9b77-b2e51ef2b399.png)]

碎片出现的原因:文件写入的block太过离散,使得文件读取的效能将变得很差。FAT文件系统需要碎片整理,而Ext2索引式文件系统基本不用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5rPpPWgH-1582378667341)(https://user-images.githubusercontent.com/56629574/67255679-dc12fa80-f4b5-11e9-9fe3-4b350f147619.png)]
FAT这种格式的文件系统没有inode,所以没办法一下子读取出来,每个block号码都记录在前一个block当中。若记录分散,则需要多次转磁盘,读取效率差。

二、Linux的EXT2文件系统(inode)

文件系统一开始就将inode与block
规划好了,但是若文件系统GB,则将所有的inode与block放在一起是不明智的,为此将文件系统格式化为多个区块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jn1VlT9D-1582378667343)(https://user-images.githubusercontent.com/56629574/67256617-b3413400-f4ba-11e9-91c9-d4225b733d5e.png)]

三、data block(数据块)

1571713132(1)

  • 原则上,block的大小与数量在格式化完就不能再改变了(除非重新格式化)
  • 每个block内自多只能放置一个文件的数据
  • 如果文件大于block,则一个文件用多个block块
  • 若文件小于block,则block剩余容量不能再被使用(磁盘空间浪费)

四、inode table(inode 表格)

  • inode数量与大小在格式化时已经固定
  • 每个inode大小固定为128bytes
  • 每个文件都仅会占用一个inode而已
  • 文件系统能建立的文件数目与inode数量有关
  • 系统读取文件时,先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能开始实际读取block的内容
  • 每个inode是128bytes,记录一个block用掉4byte
    1571714606(1)
    每个inode是128bytes,里面有12个直接指向block号码的对照,能直接取得block号码。
    间接是再拿一个block来当作记录block号码的记录区,若文件太大,则用间接的block来记录编号。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLGY7sPF-1582378667348)(https://user-images.githubusercontent.com/56629574/67257515-f00f2a00-f4be-11e9-82f2-bb5f12891d82.png)]

五、inode剩余部分

  • block bitmap(区块对照表):比如新增文件用到block,需要知道哪些block是空的
  • inode bitmap:与上类似
  • superblock:记录此filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等;
  • Filesystem Description:每个区组的开始、结束的block号码以及每个区段(superblock、bitmap、inodemap、data block)分别介于哪一个block号码之间。

六、目录

创建目录,文件系统会分配一个inode与至少一块block给该目录。其中,inode记录该目录的相关权限与属性,并可记录分配到的block号码;block则记录在该目录下的文件名占用的inode号码数据。所以,inode并没有记录文件名:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAMcapxH-1582378667350)(https://user-images.githubusercontent.com/56629574/67261145-01156680-f4d2-11e9-806b-3ab98e3ac640.png)]
inode并不记录文件名,文件名记录在目录的block中。所以新增/删除/更改文件名与目录的w权限有关。
因为文件名记录在目录的block块中,因此当我们要读取某个文件时,就必会经过目录的inode与block,然后才能找到待读取的inode号码,最终才会读到正确的文件的block内的数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTwUpL2g-1582378667351)(https://user-images.githubusercontent.com/56629574/67261636-24d9ac00-f4d4-11e9-8c81-2ef7185bb174.png)]

七、EXT2/EXT3/EXT4文件的存取与日志式文件系统的功能

新建文件或目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WNzQfQdu-1582378667352)(https://user-images.githubusercontent.com/56629574/67262138-3f148980-f4d6-11e9-95e9-66ec84488a43.png)]

发布了550 篇原创文章 · 获赞 88 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/jiangshangchunjiezi/article/details/104451166