Linux文件系统的特性和结构

Linux文件系统的特性

文件系统类型在使用之前必须要格式化。

每种操作系统能够使用的文件系统并不相同. 如windows 98 以前的微软操作系统主要利用的文件系统是 FAT ,windows 2000 以后的版本有所谓的 NTFS 文件系统,至于 Linux 的正统文件系统则为 Ext2 。

Linux 操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。 文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。

  1. 超级块(Superblock): 这是整个文件系统的第一块空间。包括整个文件系统的基本信息,如块大小,inode/block的总量、使用量、剩余量,指向空间 inode 和数据块的指针等相关信息。

  2. inode块(文件索引节点) : 文件系统索引,记录文件的属性。它是文件系统的最基本单元,是文件系统连接任何子目录、任何文件的桥梁。每个子目录和文件只有唯一的一个 inode 块。它包含了文件系统中文件的基本属性(文件的长度、创建及修改时间、权限、所属关系)、存放数据的位置等相关信息. 在 Linux 下可以通过 “ls -li” 命令查看文件的 inode 信息。硬连接和源文件具有相同的 inode 。

  3. 数据块(Block) :实际记录文件的内容,若文件太大时,会占用多个 block。为了提高目录访问效率,Linux 还提供了表达路径与 inode 对应关系的 dentry 结构。它描述了路径信息并连接到节点 inode,它包括各种目录信息,还指向了 inode 和超级块。

假设某一个文件的属性与权限数据是放置到 inode 4 号(下图较小方格内),而这个 inode 记录了文件数据的实际放置点为 2, 7, 13, 15 这四个 block 号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个 block 内容读出来! 那么数据的读取就如同下图中的箭头所指定的模样了。

文件系统结构

Linux文件系统由三部分组成 : 文件名,inode,block Linux文件系统: ext3,ext4,xfs windows文件系统: FAT32,NTFS

inode包含文件的元信息,具体来说有以下内容:

  • 文件的字节数

  • 文件拥有者的User ID

  • 文件的Group ID

  • 文件的读、写、执行权限

  • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  • 链接数,即有多少文件名指向这个inode

  • 文件数据block的位置

可以用stat命令,查看某个文件的inode信息:

[root@node1 ~]# stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 1098        Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 17160819    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-12-11 21:30:29.727012077 -0500   #指文件上一次查看文件的时间  比如:chmod +x  a.sh 
Modify: 2022-12-01 21:37:03.366387475 -0500  #指文件内容上一次变动的时间 比如:echo aa >> a.sh 或vim  a.sh 修改内容 
Change: 2022-12-01 21:37:03.367387483 -0500   #指inode上一次文件属性变动的时间 比如:cat  a.sh
 Birth: -
[root@node1 ~]# ls -i /etc/passwd  ##查看innode号
17160819 /etc/passwd
[root@node1 ~]# df -i  ##查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令
Filesystem               Inodes  IUsed   IFree IUse% Mounted on
/dev/mapper/centos-root 8910848 166768 8744080    2% /
devtmpfs                 479660    404  479256    1% /dev
tmpfs                    482690      1  482689    1% /dev/shm
tmpfs                    482690   1293  481397    1% /run
tmpfs                    482690     16  482674    1% /sys/fs/cgroup
/dev/sda1                524288    327  523961    1% /boot
tmpfs                    482690      1  482689    1% /run/user/0

Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。 实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。 inode数据量设置大一些:可以创建多个文件,占用空间比较大 inode数据量设置小一些:可以创建很少文件,占用空间比较小

block 是真正存储数据的地方。 block是 文件系统 中最小的存储单位 扇区 是 磁盘 中最小的存储单位 簇和block调大 优点: 速度快,节约寻址时间,缺点:空间浪费

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值