操作系统文件系统
Posted "sudo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统文件系统相关的知识,希望对你有一定的参考价值。
文章目录
文件系统存在于硬盘之上,所以,先介绍硬盘
硬盘
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 - 作用
- 用户在硬件存储设备中执行的 文件建立、写入、读取、修改、转存与控制 等操作都是依靠文件系统来完成的;
- 文件系统的作用:合理规划硬盘,以保证用户正常的使用需求
- 磁盘的格式化 的过程就是对磁盘分区 标记 文件系统 的过程,包括设置 数据块大小 等信息
dumpe2fs
和xfs_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
以上是关于操作系统文件系统的主要内容,如果未能解决你的问题,请参考以下文章