【操作系统】文件系统

文件系统存在于硬盘之上,所以,先介绍硬盘

硬盘

1 - 基本组成

在这里插入图片描述

1 - 一个硬盘由多张盘片叠成,不同盘片有编号
2 - 磁道 - 每张盘片上的存储颗粒成环形一圈圈排布,每一圈称为 磁道
3 - 扇区:每条磁道上都有一圈存储颗粒,每512字节作为一个扇区,扇区是硬盘上存储的最小物理单位
	一个扇区就是一个块  BLOCK
4 - 簇:N个扇区可以组成 簇/块 ,其中 N 取决于不同的文件系统或是文件系统的配置,
	簇/块 是此文件系统中的最小存储单位
5 - 柱面:所有盘面上的同一磁道构成一圆柱面,称为柱面
	柱面 是系统分区的最小单位

2 - 存储机制

在这里插入图片描述

1 - 磁头读写文件的时候,首先是分区读写的,有inode编号找到对应的磁道和扇区,然后一个柱面一个柱面的进行读写;
2 - 有硬盘不意味着Linux可以立刻把它用来存储,还需要结合文件系统

Linux文件系统

1 - 常见文件类型

tree命令可以以树的形式显示整个系统的文件。

1. - 普通文件
2. d  目录文件
3. c/d  设备文件
4. l 链接文件
5. p  FIFO 完成进程通信
6. s  套接字文件,进程间网络通讯

查看文件类型

ls -l

2 - 文件系统的组成

2.1 - 定义

1 - 定义:文件系统指文件所在的物理空间中文件的 组织方法 和 数据结构
2 - Linux系统中的每个分区都是一个 文件系统,都有自己的层级目录
3 - Linux会将这些分属不同分区的 单独的文件系统 按照 一定的方式 形成一个系统的 总的 目录层次结构

2.2 - 作用

  • 用户在硬件存储设备中执行的 文件建立、写入、读取、修改、转存与控制 等操作都是依靠文件系统来完成的;
  • 文件系统的作用:合理规划硬盘,以保证用户正常的使用需求
  • 磁盘的格式化 的过程就是对磁盘分区 标记 文件系统 的过程,包括设置 数据块大小 等信息
  • dumpe2fsxfs_info 命令可查看文件系统详细信息

2.3 - 常见类型

ext2	#早期的Linux常用
ext3	#带日志功能,能够在系统宕机时避免文件系统资料的丢失(不保证找回,尽力而为)
ext4	#无限多子目录,更高的读写效率
NFS	    #网络文件系统,主要用于远程文件共享
FAT		#Windows XP 使用(Linux也支持)
NTFS	#Windows NT/XP 
ISO9660	#大部分光盘采用的文件系统
SMBFS	#Samba的共享文件系统
XFS		#高性能的日志文件系统,优势 - 系统宕机快速恢复,支持超大容量系统18eb(kylin使用)

2.4 - 分配文件系统

#1 - 查看磁盘状态
fdisk -l
# 2 - 给硬盘分区
	fdisk /dev/sdb
	n
	# 设置分区
		p (主分区) - partition
		e(扩展分区) - extension
	#设置分区号
	1 (默认是1,可以选择1-4)
	# 设置第一个扇区
	2048(默认是2948)
	# 设置最后一个扇区
	+5G (默认是41943039,可以为 2048-41943039) #给该分区5G的空间
	# 查看分区表
	w

# 3 - 分配文件系统
	mkfs.ext4 /dev/sdb1
# 4 - 查看系统分区
	df -h #此时查看不到sdb1的分区信息
# 5 - 挂载文件系统 - 物理硬盘和目录创建连接(也称 分区和 目录对应)
	mount /dev/sdb1 /dir  #解释:对dir目录中文件的修改相当于是对/dev/sdb1这块磁盘的修改
# 6 - 再次查看系统分区
	df h #此时可以显示sdb1的信息
	

创建好文件系统后,查看

df -Th

3 - 数据存储 层次

网图啦

第一层:物理硬盘 - MBR - 分区,分成四个分区
第二层:分区 - 包括 Boot-Sector 和 File-System(文件系统)  【四个分区可以为不同的文件系统】
第三层:文件系统 - 由一个一个的 Block-Group (块组) 组成,Block-Group-0 ,Block-Group-1,...Block-Group-n,【Block-Group-0比较特殊一点】
第四层:块组 - 包括:
	1 - Super-Block:一般来讲,一个文件只有一个超级块,一般这个超级块位于Block-Group-0,其他块组也可存在超级块,是块组0的副本;
	2 - GDT
	3 - Block-Bitmap
	4 - inode-Bitmap
	5 - inode-table
	6 - Data-Blocks
第五层:inode表

下面小节会依次描述:

3.1 - inode表

一个文件对应一个inode表!!!

作用:记录文件的属性以及该文件实际数据是放置在哪些Block(xfs系统,一个块4KB)中

1 - 一个文件占用一个 inode 编号,唯一
2 - 文件大小、真正内容的Block号
3 - 访问模式 :读写执行
4 - 拥有者owner,群组 group
5 - 各种时间:创建时间、读取时间和最近修改的时间

inode的数量与文件系统有关

inode的大小:
	128bytes(EXT2) 
	256 bytes(EXT4) 
	512bytes(XFS)

inode能够建立的文件数量与inode的数量有关(一对一),存在空间还有但inode不够的情况。

[root@localhost ~]# stat anaconda-ks.cfg 
  文件:“anaconda-ks.cfg”
  大小:3183      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:939872185   硬链接:1
权限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2022-09-16 11:02:10.029762729 +0800
最近更改:2022-09-16 10:54:54.174062223 +0800
最近改动:2022-09-16 10:54:54.174062223 +0800
创建时间:-

3.2 - Datablock

1 - 每个Block中最多只能放一个文件,但一个文件可以放在多个Block中;
2 - 在格式化的时候,Block的大小就固定了(1K,2K,4K),且每个Block都有编号
3 - 若文件小于 Block ,则 该Block 剩余空间就不能再被使用~(磁盘空间浪费)

3.3 - Superblock

super-block 十分重要,没有super-block,可能就没有这个文件系统了。

1 - 分区文件系统中 包含的 block 和 inode 的总量;
2 - 未使用 与 已使用 的 inode/block 的数量;
3 - valid-bit数值,
4 - block 和 inode 的大小(block-1k,2k,4k,inode=128bytes,512bytes)

3.4 - GDT 全局描述表

1 - 每个块组的开始与结束的块的号码;
2 - 每个区段分别介于哪两个block号码之间。

4 - 虚拟文件系统 - VFS

产生原因:每个分区的操作系统可能是不同的,为了使用户在读取或写入文件时不用关心底层的硬盘结构,用户只要记住一套shell命令即可~

在这里插入图片描述

1 - 用户层应用使用统一的标准接口 进行文件管理;(简单理解,就是一套shell命令可以操作整个磁盘)
2 - 可以动态支持很多文件系统。添加一个文件系统只需要安装驱动就可,不需要内核重新编译

5 - 软链接与硬链接

1 - 硬链接:九头鸟
	1.1 - 只有在同一个文件系统内才可创建 硬链接,不能跨分区创建
	1.2 - 以文件副本的形式存在,但不占用实际空间;
	1.3 - 不可对 目录创建 硬链接
	

2 - 软链接(符号链接):快捷方式
	2.1 - 以路径的形式存在,类似于快捷方式;
	2.2 - 可以跨文件系统
	2.3 - 可以对一个不存在的文件名进行链接
	2.4 - 可以对目录进行链接

5.1 - 硬链接

ln source target

5.2 - 软链接

ln -s source target
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值