文件系统
今日内容
文件系统
文件是操作系统提供用户/应用程序操作硬盘的一种功能
应用程序
操作系统: 文件系统(文件)
计算机硬件
文件系统是操作系统内核中负责组织管理硬盘的程序,文件系统提供了文件这种功能
操作系统: 文件系统1 文件系统2 文件系统3
硬盘 分区1 分区2 分区3
linux中df 可以查看硬盘信息 disk filesystem
linux系统:文件系统格式 >>>日志文件系统
ext3
ext4(centos 6默认)
xfa(centos7 默认)
btrfa
windows系统:文件系统
FAT32
NTFS
linux常见文件系统有xfs、ext4 和 btrfs 文件系统,它们都是日志文件系统(其特点是文件系统将没提交的数据变化保存到日志文件,以便在系统崩溃或者掉电时恢复数据)
文件系统工作原理
文件系统如何工作呢?
文件是由两部分
- 1、文件的元信息,例如权限(rwx)、拥有者、群组、时间参数等。
- 2、文件的实际内容
文件系统通常会将这两部份的分别存放在不同的区块
- 1、文件的元信息放置到inode区块中
- 2、文件的实际内容则放置到data block区块中。
# 强调:每个inode 与block 都有自己的编号
另外,文件还有一个超级区块(superblock)会记录整个档案系统的整体信息,包括inode与block的总量、使用量、剩余量等。
补充说明:
# 硬盘的最小存取单位-》扇区
# 操作系统的最小存取单位-》block块
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector),每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个扇区一个扇区地读取,这样效率太低,于是操作系统中的文件系统负责将磁盘的多扇区组织成一个个的block块,这样操作系统就可以一次性读取一个"块"(block),即一次性连续读取多个扇区。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
硬盘满了:
df -i 查看inode号
df -h 查看硬盘空间信息
总结文件系统的三种区块inode、block、superblock的意义如下:
#1、superblock:
记录此filesystem的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
#2、inode:
(1) 记录文件元信息,包括文件对应的一个或多个block块号码
(2) 一个文件被分配唯一一个inode
#3、block:
(1) 记录文件实际内容
(2) 一个文件过大时可能会被分配多个block快,即一个文件可能对应多个block块的号码,这些号码都存放在该文件的innode里
inode的大小
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df -i 命令。
由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件
用df -i查看了一下/data所在的分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。
解决方案1:删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。
解决方案2 : 在/data备份好一些文件,然后删除这些文件,释放一些inode,然后创建一个文件夹/data/cache2。在cache2下挂载一个新分区: sda4 ,下次写数据需要写到新分区cache2目录下。
inode号码
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
这里值得重复一遍,Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:
首先,系统找到这个文件名对应的inode号码;
其次,通过inode号码,获取inode信息;
最后,根据inode信息,找到文件数据所在的block,读出数据。
使用ls -i命令,可以看到文件名对应的inode号码,例如:
ls -i demo.txt
硬链接和软链接
1、一种被称为硬链接(Hard Link)
【硬连接】:硬连接指通过索引节点号来进行连接。inode是可以对应多个文件名的
ln 原文件路径 目标文件路径 (都是指向inode)
2、另一种被称为软链接,即符号链接(Symbolic Link)
软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
ls -s 原文件路径 目标文件路径 (指向文件名)
1.从定义:linux系统中,链接有两种,一种被称为软链接,类似于快捷方式,存放指向原文件inode的信息,与原文件inode不同。一种是硬链接,与原文件有相同的inode,可以指向数据block。
2.创建方式:硬链接命令 ln [原文件] [目标文件],软链接命令ln –s [原文件] [目标文件]
3.创建对象:ln命令不能对目录创建硬链接,但是可以对目录创建软链接。因为软链接可以跨越文件系统,硬链接则不能。对目录和为客户创建的文件软链接经常用到。
4.删除软链接文件,对硬链接和原文件无影响。
5.删除文件硬链接,对原文件及软链接文件无影响
6.删除原文件,对硬链接读取数据无影响,软链接则失效。会出现红底白字状。
7.同时删除原文件和硬链接,原文件才会被真正删除
8.很多硬件设备中的快照原理,类似于硬链接原理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端