Linux创建文件系统

本文详细介绍了Linux创建文件系统的概念,包括格式化的不同层次、文件系统组成部分如inode、超级块和位图索引,以及硬链接和符号链接的区别。讨论了Linux支持的各种文件系统,并提到了VFS作为统一接口的重要性。还涵盖了文件系统管理工具和如何创建、检测及修复文件系统。
摘要由CSDN通过智能技术生成

创建文件系统的含义:就是格式化一个硬盘分区,不同的格式化方式,就是创建了不同的文件系统。

格式化:

  • 低级格式化:划分分区前执行,主要是划分硬盘的磁道等。
  • 高级格式化:划分分区后执行,创建文件系统
  • 创建文件系统时做的目的:当我们在硬盘上创建文件后,以后可以用文件的名字还能找到这个文件。

文件包含2部分:

  • 元数据(包括:权限,属主/组,时间戳,大小,数据块指针等)
    数据块指针:指向文件内容在数据区的位置(根据文件内容的大小,位置会有多个)
  • 数据本身的内容。

创建文件系统时,把整个分区划分成2个区域,一大一小。

  • 小的区域放每个文件的元数据,叫元数据区(也叫:Inode table)
    每个文件的元数据,叫 inode(index node)
  • 大的区域放文件本身的内容,叫数据区
    数据区需要再次划分成一堆block,block的大小一般是扇区的倍数。一个扇区是512bytes。
  • 元数据区和数据区图例:

  • 元数据区和数据区的大小比例怎么决定呢?
    如果文件的size小,而且文件数量多,则会发生元数据区已经满了,但是数据区还有很多空余。
    如果文件的size大,而且文件数量少,则会发生数据区已经满了,但是元数据区还有很多空余。
  • 一般文件:它的元数据里的数据块指针区域,存放的是数据区的地址。占用分区的数据区域的存储空间。
  • 符号链接文件:它的元数据里的数据块指针区域,存放不是是数据区的地址,而是实际文件的路径。所以它不占用分区的数据区域的存储空间。它只占用元数据区域的存储空间。
  • 设备文件:它的元数据里的数据块指针区域,存放不是是数据区的地址,而是主设备号和次设备号。所以它不占用分区的数据区域的存储空间。它只占用元数据区域的存储空间。

查看文件的inode编号。

  • 使用ls -i files,或者stat files

操作系统,如何知道哪些inode别使用了,哪些block被使用了?

搜索整个数据区域,肯定能知道block的使用情况,

搜索整个元数据区域,肯定能知道inode的使用情况,可是性能太低下了。

所以,在元数据区域找块空间,存放2个东西,叫位图索引(bitmap)。

一个是inode的位图索引(Inode bitmap)。

一个是block的位图索引(Block bitmap)。

位图索引的每个bit位对应一个inode/block,0代表此inode/block未被使用,1代表此inode/block已被使用。

搜索位图索引,速度就快多了。

super block

若一个分区里只有一个元数据区,一个数据区的话,即便有位图索引,索引也是太多了,遍历一遍也很费时间,所以实际的文件系统,都是有多个元数据区和数据区,如下图,每个元数据区和数据区组成一个独立的逻辑分区,独立自治,每个逻辑分区里,再建立位图索引。有了逻辑分区的话,还需要一个中央政府,去管理这些逻辑分区,这个中央政府叫【super block】。

super block:记录着逻辑分区的信息。

如果super block损坏了的话,那整个分区就废了,所以super block就必须做冗余处理,所以把super block放到了多个逻辑分区的数据区里。如下图:

inode里没有存放文件的名字,名字放哪里了呢?放目录里了。目录也是文件,可不是windows里的文件夹。

目录的block里放的是:目录里的文件和文件所对应的inode编号。

下图表示了:元数据区,和数据区,和如何找到文件/var/log/messages的

找到硬盘上的文件后,就放到内存的【buff/cache】中,下次用户再访问此文件就能快速的从内存中读取到。

用free命令查看内存情况:

# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        336M        3.0G         13M        429M        3.1G
Swap:          3.9G          0B        3.9G

硬链接和符号链接的区别

操作系统能根据文件路劲,找到它对应的inode编号。

硬链接:

  • 创建硬链接命令:ln src link_file
  • 多个硬链接文件,所对应的inode编号相同
  • 硬链接不能跨文件系统,因为每个文件系统的inode计数方式不同。
  • 创建硬链接会增加inode的引用计数,同样删除硬链接会减少inode的引用技术,当inode的引用计数变成零时,是否数据区对应的空间。
  • 目录不支持硬链接,防止循环引用。

符号链接:

  • 创建符号链接命令:ln -s src link_file
  • 符号链接文件,有自己独立的inode。
  • 可以跨文件系统
  • 创建或删除符号链接,不影响inode的引用计数
  • 符号链接可以指向目录
  • 符号链接的mode是777,但实际的mode还是要取决于它指向的文件的mode
  • 符号链接的size是其指定的文件的路径字符串的字节数
$ ls -l
lrwxrwxrwx. 1 ys   ys   14 Dec 27 13:25 sl1 -> 符号链接11
-rw-rw-r--. 1 ys   ys    0 Dec 27 13:24 符号链接11

Linux支持大部分的文件系统,哪个文件系统最好呢?没有最好只有更好。

不同的文件系统,适应不同的使用场景。

不同的文件系统,对分区的划分方法都不一样。对应读写文件的程序来说,就太难了,不可能针对每种文件系统,写不同的代码。那么,linux是如何解决这个问题的呢?使用VFS。

VFS:virtual FIle System虚拟文件系统。

文件读写程序,只跟VFS打交道,然后VFS和各个文件系统打交道。

VFS给程序员统一的,简洁的API接口。

Linux支持哪些文件系统:

  • ext2,ext3,ext4:基本被淘汰了。单个文件的大小有限制
  • xfs:红帽7开始好像使用xfs了。centos7好像使用此文件系统。特点:单个文件的大小没有限制
  • relserfs:能相对容易找回误删除的文件,但是作者入狱了,所以不是主流了。
  • btrfs:特点:单个文件的大小没有限制。性能好,但还是处于测试阶段。
  • iso9660:光盘&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值