Linux之文件系统结构

硬盘结构#

硬盘的组成#

相关术语#

  • 扇区:硬盘内部是金属盘片 将金属盘片划分多个区域
  • 磁道:以盘片圆心为中心 划分多个同心圆 则每一个划分圆心的线条则称之为磁道
  • 柱面:一块盘片分为两面且两面都可以进行数据存储 当一块硬盘内拥有多个盘片 且两个盘片之间拥有相同的磁道则称之为柱面

文件系统#

组成#

  • 文件名:用来给用户进行查看
  • iNode:存储数据的元信息
Copy
元信息: 1:文件的字节数 2:文件创建时间 3:文件所有者 所属组 4:时间戳--->ctime:上一次inode改变时间 mtime:上一次文件变动的时间 atime:上一次文件被访问的时间 5:链接数:有多少文件名指向该inode 6:block的位置

  • block:用来真正存放数据的区域

inode时间戳详解#

ctime#

  • 其不是指文件创建时间
  • 指inode上一次文件属性改变时间 例如:修改文件权限

mtime#

  • 文件被修改的时候文件内容发生改变

atime#

  • 文件被访问的时候内容会发生改变 例如:cat等

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 518 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 518 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 518 18:27 a.txt [root@SR ~]# ll b.txt -rw-r--r--. 2 root root 12 518 18:27 b.txt [root@SR ~]# ll -i a.txt 101917957 -rw-r--r--. 2 root root 12 518 18:27 a.txt [root@SR ~]# ll -i b.txt 101917957 -rw-r--r--. 2 root root 12 518 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 518 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 518 18:27 b.txt

硬链接不能针对目录进行创建#

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


每个分区拥有自己独立的inode号

软连接#

  • 其有点类似于windows的快捷方式 是一个特殊的文件方式
  • 文件实际上是一个文本文件 包含另外一个文件的位置信息

软连接验证#

Copy
[root@SR ~]# cp -f /etc/passwd b.txt [root@SR ~]# [root@SR ~]# ln -s b.txt b_link.txt # 创建软连接 [root@SR ~]# ll b_link.txt lrwxrwxrwx. 1 root root 5 518 18:47 b_link.txt -> b.txt

Copy
[root@SR ~]# rm -fr b.txt [root@SR ~]# ll b_link.txt lrwxrwxrwx. 1 root root 5 518 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 518 18:56 /root/aaa -> ./grub

posted @   SR丶  阅读(174)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
CONTENTS