Linux —— 文件系统

目录

一,背景

二,文件系统


一,磁盘简介

磁盘分为SSD、机械磁盘;机械磁盘,即磁盘高速转动,磁头移动到读写扇区所在磁道,让磁头在目标扇区上划过,即可完成对扇区的读写操作;

在操作系统角度,内存使用的基本单位为4KB;磁盘存储的基本单位为扇区512byte(512*8=4KB);内存和磁盘间数据交互,是通过文件系统完成的;输入输出I/O的基本单位也是一般4KB;一次性从磁盘读入8个扇区数据,来填满一个内存;

二,文件系统

文件(打开文件、未打开文件,类似进程和程序的关系)

  • 已打开的文件,内存内,struct file,包含属性和方法;
  • 未打开的磁盘文件,未被加载到内存;

文件系统,是OS对打开的文件和未打开的文件的管理;

文件 = 属性 + 内容

bash 复制代码
//文件属性
[wz@192 Desktop]$ ll
total 24
-rw-r--r--. 1 wz wz   11 8月  10 19:39 log.txt
-rw-rw-r--. 1 wz wz   29 7月  21 07:31 Makefile
-rwxrwxr-x. 1 wz wz 8648 8月  10 19:44 target
-rw-rw-r--. 1 wz wz  374 8月  10 19:47 test.c
//模式 硬链接数 所有者 组 大小 修改时间 文件名
bash 复制代码
[wz@192 Desktop]$ stat log.txt 
  File: 'log.txt'
  Size: 11        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 5465892     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/      wz)   Gid: ( 1000/      wz)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2023-08-10 19:40:07.816510338 -0700
Modify: 2023-08-10 19:39:52.677512582 -0700
Change: 2023-08-10 19:39:52.680512582 -0700
 Birth: -

文件系统分类

  • 磁盘文件系统,EXT2/3/4、VFAT、FAT/FAT16/FAT32、NTFS(windows)等;
  • 网络文件系统,NFS、Samda等;
  • 虚拟文件系统,是物理文件系统与服务应用之间的一个接口层;
  • Super Block,存放文件系统本身的结构信息,记录的信息有:block和inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载时间,最近一次写入数据的时间,最近一次检验磁盘的时间等,如super block信息损坏,则整个文件系统结构就损坏了;
  • Group Descriptors Table,描述块组属性信息;
  • Block Bitmaps,记录data blocks中哪个数据块被占用,哪个没有;
  • Inode Bitmap,每个bit表示一个inode是否空闲可用;
  • Inode Table,存放文件属性;
  • Data Blocks,存放文件内容;

inode,基本上一个文件/目录一个inode,是文件所有的属性集合(不包括文件名);真正标识文件的不是文件名,是文件inode;inode和数据块是关联的;
创建新文件4个主要操作

  • 存储属性,内核先找到一个空闲的inode,把文件信息记录其中;
  • 存储数据
  • 记录分配情况
  • 添加文件名到目录

软硬链接

  • 软链接,是一个普通正常的文件,有自己独立的inode;其数据块,保存了指向链接文件的路径;类似于Windows的快捷方式;
  • 硬链接,不是一个独立额文件,没有自己独立的inode;
bash 复制代码
//创建软链接
[wz@192 Desktop]$ ln -s file.txt soft_link
[wz@192 Desktop]$ ll -ai soft_link file.txt 
5465893 -rw-rw-r--. 1 wz wz 0 8月  12 03:51 file.txt
5465912 lrwxrwxrwx. 1 wz wz 8 8月  12 03:49 soft_link -> file.txt
bash 复制代码
//创建硬链接
[wz@192 Desktop]$ ln file.txt hard_link
[wz@192 Desktop]$ ll -ai file.txt  hard_link 
5465893 -rw-rw-r--. 2 wz wz 6 8月  12 03:53 file.txt
5465893 -rw-rw-r--. 2 wz wz 6 8月  12 03:53 hard_link
bash 复制代码
//目录文件链接数为2
//本身目录名和inode的映射关系
//自身目录内还有一个默认的.文件
[wz@192 Desktop]$ ll -ai
total 36
   74071 drwxr-xr-x.  3 wz wz  126 8月  12 05:07 .
16777672 drwx------. 19 wz wz 4096 7月  31 06:28 ..
18335283 drwxrwxr-x.  2 wz wz    6 8月  12 05:07 dir
[wz@192 Desktop]$ ll -ai dir
total 0
18335283 drwxrwxr-x. 2 wz wz   6 8月  12 05:07 .
   74071 drwxr-xr-x. 3 wz wz 126 8月  12 05:07 ..
bash 复制代码
//在dir目录下新建一个文件,目录dir的链接数变为了3
//目录sudir内的默认..文件
[wz@192 Desktop]$ mkdir dir/subdir
[wz@192 Desktop]$ ll -dai dir
18335283 drwxrwxr-x. 3 wz wz 20 8月  12 05:11 dir
[wz@192 Desktop]$ ll -ai dir/subdir/
total 0
33815814 drwxrwxr-x. 2 wz wz  6 8月  12 05:11 .
18335283 drwxrwxr-x. 3 wz wz 20 8月  12 05:11 ..
相关推荐
别动我齐刘海5 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
玖石书7 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
xiaoqiMikko7 小时前
Linux 实战(七):useradd、sudoers、umask、SGID、软链 —— 三台真机实测
linux·centos
拂拉氏9 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Fcy6489 小时前
Linux下 五种IO模型的认识与⾮阻塞IO的实现
linux·服务器·io
Mikko710 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
书生执笔画浮沉10 小时前
分享一个开源小工具CAdapt
linux·c·gnu·glibc·kernel·升级·灵感
mounter62510 小时前
Linux 内核热升级(Live Update)技术详解:PCI、VFIO 与 IOMMU 子系统的演进与实战解析引言
linux·linux kernel·kernel·iommu·vfio
砚凝霜11 小时前
【软考信息安全】第十九章 Unix/Linux安全分析与防护
linux·安全·unix
creator_Li11 小时前
Linux 的 Page Cache
linux·page cache