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 ..
相关推荐
海岛日记1 小时前
centos一键卸载docker脚本
linux·docker·centos
AttackingLin1 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
学Linux的语莫3 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
踏雪Vernon3 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
学Linux的语莫3 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
legend_jz3 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
Komorebi.py3 小时前
【Linux】-学习笔记04
linux·笔记·学习
黑牛先生3 小时前
【Linux】进程-PCB
linux·运维·服务器
友友马4 小时前
『 Linux 』网络层 - IP协议(一)
linux·网络·tcp/ip