看鸟叔!!!
磁盘与文件管理系统
1、认识文件系统
实体磁盘的命名:/dev/sd[a-p][1-128] 分区槽的命名,例如第一颗磁盘:/dev/sda[1-128]
虚拟磁盘的命名:/dev/vd[a-p][1-128]
软件磁盘列阵:/dev/md[a-p]
使用LVM时:/dev/VGNAME/LVNAME
2、文件系统特性
磁盘分区以后需要格式化以后才能使用此文件系统,因为每种操作系统所设定的文件属性/权限不相同,为了存放数据,将分区操格式化为操作系统可以使用的“文件格式系统”。
目前的格式化不再说成针对partition来格式化,通常可称呼一个可被挂载的数据为一个文件系统而不是一个分区槽。
文件系统的运作:(与操作系统的文件数据有关,linux中除了文件实际内容外,还有文件权限(rwx)、文件属性(拥有者、群组、时间参数)。文件系统通常会两部分的数据分别存放在不同的区块,权限与属性放置到indoe(记录文件属性,一个文件占用一个inode,同时记录此文件数据所在的block号码)中,实际数据放到 data block 区块中,和超级区块(superblock)记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量,文件系统的格式、相关信息。(索引式文件系统)
FAT文件系统格式:没有inode,类似于链式。
【碎片整理】 文件写入的block过于离散,文件读取效能变差,碎片整理后将同一个文件所属的blocks汇整在一起。FAT需要经常整理,Ext2/Ext3不需要(索引式)。
3、Linux的EXT2系统
inode与block固定后不再变动。
数量大时,区分区块群组(block group),每个区块群组都有独立的inode/block/superblock系统。
Boot Sector(启动扇区) ———> block group1 | block group2 | block group3 | …
/
/ \ (每个block group包括下面一行)
Superblock,档案系统临时描述,区块对应表,inode对应表,inode table,data block
启动扇区:安装开机管理程序
data block(资料区块):放置文件内容数据,(所支持的block大小:1、2、4K),每个block都有编号,每个block除非重新格式化外,大小和数量不能够改变,每个block只能放置一个文件上的数据,大文件会占用多个block数量。
inode table(inode表格):文件的存取模式,拥有者和群组,容量,建立的状态和改变的时间,最近读取、修改时间,定义文件特性的flag,真正内容的指向。每个inode大小固定位128bytes(ext4 xfs可设置到256),每个文件占用一个(文件系统能够建立的文件数量与inode数量有关),系统读取文件时先找到inode,检查权限,复合以后才开始实际读取block内容。
Super block(超级区块):记录整个filesystem,没有Superblock就没有此filesystem。记录block、inode的总量,未使用和已使用的block、inode的数量,block、inode的大小,filesystem的挂在时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间,一个valid bit值,0为已被挂载,1相反。使用dumper2fs指令查看其相关信息
Filesystem Description(文件系统描述说明):描述每个block group各部分和block开始与结束的号码
block bitmap(区块对照表):记录block是否使用
inode bitmap(inode对照表):记录inode是否使用
使用dumper2fs指令查看Super block信息指令:
dumper2fs -h(只列出super的信息) 装置文件名
blkid(查询系统有被格式化的装置)
4、与目录树的关系
目录:新建目录,文件系统会分配一个inode与至少一块block。实际观察目录里文件占用的inode号码时,使用
ls -i
文件:
目录树读取:
inode本身不记录文件名,文件名的记录实在目录的block中。(新增、删除、更名文件名与目录的w权限有关)
系统透过挂载的信息找到挂载点的inode号码,得到根目录inode内容,根据inode读取block内的文件名数据,在一层一层往下读取,例如:
ll -di / /etc /etc/passwd
则读取步骤:
1> / 的 inode
2> / 的 block
3> /etc 的inode
4> /etc 的block
5> /etc/passwd 的inode
6> /etc/passwd 的block
fs的大小与磁盘读取效能:
5、EXT2、EXT3、EXT4 文件的存取与日志式文件系统的功能
新增文件过程:
1> 确定用户是否对此目录有w x权限
2> 根据inode bitmap找到没有使用的inode号码,将新文件的权限和属性写入
3> 根据block bitmap找到没有使用的block号码,写入实际数据,更新inode的指向数据
4> 同步更新inode bitmap和block bitmap的内容,并更新superblock
【中介数据】 inode block称为数据存放区域,其它的区块别成为metadata(中介资料),因为那些数据是经常变动的,每次新增、移除、编辑是都可能会影响到这三个部分的数据,因刺被称为中介数据。
数据不一致状态:
只写入了inode和block的数据,superblock的数据没有更新成功,解决:系统在重新启动的时候,会由superblock中的valid bit(是否挂载)与fs state (clean与否)等状态是否进行数据一致性的检查
日志式文件系统:
在fs中划分一个区块,专门记录写入或修订文件是的步骤
1、系统写入文件之前,在日志记录区块记录某个文件准备要写入的信息
2、实际写入:写入权限和数据,更新metadata
3、完成更新后,日至中完成该文件记录
6、文件系统的运作
【异步处理】系统加载文件到内存,若此文件没有更动郭,在内存区段的数据被设定为clean;若内存中的数据被更改了,此时内存中的数据被设定为dirty(脏数据),则此时所有的动作都在内存中执行,没有写入到磁盘。系统会不定时将内存中脏数据写回磁盘。
系统会将常用的文件数据放在主存储器的缓冲区中,加速文件系统的读写,看可以手动使用sync强迫内存中脏数据写回磁盘,关机指令主动呼叫sync,非正常关机重启时会花时间进行磁盘检验,甚至导致文件系统的损毁(非磁盘损毁)
7、挂载点意义(mount point)
【挂载】将文件系统与目录树结合的动作称为挂载,挂载了以后fs才可以使用。挂载点一定是目录,该目录为进入该文件系统的入口。
同一个fs的某个inode只会对应到一个文件内容(一个文件占用一个inode),可以通过inode号码来确认不同文件名是否为相同的文件 ls -ild / /. /…(根目录下 . … 是一个东西)
8、其他linux支持的文件系统与VFS
传统文件系统:ext2 minix MS-DOS FAT(用vfat模块) iso9660(光盘)
日志式文件系统:ext3 ext4 ReiserFS Windows’NTFS IBM’sJFS SGI’s XFS ZFS
网络文件系统:NFS SMBFS
查看linux支持的文件系统: ls -l /lib/moudles/$(uname -r)/kernal/fs
系统已加载到内存中支持的文件系统:cat /proc/filesystem
Linux VFS(Virtual Filesystem Switch)
9、XFS 文件系统简介
ext家族支持度广,格式化较慢
XFS 文件系统配置:资料区、活动登录区、实时运作区
资料区(data section):类似于ext家族,每个存储区群组(allocation groups,AG)包含superblock、剩余空间的管理机制、inode的分配与追踪,inode(512b-64K)与block(256b-2M)动态配置产生,格式化快!
活动登录区(log section):记录文件系统的变化(类似于日志区),fs因为某些缘故损毁,检验登录区,查看系统崩溃以前fs正在进行的活动,由此恢复
实时运作区(realtime section):创建文件时,在区段找到一个或多个extent区块,将文件放置区块内,分配完毕后写入到data section的inode block中去。extent大小在格式化的时候指定(4K-1G)
XFS 文件系统的描述数据观察 :xfs_info 挂载点|装置文件名
df -T /boot 找到/boot挂载点下superblock记录
xfs_info /dev/vda2