1. 介绍

1. 1 硬盘结构

硬盘逻辑结构

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

硬盘接口

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

1.2 文件系统

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。

Linux常见文件系统

8. 文件管理 - 图38. 文件管理 - 图4

2. 常用的硬盘管理命令

df

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

du

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

du 与 df 的区别:du 是用于统计文件大小的,统计的文件大小是准确的;df 是用于统计空间大小 的,统计的剩余空是准确的 lsof | grep deleted”查看被删除的文件,然后一个进程一个进程的手工 kill 也是可以的

fsck(文件系统修复)

[root@localhost ~]# fsck –y /dev/sdb1
#自动修复

dumpe2fs(显示磁盘状态)

[root@localhost ~]# dumpe2fs /dev/sda3
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none> 卷标名
Last mounted on: / 挂载点
Filesystem UUID: c2ca6f57-b15c-43ea-bca0-f239083d8bd2 UUID
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype
needs_recovery extent flex_bg spars
e_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl 挂载参数
Filesystem state: clean 文件系统状态,正常
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 1826816 inode 总数
Block count: 7300864 块总素
Reserved block count: 365043
Free blocks: 6634637
Free inodes: 1753533
First block: 0
Block size: 4096 块大小
Fragment size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Mon Nov 12 22:30:41 2012
Last mount time: Tue Apr 9 23:53:29 2013
Last write time: Mon Nov 12 22:45:55 2012
Mount count: 3
Maximum mount count: -1
Last checked: Mon Nov 12 22:30:41 2012
Check interval: 0 (<none>)
Lifetime writes: 3199 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256 inode 的大小

sata(查看文件的详细时间)

例如
[root@localhost ~]# stat test.sh
File: `test.sh'
#文件名
Size: 427 Blocks: 8 IO Block: 4096 regular file
#文件大小 占用块 系统分区块大小
Device: fd00h/64768d Inode: 23724038 Links: 1
#存放文件的设备 inode 号 硬链接数
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
权限 属主 属组
Access: 2011-10-29 22:27:45.000000000 +0800
Modify: 2011-09-14 18:02:00.000000000 +0800
Change: 2011-10-25 22:21:44.000000000 +0800
access 访问时间
modify 数据修改时间
change 状态修改时间

file(判断文件类型)

file 文件名 判断文件类型
type 命令名 判断命令类型