【linux-文件系统】

本文探讨了Linux文件系统的目的,包括存储文件和管理资源,重点介绍了Ext、Ext2/3/4、xfs、swap、NFS等常见文件系统,硬盘存储结构,以及文件类型如普通文件、目录、链接、设备文件等。还补充了关于inode的概念和其在文件系统中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的

Linux中把一切资源看作是文件。
Linux文件系统的设计目的:就是用来存储文件和管理文件。Linux文件系统的文件是数据的集合,文件系统不仅包含着文件中的数据,而且还有文件系统的结构,Linux用户和应用程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
注意:操作系统是用来管理硬件和应用程序及其文件系统的,别弄混这个概念。

常见的文件系统

文件系统描述
ExtLinux 中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用
Ext2是 Ext 文件系统的升级版本,Red Hat Linux 7.2 版本以前的系统默认都是 Ext2 文件系统。于 1993 年发布,支持最大 16TB 的分区和最大 2TB 的文件(1TB=1024GB=1024x1024KB)
Ext3是 Ext2 文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大 16TB 的分区和最大 2TB 的文件
Ext4是 Ext3 文件系统的升级版。Ext4 在性能、伸缩性和可靠性方面进行了大量改进。Ext4 的变化可以说是翻天覆地的,比如向下兼容 Ext3、最大 1EB 文件系统和 16TB 文件、无限数量子目录、Extents 连续数据块 概念、多块分配、延迟分配、持久预分配、快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等。它是 CentOS 6.3 的默认文件系统
xfs被业界称为最先进、最具有可升级性的文件系统技术,由 SGI 公司设计,目前最新的 CentOS 7 版本默认使用的就是此文件系统。
swapswap 是 Linux 中用于交换分区的文件系统(类似于 Windows 中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的 2 倍,但是不要超过 2GB。它是 Linux 的必需分区
NFSNFS 是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源
iso9660光盘的标准文件系统。Linux 要想使用光盘,必须支持 iso9660 文件系统
fat就是 Windows 下的 fat32 文件系统,在 Linux 中识别为 vfat。支持最大 32GB 的分区和最大 4GB 的文件
NTFS就是 Windows 下的 NTFS 文件系统,不过 Linux 默认是不能识别 NTFS 文件系统的,如果需要识别,则需要重新编译内核才能支持。它比 fat32 文件系统更加安全,速度更快,支持最大 2TB 的分区和最大 64GB 的文件
ufsSun 公司的操作系统 Solaris 和 SunOS 所采用的文件系统
procLinux 中基于内存的虚拟文件系统,用来管理内存存储目录 /proc
sysfs和 proc —样,也是基于内存的虚拟文件系统,用来管理内存存储目录 /sysfs
tmpfs也是一种基于内存的虚拟文件系统,不过也可以使用 swap 交换分区

硬盘存储结构

用ext2文件系统为例,ext2会将整个存储空间划分为多个Block group。
在这里插入图片描述在这里插入图片描述

  • Boot Block:启动块,大小为1kb,由pc标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能操作该块。
  • SuperBlock:每1个Block group中都有SuperBlock,group 0中为主,其他group为辅,主要是将SuperBlock进行备份,避免因为一点损害导致全局不可用。
  • Group Descriptor Table:描述group内各个位置存储的信息,如Block Bitmap的起始位置和length等等。
  • Block Bitmap & inode Bitmap:描述哪些data block或inode block是空闲或者被占用的。
  • inode table:inode的数据节点的存储
  • Data blocks:具体的数据节点存储。

文件类型

  1. 普通文件(-)
    从Linux的角度来说,类似mp4、pdf、html这样应用层面上的文件类型都属于普通文件
    Linux用户可以根据访问权限对普通文件进行查看、更改和删除
  2. 目录文件(d,directory file)
    目录文件对于用惯Windows的用户来说不太容易理解,目录也是文件的一种
    目录文件包含了各自目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件,只要有访问权限,你就可以随意访问这些目录下的文件(普通文件的执行权限就是目录文件的访问权限),但是只有内核的进程能够修改它们
    虽然不能修改,但是我们能够通过vim去查看目录文件的内容
  3. 符号链接(l,symbolic link)
    这种类型的文件类似Windows中的快捷方式,是指向另一个文件的间接指针,也就是我们常说的软链接
  4. 块设备文件(b,block)和字符设备文件(c,char)
    这些文件一般隐藏在/dev目录下,在进行设备读取和外设交互时会被使用到
    比如磁盘光驱就是块设备文件,串口设备则属于字符设备文件
    系统中的所有设备要么是块设备文件,要么是字符设备文件,无一例外
  5. FIFO(p,pipe)
    管道文件主要用于进程间通讯。比如使用mkfifo命令可以创建一个FIFO文件,启用一个进程A从FIFO文件里读数据,启动进程B往FIFO里写数据,先进先出,随写随读。
  6. 套接字(s,socket)
    用于进程间的网络通信,也可以用于本机之间的非网络通信
    这些文件一般隐藏在/var/run目录下,证明着相关进程的存在
    :Linux 的文件是没有所谓的扩展名的,一个 Linux文件能不能被执行与它是否可执行的属性有关,只要你的权限中有 x ,比如[ -rwx-r-xr-x ] 就代表这个文件可以被执行,与文件名没有关系。跟在 Windows下能被执行的文件扩展名通常是 .com .exe .bat 等不同。
    不过,可以被执行跟可以执行成功不一样。比如在 root 主目彔下的 install.log 是一个文本文件,修改权限成为 -rwxrwxrwx 后这个文件能够真的执行成功吗? 当然不行,因为它的内容根本就没有可以执行的数据。所以说,这个 x 代表这个文件具有可执行的能力, 但是能不能执行成功,当然就得要看该文件的内容了。
    虽然如此,不过我们仍然希望能从扩展名来了解该文件是什么东西,所以一般我们还是会以适当的扩展名来表示该文件是什么种类的。
    所以Linux 系统上的文件名真的只是让你了解该文件可能的用途而已, 真正的执行与否仍然需要权限的规范才行。比如常见的/bin/ls 这个显示文件属性的指令要是权限被修改为无法执行,那么ls 就变成不能执行了。这种问题最常发生在文件传送的过程中。例如你在网络上下载一个可执行文件,但是偏偏在你的 Linux 系统中就是无法执行,那就可能是档案的属性被改变了。而且从网络上传送到你 的 Linux 系统中,文件的属性权限确实是会被改变的

补充

inode:存储 文件元信息(文件大小,创建者,创建时间等)即文件属性
其中包括
1、文件大小
2、文件类型(常规文件、目录、软连接等)
3、权限(读写执行权限)
4、属主(所属用户)
5、属组(所属用户组)
6、链接数(有多少个文件名指向这个inode)
7、文件创建时间
8、文件最近访问时间
9、文件最近修改时间
10、文件内容所在Block位置
:文件系统中的 inodes 数量在安装系统或格式化磁盘分区的时候已经分配好了,也就是说 inodes 数量是有限的,所以 inodes 数量有可能耗尽的,耗尽之后就会出现磁盘还有空间,但是无法创建新文件的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ImSev7en_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值