定义与作用:
- VFS(Virtual File System)是一个仅存在于内存中的抽象层,用于屏蔽不同文件系统的差异,为用户和应用程序提供一个统一的接口。
- 在文件系统挂载后,VFS会将文件系统的元数据(如超级块和inode)加载到内存中。
主要对象类型:
- 超级块(Super Block):
- 记录文件系统的总体信息,如inode数量、block数量、已使用和剩余空间等。
- 索引节点(Inode):
- 包含文件的元数据,如文件大小、权限、修改时间、数据块位置等。
- 文件对象(File):
- 表示打开的文件,包含当前读写位置等信息。
- 目录项对象(Dentry):
- 缓存文件名与inode号之间的链接,加速从文件名到数据的查找过程。
文件系统读取流程:
- 通过文件名和目录项找到inode号。
- 通过inode号在inode表中查找inode。
- 通过inode中的block指针找到数据块。
文件系统类型与特性
ext4文件系统:
- 支持最大单个文件大小为16TB(4K block size)。
- 最大文件系统大小为1EB。
- 使用32位inode号,限制文件数量约为40亿。
XFS文件系统:
- 支持更大规模的存储,单个文件最大可达16EB。
- 最大文件系统大小可达8EB。
- 使用64位管理空间,具有更好的可扩展性和scalability。
查看文件系统和inode信息
- 使用
df -i
查看文件系统的inode使用情况。- 使用
ls -i
查看特定文件的inode号。- 使用
dumpe2fs
或xfs_info
查看文件系统的详细元信息。
链接类型
软链接(Symbolic Link):
- 使用
ln -s
命令创建。- 类似于Windows的快捷方式,存储目标文件的路径。
- 如果删除原文件,软链接将失效。
- 可以跨文件系统创建。
硬链接(Hard Link):
- 使用
ln
命令创建(不带-s
选项)。- 通过增加文件名与inode之间的链接数实现,不占用额外磁盘空间。
- 删除原文件,硬链接仍然有效。
- 不能跨文件系统创建。
- 不能对目录进行硬链接。
逻辑卷管理(LVM)
- 功能:动态调整磁盘容量,提高空间利用率,便于数据备份。
- 组件:物理卷(PV)、卷组(VG)、逻辑卷(LV)。
- 命令:
pvcreate
、vgcreate
、lvcreate
用于创建。pvdisplay
、vgdisplay
、lvdisplay
用于显示信息。lvextend
、lvreduce
用于扩展和缩减逻辑卷。
磁盘阵列(RAID)
- RAID级别:
- RAID0:无容错,读写速度快,磁盘空间利用率高。
- RAID1:镜像,有容错,写入速度较慢,磁盘空间利用率低。
- RAID5:至少需要三块磁盘,有容错,读写速度较快。
- RAID6:至少需要四块磁盘,容错能力较强,读写速度较快。
文件系统修复与检测
- ext4:使用
fsck
进行修复检测,dumpe2fs
查看超级块信息。- XFS:使用
xfs_repair
进行修复,xfs_info
查看文件系统信息。
总结
本笔记详细总结了VFS的作用、主要对象类型、文件系统的读取流程、不同文件系统的特性、链接类型、逻辑卷管理以及磁盘阵列的基本概念。同时,还介绍了如何查看文件系统和inode的信息,以及文件系统的修复与检测方法。这些知识点对于深入理解Linux的文件系统架构和管理至关重要。