Linux(13)——Ext系列⽂件系统
磁盘物理结构
磁盘由多个盘片组成,每个盘片分为多个同心圆的磁道,磁道又被划分为扇区。盘片两面有磁头进行读写操作。现代磁盘通常采用扇区大小512字节或4KB,物理结构影响数据存取效率。
CHS与LBA地址
**CHS(柱面-磁头-扇区)**是传统磁盘寻址方式,通过三维坐标定位数据:
- 柱面(Cylinder):所有盘片的同一磁道组成的柱面
- 磁头(Head):选择具体盘面
- 扇区(Sector):指定具体扇区位置
**LBA(逻辑块地址)**是现代磁盘采用的线性寻址方式,将整个磁盘空间按顺序编号。转换公式:
LBA = (C × H + H) × S + (S - 1)
操作系统通常使用LBA,磁盘控制器自动转换为CHS。
Ext系列文件系统原理
Ext(Extended File System)是Linux主流文件系统,关键结构:
- 超级块(Superblock):记录文件系统整体信息(如inode总数、块大小)
- inode表:存储文件元数据(权限、大小、数据块指针)
- 数据块:实际存储文件内容
Ext4改进特性:
- 支持更大的文件和分区(1EB文件,16TB分区)
- 引入Extent取代块映射,提升大文件性能
- 日志功能减少fsck时间
// inode结构示例(简化)
struct ext4_inode {__le16 i_mode; // 文件类型和权限__le64 i_size; // 文件大小__le32 i_block[15];// 数据块指针数组
};
分区与格式化
分区将物理磁盘划分为逻辑单元,常见工具:
fdisk
:MBR分区表(最大2TB)gdisk
:GPT分区表(支持更大容量)
格式化创建文件系统:
mkfs.ext4 /dev/sda1 # 创建ext4文件系统
参数可指定块大小(如-b 4096
)、inode数量等。
路径解析与挂载
路径解析流程:
- 从根目录inode(通常为2)开始查找
- 逐级匹配目录项(dentry)中的文件名与inode编号
- 最终定位目标文件inode
挂载将文件系统接入目录树:
mount /dev/sdb1 /mnt/data # 将分区挂载到/mnt/data
内核维护挂载点信息,通过/proc/mounts
可查看。
软硬连接
硬连接:
- 直接指向文件inode,与原始文件等价
- 不能跨文件系统,目录不可用
ln source.txt hardlink
创建
软连接(符号链接):
- 独立文件存储目标路径
- 可跨文件系统,指向目录
ln -s source.txt symlink
创建
关键区别:
特性 | 硬连接 | 软连接 |
---|---|---|
inode | 相同 | 不同 |
跨文件系统 | 不可 | 可 |
原始文件删除 | 仍有效 | 失效 |
通过ls -i
可查看inode编号验证连接类型。