文件系统:管理文件,实现文件的按名存取:
rootfs:根文件系统
叶子节点:文件(最后一级,以无法存储其他文件)
文件系统由内核提供,数据存储在硬盘,而程序不能直接和硬件沟通,通过内核提供的接口(系统调用)向内核发起请求
由内核来完成相关工作,但系统调用过于底层,又将多个系统调用封装成更高级的接口提供上层应用使用,这些封装
后的系统调用叫库(API),通过库来使用某些功能,如读取 写入 执行 删除等调用。
MBR:共计512字节 (硬盘的0扇区) 引导整个磁盘上的操作系统
446字节:bootloader
64字节:分区表
2字节:磁盘是否可引导
每一个分区前两个扇区(1024字节)Boot block:引导块:用于引导该分区上的操作系统
文件系统将分区化为3部分,Boot block 索引 存储区,又将存储区划分成多个块,1K 2K 4K,文件系统会给
这些块进行编号(block号),根据索引里面的对应关系来确定数据存储在哪些块当中。
索引信息(元数据):文件的大小 权限 属主 属组 时间戳 数据对应的块的标号(磁盘块指针实现)
磁盘块指针:如果数据过大,占用块就会过多,而数据的块标号信息存储在inode,导致indoe也会过于庞大,为了解决这个问题,利用层次化的结构:
如果是小文件,磁盘块指针会直接指向数据块(直接指针),如果文件过大,使用二级指针,指向一个区域,区域内表明,这是一个区域,这个区域包含着一部分磁盘块标号信息,这样就节省了indoe空间
每个文件都会有一个条目,每个条目称为:索引节点
整个空间叫索引,每一个条目叫索引节点:inode:文件的元数据:和数据内容没有关系
为了方便查找,每个inode都有一个编号:inode编号
目录:文件的路径映射:目录也是文件,也有indoe的条目,数据也存储在硬盘块上
目录磁盘块数据:该目录下的文件的indoe编号 对应的文件名 文件的类型
目录只存放着该目录下的一级子目录信息,不包含子目录里面的文件信息,子目录里的文件信息存放在子目录.依次类推
如/var下面有log目录,var只需要记录log的信息,而log下面的文件信息,有log记录)
如:文件系统如何找到/var/log/messages这个文件
1.首先根据根的inode编号(根会自引用),找到根的inode,通过inode找到对应的磁盘块,这个磁盘块中包含var这个文件的的inode编号和对应的文件名及类型,
2.通过var的inode的编号,来找到对应indoe,通过var的inode的信息找到var这个文件所在的磁盘块,通过磁盘块的数据找到log目录的inode编号和对应的文件名及文件类型
3.通过log的inode编号,找到log的indoe来确定磁盘块,通过磁盘块中存储的memssages这个文件的inode的编号和对应文件名,确定是哪个磁盘块,最后读取到了messages的内容
创建文件
1.找一个空闲的iode,空闲的磁盘块
inode位图: 每个inode对应一个位,位为0为空闲,1为占用
块inode位图:每个块对应一个位,为0空闲,为1占用
block group:块组 (组内块数量相等)
将过多的块划分成不同的组,找空闲的inode或block时,可以扫描某一组的位图,根据位图确定空闲,一个组不够用时,可以跨组引用
每个组是自我管理
磁盘的第2个1024字节称为:超级块(块组0的超级块)
超级块:存储着磁盘有多少个组,每个组从哪个块开始到哪个块结束
GDT:块组描述表:块位图在哪存放 inode图存放在哪 inode表存放位置 空闲块 空闲inode
每个块组都有自己的:inode表 块位图 inode位图 GDT
tune2fs - l :查看超级块
f
dumpe2fs :输出ext 文件系统信息
-h :显示超级块信息
du 目录 :查看目录的文件大小及总大小
-s :只查看目录大小
-h:单位换算,显示比较直观的方式
df :显示磁盘相关信息
-l: 磁盘信息 总容量块 已用块 空闲块 使用比例 挂载点
-h:人性化显示
-P:posix兼容的风格显示
-i:indoe相关的信息
删除
1.把文件的inode数据清.把inode归类至未使用
2.默认不会清除块数据,仅会把磁盘块归类为未使用,将来如果使用,直接覆盖
复制
1.找空闲块将数据复制进去,并建立新的inode
移动(相同分区)
1.在新的路径建立一个条目,条目指向原有inode
2.删除原路径的对应条目,文件的inode和数据库不动
移动(非一个分区)
1.创建一个新文件,删除老文件
链接文件 ln -s 原文件 链接文件
软连接(符号链接)
ls -l 文件类型为l的文件 链接文件
bash中测试文件是否为软连接文件
1.能跨分区,可以对所有文件创建,包括目录
2.删除原文件,链接文件将无法使用
3.所有链接文件,与原文件指向不同的inode,并非同一个文件
硬链接 ln 原文件 链接文件
1.两个不同的路径指向同一个inode,使用同一个磁盘块
2.删除某个路径,不会情况文件的inode,知道文件上的最后一个路径删除
3.硬连接不能跨分区,不能对目录建立硬连接
ls -l 第2列显示的数字就是文件被硬连接的次数
ls -i 显示文件的inode
4.所有连接指向同一个inode,因此他们是同一个文件
ext系统文件系统:扩展属性
lsattr 显示扩展属性
chattr 修改扩展属性
-a:只允许追加内容
-i:对所有人变成只读文件,包括root
压缩 解压缩 归档
压缩:tar -czvf test.tar.gz /test
-c:创建压缩
-z:使用gzip压缩
zip格式压缩 zip test.zip test
zip格式解压缩 uzip test.zip
解压缩:tar -xvf test.tar.gz
-C :指定解压缩路径
dd命令
dd if=原文件 of=目标文件
Linux基础-----文件系统