文件系统:管理文件,实现文件的按名称存取,通常由位于内核的一个模块来实现(仅内核有此权限),程序员通过系统调用来与内核交互(open(),close()…)
一块磁盘上的0磁道,0扇区为MBR,不属于任何文件系统
MBR:512bytes
MBR:446bytes(bootloader)
64bytes(分区表,每16bytes一个分区,因此最多4个主分区)
2bytes(标识此硬盘是否为可引导的,可引导的值为5A)
分区的第一个存储空间为引导块(0—1023bytes)(boot block)
Inode(文件索引节点)里面的信息为:
文件大小、权限、属组、属主、时间戳(mtime、atime、ctime),这些称为元数据。
每一个文件都有自己的inode。
Inode都有自己的编号,称为inode号
Inode有存储数据块编号的三级索引数据块
目录就是一个文件,文件内容为:
目录下的文件名,及其对应的inode号;目录只负责自己目录下的文件以及inode号的保存,子目录下的文件及inode号由子目录来保存。
每一个文件系统一般都会分为几个block group,每个中都存放着各自的block和inode bitmap,一般第一个block group上有一个superblock,另外几个block 上也可能存有备份的superblock。
Superblock内容:总inode数,总block数,空闲的block数;空闲的inode数;预留给管理员的block数;以及这些block的编号和所在block group。
查看超级块命令示例:
Tune2fs -l /dev/sda3
Dumpe2fs /dev/sda3|less显示所有blockgroup的信息–h 显示超级块的信息
Du命令查看文件大小 df命令查看磁盘剩余使用空间
再看文件的:
删除:1)找到文件对应的inode,把inode对应bitmap改为0,将inode中数据清除或不清除,以后使用inode时覆盖原数据即可
2)找到文件对应的block,把block对应bitmap改为0,不清除block中数据,以后使用block时覆盖原数据即可
复制:找到原文件的block及inode,在目标目录下创建inode数据及block,将原block数据复制到目标block上去
移动:1)原文件和目的文件在同一分区上,inode不变,改变目录的inode与文件的对应关系,将原目录上的对应关系条目删除,在目标目录上加一条对应关系
2)原文件和目的文件不在同一分区上,因为不同分区inode列表不同:在目标目录下创建inode数据及block,将原block数据复制到目标block上去,再清除原inode以及block信息
链接文件:
硬链接:定义:同一分区下,任意几个文件(大于一个文件)指向的同一inode号,说白了就是几个指向同一inode的不同路径,删除其中一个路径不影响其他路径,除非删除最后一个路径;ls –l 第二列显示出的数字为文件硬链接的次数,若显示为1,删除此文件将再无其他路径访问此文件指向的inode及其block中的数据。此inode及其block的bitmap值将被标记为0,供以后创建文件使用,硬链接不可以跨分区,因为每个分区的inode表是独立的。
硬链接特性:1)不可以跨分区,因为每个分区的inode表是独立的。所有文件指向同一inode,因此为同一文件。
2)不能对目录创建硬链接,因为这样会导致循环引用,.号目录是个例外。
3)删除其中一个路径不影响其他路径, ls –l第二列显示出的数字为文件硬链接的次数,ls -i显示文件相对应的inode号
4)所有文件指向同一inode,因此为同一文件。修改一个文件,影响所有文件。
创建硬链接示例:ln inittab hello
软链接(符号链接symbolic link):ls -l文件类型显示为l的;bash测试条件是-L 或 -h
创建软链接示例:ln -s inittab hello#-v选项显示创建过程
软链接特性:
1) 删除源文件,符号链接文件将不可用
2) 可以跨分区,可以指向目录。
3) 源文件,符号链接文件指向的是不同的inode,符号链接文件的数据只是目标文件的绝对路径(字符个数(byte))而已,因此符号链接文件一般都很小。
Ext文件系统的扩展属性:
查看 lsattr
修改 chattr [+|-|=][i|a|u|A]