- 文件系统概念
1.1 文件系统
- 文件组织:面向系统,它根据存储设备特点,把文件信息按一定的组织结构存储到外存空间;面向用户,它提供用户组织文件信息的结构方式
- 文件存取:实现内存和外存的数据交换
- 文件使用:对用户提供文件操作统一接口
- 文件控制:实现对用户访问权限的控制
1.2 日志文件系统
文件系统写操作首先对日志记录文件进行操作,若整个文件系统因某种原因(如系统掉电)而中断,则在下次系统启动时就会读日志记录文件内容,恢复到没有完成的写操作,这个过程一般需要两三分钟。
1.3 VFS
VFS: Virtual Filesystem Switch
功能:屏蔽文件系统差异,为处理各文件系统提供统一接口
1.4 文件存储
- 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector),每个扇区512字节
- 操作系统读取硬盘的时候,不会一个个扇区地读取,而是一次性连续读取多个扇区,即一次性读取一个块"block"。这种由多个扇区组成的"block",是文件存取的最小单位。
- 文件数据储存在"block"中,还必须找到一个地方储存文件元信息,比如文件创建者、文件创建日期、文件大小等。这种储存文件元信息的区域就叫做inode,“索引节点”。
- 硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
获取文件系统信息:dumpe2fs -h /dev/sda1
1.4.1 文件系统数据存储:
boot block: 为计算机开机服务
superblock: 超级块,记录filesystem整体信息,包含inode/block总量,剩余量,文件系统格式等
inode: 记录文件的属性,一个文件占用一个inode,同时记录文件数据所在的block号
block: 记录文件的实际内容,若文件太大,会占用多个block
1.4.2 inode table
rwx
owner/group
size
ctime/atime/mtime
suid/guid/sbit
link number
pointer(指向block的位置)
查看文件的inode信息:stat a.txt
inode:
- 大小:128bytes/256bytes
2)格式化时,每1KB或2KB就设置一个inode - 每个文件一个inode
1GB硬盘,每1KB设置一个inode,inode table的大小为128bytes/inode * 1inode * 1000=128M
1.4.3 data block
ext2支持的block大小有1K, 2K, 4K三种
格式化时,block大小就固定了,且每个block都有编号,以方便inode记录
block大小对最大文件的限制:1K(16G), 2K(256G), 4K(2T)
block size 1KB 2KB 4KB
max size of single file 16GB 256GB 2TB
max size of filesystem 2TB 8TB 16TB
block的限制
- block数量和大小,在格式化后不能再改变
- 每个block只能存储一个文件的数据。若文件大于block,则占用多个block;若文件小于block,则block中剩余容量将浪费
1.4.4 superblock(1024bytes):
- block和inode的总量
- 已使用和未使用的inode/block数量
- block和inode的大小(block 1,2,4K, inode 128bytes)
- filesystem的挂载时间,最近一次数据写入时间,最近一次磁检(fsck)时间
- valid bit (0: 已挂载 1: 未挂载)
1.4.5 文件和目录
目录:一个inode + 至少一个block(存储文件名和inode映射表)
文件: 一个inode + 至少一个block(存储文件信息)
100KB文件,至少需要100KB/4KB=25个block
1.4.6 软连接和硬连接
Hard Link:
- 同一个inode,对应多个文件名,称为硬链接
- 不能跨filesystem
- 不能link目录
Symbolic Link:
- 是一个独立的文件,读取文件时,自动指向其链接的文件
- 占用新的inode和block
新建目录,link数量为2,上级目录的link数增加1
软链接和硬链接的区别:
硬连接指向的是节点(inode), 而软连接指向的是路径(path)
- 常见文件系统
2.1 ext2:Linux second extended file system, ext2fs
- 文件名长度最大255 bytes,完整文件名(带路径)长度最大4096 bytes
- 单文件最大2TB
2.2 ext3: 日志文件系统
在ext2基础上增加记录元数据的日志功能。提供三种日志模式
- 日志(Journal): 文件系统所有数据和元数据的改变,都记录日志,最安全但也最慢。
- 预定(Ordered): 只有对文件系统元数据改变才记录日志,ext3默认日志模式
- 写回(Writeback): 只记录元数据的变化。系统关闭时,文件大小或目录变化,不能及时同步更新元数据,导致存储数据不一致。
2.3 reiserfs
使用特殊的、优化过的平衡树来组织文件系统数据
文件系统:
ext2/ext3: Linux适用的文件系统。ext3比ext2多了日志记录
physical volume(LVM): 用来弹性调整文件系统容量的一种机制,可以动态控制文件系统大小而不改变原有文件数据
software RAID: 磁盘阵列
swap: 虚拟内存,大小是物理内存的1.5~2倍,物理内存达到4G,可以不使用
vfat: 同时被Linux和Windows系统支持的文件系统
- 文件类型
3.1 常规文件(regular file)
纯文本(ASCII)
二进制文件(binary)
数据文件(data),例如/var/log/wtmp 可使用last读出
3.2 目录 [d]
3.3 连接(link) [l]
3.4 设备(device)
块设备(block),可随机读写 ls -l /dev/sda [b]
字符设备(character),串口设备,一次性读取,鼠标键盘 [c]
3.5 数据接口文件(sockets),网络上数据传输使用。 /var/run [s]
3.6 数据传输文件(FIFO,pipe),[p]
- FSH, Filesystem Hierarchy Standard
/bin 系统命令
/boot 内核及启动文件(vmlinuz, grub)
/usr unix software resource
/usr/bin 一般命令
/dev 设备文件
/etc 配置文件
/etc/init.d/ 服务启动文件,系统开机时执行的脚本
/etc/xinetd.d/ super daemon管理的各项服务的配置文件目录
/opt 第三方软件
/sbin 管理员命令
/lost+found 在ext2/ext3文件系统存在,当系统发生错误时,将一些遗失片段存入该目录
/proc 虚拟文件系统,该目录下的数据都在内存中,不占硬盘空间
/sys 虚拟文件系统
特殊目录标示:
. 当前目录
… 上级目录
-
前一个工作目录
~ 家目录
~account 用户account的家目录