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