硬盘结构#
硬盘的组成#

相关术语#
- 扇区:硬盘内部是金属盘片 将金属盘片划分多个区域
- 磁道:以盘片圆心为中心 划分多个同心圆 则每一个划分圆心的线条则称之为磁道
- 柱面:一块盘片分为两面且两面都可以进行数据存储 当一块硬盘内拥有多个盘片 且两个盘片之间拥有相同的磁道则称之为柱面
文件系统#
- 文件名:用来给用户进行查看
- iNode:存储数据的元信息
Copy
元信息:
1:文件的字节数
2:文件创建时间
3:文件所有者 所属组
4:时间戳--->ctime:上一次inode改变时间 mtime:上一次文件变动的时间 atime:上一次文件被访问的时间
5:链接数:有多少文件名指向该inode
6:block的位置

inode时间戳详解#
ctime#
- 其不是指文件创建时间
- 指inode上一次文件属性改变时间 例如:修改文件权限

mtime#
atime#
inode大小#
- 由于Inode会存储数据元信息因此也需要区域存放数据
- 文件系统在进行格式化的时候会自动分成两块区域 一块用来进行存放文件数据一块用来存放inode元数据
- inode的大小一般为128/256字节 inode的总数在文件系统格式化的时候就给定了
inode号码#
- 在unix与linux中通过inode用来唯一标识一个文件
- unix或者linux通过不同的inode号来识别不同的文件
Copy
操作系统打开文件的步骤
1:首先找到该文件对应的inode号
2:通过inode号码找到inode号所对应的信息
3:根据inode的信息找到block块进行数据读取

- 由于Inode号数量是有限的当inode号被用完 即使磁盘有空间依然无法创建文件

目录文件#
- 在linux中一切皆文件 目录也是文件
- 在文件目录中主要包含文件名以及文件名所对应的inode号

inode特殊作用#
- 有时候文件包含特殊符号无法删除 此时可以通过inode节点进行删除
- 移动或者重命名文件只是改名了文件位置或者名称不影响inode号
- 系统一般以inode号识别文件 不会考虑文件名
- 每次修改完文件配置都会导致inode号改变 因此需要重启配置 让文件系统识别inode
Copy
[root@SR ~]# cp -f /etc/passwd b.txt
[root@SR ~]# ll -i b.txt
101917959 -rw-r--r--. 1 root root 2501 5月 18 19:02 b.txt
[root@SR ~]#
[root@SR ~]# vim b.txt
[root@SR ~]# ll -i b.txt
101917972 -rw-r--r--. 1 root root 2509 5月 18 19:03 b.txt

block#
- 真正用来存放数据的区域
- block文件系统中最小的存储单位
- 扇区是磁盘中最小的存储单位
Copy
1:在linux中读取数据的时候其不会一个个扇区读取 效率太低
2:其会读取连续的扇区 多个连续的扇区称之为一个block块
3:块常见大小为1K即连续2sector扇区 或者4K
- 有了block读取数据会更加高效
- 假入没有block块 深夜下载小电影高清无码的种子需要10G 每次只是下载512K 这样如何正常和老师学习啊
- 将block数据调大 节约寻址时间
- 虽然节约寻址时间 但是浪费空间

软硬链接#
硬链接#
- 硬链接指通过索引号进行文件链接 inode可以对应多个文件名
- 一般多个文件名指向一个inode节点被称之为硬链接
- 只删除一个文件不会影响链接次数 只有当最后一个文件被删除之后链接才会被释放
硬链接验证#
Copy
语法格式: ln 源文件 目标文件
[root@SR ~]# echo 'hello world' > a.txt
[root@SR ~]# ln a.txt b.txt # 创建连接
[root@SR ~]#
[root@SR ~]# ll a.txt
-rw-r--r--. 2 root root 12 5月 18 18:27 a.txt
[root@SR ~]# ll b.txt
-rw-r--r--. 2 root root 12 5月 18 18:27 b.txt
[root@SR ~]# ll -i a.txt
101917957 -rw-r--r--. 2 root root 12 5月 18 18:27 a.txt
[root@SR ~]# ll -i b.txt
101917957 -rw-r--r--. 2 root root 12 5月 18 18:27 b.txt # 和a的节点号相同
[root@SR ~]# cat a.txt
hello world
[root@SR ~]# cat b.txt
hello world
[root@SR ~]# chmod 777 a.txt
[root@SR ~]# ll b.txt
-rwxrwxrwx. 2 root root 12 5月 18 18:27 b.txt
[root@SR ~]# rm -fr a.txt # 删除源文件不影响硬链接之后的
[root@SR ~]#
[root@SR ~]# cat b.txt
hello world
[root@SR ~]# ll -i b.txt
101917957 -rwxrwxrwx. 1 root root 12 5月 18 18:27 b.txt
硬链接不能针对目录进行创建#

硬链接不能跨分区进行创建#

每个分区拥有自己独立的inode号
软连接#
- 其有点类似于windows的快捷方式 是一个特殊的文件方式
- 文件实际上是一个文本文件 包含另外一个文件的位置信息
软连接验证#
Copy
[root@SR ~]
[root@SR ~]#
[root@SR ~]
[root@SR ~]
lrwxrwxrwx. 1 root root 5 5月 18 18:47 b_link.txt -> b.txt

Copy
[root@SR ~]
[root@SR ~]
lrwxrwxrwx. 1 root root 5 5月 18 18:47 b_link.txt -> b.txt

针对分区或者目录创建硬链接#
Copy
[root@SR ~]# ln -s /boot/grub2/ grub_link
[root@SR ~]# ll grub_link/

跨分区创建目录(源文件必须写绝对路径)#
Copy
[root@SR ~]# cd /boot
[root@SR boot]# ln -s ./grub /root/aaa
[root@SR boot]# ll /root/aaa
lrwxrwxrwx. 1 root root 6 5月 18 18:56 /root/aaa -> ./grub

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!