Linux之文件系统结构

硬盘结构

硬盘的组成

相关术语

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

文件系统

组成

  • 文件名:用来给用户进行查看
  • iNode:存储数据的元信息
元信息:
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号来识别不同的文件
操作系统打开文件的步骤
1:首先找到该文件对应的inode号
2:通过inode号码找到inode号所对应的信息
3:根据inode的信息找到block块进行数据读取

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

目录文件

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

inode特殊作用

  • 有时候文件包含特殊符号无法删除 此时可以通过inode节点进行删除
  • 移动或者重命名文件只是改名了文件位置或者名称不影响inode号
  • 系统一般以inode号识别文件 不会考虑文件名
  • 每次修改完文件配置都会导致inode号改变 因此需要重启配置 让文件系统识别inode
[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文件系统中最小的存储单位
  • 扇区是磁盘中最小的存储单位
1:在linux中读取数据的时候其不会一个个扇区读取 效率太低
2:其会读取连续的扇区 多个连续的扇区称之为一个block块
3:块常见大小为1K即连续2sector扇区 或者4K

优点

  • 有了block读取数据会更加高效
  • 假入没有block块 深夜下载小电影高清无码的种子需要10G 每次只是下载512K 这样如何正常和老师学习啊

调优

  • 将block数据调大 节约寻址时间
  • 虽然节约寻址时间 但是浪费空间

软硬链接

硬链接

  • 硬链接指通过索引号进行文件链接 inode可以对应多个文件名
  • 一般多个文件名指向一个inode节点被称之为硬链接
  • 只删除一个文件不会影响链接次数 只有当最后一个文件被删除之后链接才会被释放

硬链接验证

语法格式: 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的快捷方式 是一个特殊的文件方式
  • 文件实际上是一个文本文件 包含另外一个文件的位置信息

软连接验证

[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 5月  18 18:47 b_link.txt -> b.txt


[root@SR ~]# rm -fr b.txt  

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

针对分区或者目录创建硬链接

[root@SR ~]# ln -s /boot/grub2/ grub_link

[root@SR ~]# ll grub_link/

跨分区创建目录(源文件必须写绝对路径)

[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

原文地址:https://www.cnblogs.com/SR-Program/p/12908604.html