EXT2文件系统:
文件系统特性:
格式化(format):每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能够你用的文件系统格式
通常我们称呼一个可被挂载的数据为一个文件系统而不是一个分区(一个分区多个文件系统,多个分区一个文件系统)
每个inode和block都有编号,而每个文件占用一个inode,inode内则有文件数据放置的block号码。这种数据访问的方法称为索引式文件系统。
碎片整理:文件写入到block太过于分散了,此时文件读取的性能将会变得很差。通过碎片整理将同一文件所属的block汇合在一起,这样数据的读取会比较容易。
文件系统一开始就将inode和block规划好了,除非重新格式化(或者利用resize2fs等命令更改文件系统大小),否则inode与block固定后就不再变动。
Ext2文件系统在格式化的时候基本上是区分多个块组(block group)的,每个块组都有独立的inode/block/superblock系统。
整体规划中,文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装引导装载程序。
调出目前挂载的设备:df
查看文件系统信息:dumpe2fs 【-bh】 设备文件名
与目录树的关系
新建一个目录时,ext2会分配一个inode与至少一块block给该目录。
inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;
block记录在这个目录下的文件名与该文件名占用的inode号码数据
查看目录内文件所占用的inode号码:ls –i
当我们新建一个文件时,ext2会分配一个inode与相对于该文件大小的block数量给该文件。
目录树的读取:
系统通过挂载的信息找到挂载点的inode号码(通常一个文件系统的最顶层inode号码会由2号开始),此时就能够得到根目录的inode内容,并依据该inode读取根目录的block内的文件名数据,再一层一层地往下读到正确的文件名
新建一个文件或者目录的步骤:
inode table与data block称为数据存放区域,其他super block、block bitmap与inode bitmap等区段为meta data(中间数据),数据是经常变动的,每次添加、删除、编辑时都可能会影响到这三个部分的数据。
数据的不一致(Inconsistent)状态
meta data的内容与实际数据存放区产生不一致的情况。Ext2文件系统中,通过Super block当中记录的valid bit(是否有挂载)与文件系统的state(clean与否)等状态来判断是否强制进行数据一致性的检查。若有需要检查时则以e2fsck这支程序来进行的
日志文件系统(Journaling file system)
在这样的程序当中,万一数据的记录过程当中发生了问题,那么我们的系统只要去检查日志记录块就可以知道哪个文件发生了问题,针对该问题做一致性检查即可。
linux文件系统的操作
异步处理(asynchronously):当系统知道一个文件到内存后,如果该文件没有改动过,则在内存区段的文件数据会被设置为(clean)的。但如果内存中的文件数据被更改过了,此时该内存中的数据会被设置为Dirty。此时所有的操作还在内存中执行,并没有写入到磁盘中。系统会不定时地将内存中设置为Dirty的数据写回磁盘,以保持磁盘与内存数据的一致性。
文件系统与内存:
Linux VFS(Virtual Filesystem Switch):Linux内核通过VFS管理文件系统,用户并不需要知道么个分区上头的文件系统是什么。
df -hi:以人们较易阅读的GB、MB、KB等格式自行显示;不用硬盘容量,而以inode的数量来显示
读取的范围是在super block内的信息,所以命令显示结果的速度非常快。
du -s:列出总量而已,而不列出每个个别的目录占用容量
直接到文件系统内去查找所有的文件数据,默认情况下大小的输出是以KB为单位的。
在某个目录下面新建一条文件名连接到某inode号码关联的记录。
安全:如果将任何一个“文件名”删除,其实inode与block还是存在的。此时可以通过另一个“文件名”来读取到正确的文件数据。此外,不论使用哪个“文件名”来编辑,最终的结果都会写入到相同的inode和block中,因此均能进行数据的修改。
限制:不能跨文件系统,不能连接到目录。
创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。当源文件被删除之后,symbolic link的文件会“开不了”
内容:目标文件的“文件名”
symbolic link与Windows的快捷方式可以划上等号,有symbolic link所创建的文件为一个独立的新的文件,所以会占用inode与block
-l:输出后面接的设备所有分区内容
df:找出可用磁盘文件名,再使用fdisk查阅
强制更新内核分区表信息:partprobe
mkfs 【-t 文件系统格式】 设备文件名
fsck 【-t 文件系统】 【-ACay】 设备名称
-A:依据/etc/fastab的内容,将需要的设备扫描一次
-a(y):自动修复检查时遇到的有问题的扇区
-C:检验的过程当中用一个直方图来显示目前的进度
通常只有身为root且文件系统有问题的时候才使用这个命令,否则在正常情况下使用此命令,可能对系统造成危害。
执行fsck时,被检查的分区务必不可挂载到系统上!
mount -a:依据配置文件/etc/fstab的数据将所有未挂载的磁盘都挂上来
mount -l:显示目前挂载的信息(加上label列)
b:外部存储设备文件
c:外部输入设备文件
p:FIFO文件
tune2fs
mount –o loop 文件地址 挂载地址
帮助解决分区不良的情况。