优秀的编程知识分享平台

网站首页 > 技术文章 正文

Linux文件系统

nanyue 2025-01-14 16:12:07 技术文章 1 ℃

1、硬盘结构

1.1、硬盘的逻辑结构

每个扇区的大小是固定的,为512Byte。扇区也是磁盘的最小存贮单位。

硬盘的大小是使用“磁头数x柱面数x扇区数x每个扇区的大小”这样的公式来计算的。其中磁头数(Heads)表示硬盘总共有几个磁头,也可以理解成为硬盘有几个盘面,然后乘以二:柱面(Cylinders)表示硬盘每一面盘片有几条磁道;扇区数(Sectors)表示每条磁道上有几个扇区;每个扇区的大小一般是 512Byte。

1.2、硬盘接口

  • IDE 硬盘接口(Integrated Drive Electronics,并口,即电子集成驱动器)也称作“ATA 硬盘或“PATA 硬盘”,是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/S(此速度为理论平均值),IDE硬盘接口
  • SATA 接口(Serial ATA,串口)是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(此速度为理论平均值)
  • SCSI接口(Small Computer System Interface,小型计算机系统接口)广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU占用率低及支持热插拔等优点,理论传输速度达到320MB/s

2、文件系统

2.1、Linux文件系统特性

  • super block(超级块):记录整个文件系统的信息,包括 block 与 inode 的总量,已经使用的 inode 和 block 的数量,未使用的 inode 和 block 的数量,block 与 inode 的大小,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间等。
  • date block(数据块,也称作 block):用来实际保存数据的(柜子的隔断),block 的大小(1KB、2KB 或 4KB)和数量在格式化后就已经决定,不能改变,除非重新格式化(制作柜子的时候,隔断大小就已经决定,不能更改,除非重新制作柜子)。每个blcok 只能保存一个文件的数据,要是文件数据小于一个 block 块,那么这个 block 的剩余空间不能被其他文件是要:要是文件数据大于一个block块,则占用多个block 块。Windows 中磁盘碎片整理工具的原理就是把一个文件占用的多个 block 块尽量整理到一起,这样可以加快读写速度。
  • inode(i 节点,柜子门上的标签):用来记录文件的权限(r、w、x),文件的所有者和属组,文件的大小,文件的状态改变时间(ctime),文件的最近一次读取时间(atime),文件的最近一次修改时间(mtime),文件的数据真正保存的 block 编号。每个文件需要占用一个 inode.

2.2、Linux常见的文件系统

ext4:是许多Linux发行版的默认文件系统,提供了良好的性能和可靠性。它支持大文件、大分区、文件压缩、在线碎片整理等特性。

XFS:由SGI开发,用于高性能的写入密集型应用,如数据库和文件服务器。XFS支持非常大的文件和卷,以及高并发操作。

NTFS:微软Windows的默认文件系统。Linux可以通过第三方驱动如ntfs-3g来读取和写入NTFS文件系统。

FAT32:一种较旧的文件系统,广泛用于USB闪存驱动器和移动存储设备。Linux可以原生支持FAT32文件系统的读取和写入。

exFAT:专为闪存存储设计的文件系统,支持大于4GB的文件和大容量存储设备。Linux对exFAT的支持正在逐渐改善。

Btrfs:一种现代化的文件系统,支持高级特性,如数据完整性校验、快照、文件系统级压缩和写入时复制(COW)。

ZFS:由Sun Microsystems开发,以其数据完整性、可扩展性和性能而闻名。ZFS是一个复杂的文件系统,提供了类似RAID的数据保护特性。

ReiserFS:一种性能优异的文件系统,特别是在小文件写入和大数量文件系统操作方面表现出色。

JFS:IBM开发的一种文件系统,用于大型数据库和文件服务器,支持文件系统级别的压缩。

Swap:虽然不是传统意义上的文件系统,但swap空间在Linux中用于虚拟内存,允许系统在物理内存不足时使用磁盘空间作为临时存储。

tmpfs:基于内存的临时文件系统,通常用于存储临时文件,如/dev/shm。

F2FS:Flash-Friendly File System,专为闪存存储(如SSD)设计,优化了闪存的读写特性。

UDF:通用磁盘格式,常用于光学介质和DVD视频。

ISO 9660:光盘的标准化文件系统,广泛用于数据CD和DVD。

OCFS2:Oracle Cluster File System的第二代,用于数据库和高可用性系统。

3、常用硬盘命令

3.1、df命令

df命令用于统计空间使用大小,统计剩余空间是准确的

 df -hT
 #-a显示特殊文件系统,这些文件系统几乎都是保存在内存中的。如/proc,因为是挂载在内存中,所以占用量都是0
 #-h 单位不再只用KB,而是换算成习惯单位
 #-T 多出了文件系统类型一列

3.2、du命令

du命令用于统计文件大小,统计的文件大小是准确的

 du -sh /opt
 选项:
 -a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
 -h 使用习惯单位显示磁盘占用量,如KB,MB 或 GB 等
 -s 统计总占用量,而不列出子目录和子文件的占用量

lsof | grep deleted 查看被删除的文件

lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具。 它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合,它可以用来列出被各种进程打开的文件信息,记住:linux 下 “一切皆文件”,包括但不限于 pipes, sockets, directories, devices, 等等。 因此,使用 lsof,你可以获取任何被打开文件的各种信息,只需输入 lsof 就可以生成大量的信息,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

3.3、fsck文件系统修复命令

 fsck -y /dev/sdb1

3.4、查看文件的详细信息

 [root@sun161 test]# stat aa.txt
最近发表
标签列表