Linux —— 文件系统

目录

一,背景

二,文件系统


一,磁盘简介

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

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

二,文件系统

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

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

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

文件 = 属性 + 内容

//文件属性
[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
//模式 硬链接数 所有者 组 大小 修改时间 文件名
[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 -0700Birth: -

文件系统分类

  • 磁盘文件系统,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;
//创建软链接
[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
//创建硬链接
[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
//目录文件链接数为2
//本身目录名和inode的映射关系
//自身目录内还有一个默认的.文件
[wz@192 Desktop]$ ll -ai
total 3674071 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 ..
//在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 ..

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/33528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nacos升级开启鉴权后,微服务无法连接的解决方案

版本: 软件版本号备注spring boot2.2.5.RELEASEspring-cloudHoxton.SR3spring-cloud-alibaba2.2.1.RELEASEnacos2.0.1从1.4.2版本进行升级。同时作为注册中心和配置中心 一、升级nacos版本,开启鉴权 1.在application.properties配置文件开启鉴权&…

微信小程序多图片上传实用代码记录

微信小程序多图片上传实用代码记录 由于在小程序中,wx.uploadFile 只能一次上传一张图片,因此在一次需要上传多张图片的应用场景中例如商品图片上传、评论图片上传等场景下,不得不使用for等循环上传每一张图片,多次调用wx.upload…

thinkphp:分组查询(多条相同列的数据只展示一条)

例子:数据库中有trans_num、subinventory_from、transaction_type、creation_date有相同值,在查询该数据库使,只展示这几个值相同的一条 效果: 限制之前 限制之后 代码 限制前,后端代码 public function select_i…

Java之继承

继承 继承为什么使用继承继承是什么继承的语法访问父类成员访问父类成员变量访问父类成员方法 super关键字子类构造方法super和this异同分别的使用方法 继承的方式final关键字 作者简介: zoro-1,目前大一,正在学习Java,数据结构等…

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注:本篇文章采用docker部署,采用8.2.0版本,版本一定…

机器学习、深度学习项目开发业务数据场景梳理汇总记录三

本文的主要作用是对历史项目开发过程中接触到的业务数据进行整体的汇总梳理,文章会随着项目的开发推进不断更新。 这里是续文,因为CSDN单篇文章内容太大的话就会崩溃的,别问我怎么知道的,问就是血泪教训,辛辛苦苦写了一…

C语言 ——指针数组与数组指针

目录 一、二维数组 二、指针数组 (1)概念 (2)书写方式 (3)指针数组模拟二维数组 三、数组指针 (1)概念 (2)使用数组指针打印一维数组 (3&a…

tinyint这个值在MySQL中的值有哪些

在MySQL中,TINYINT是一种整数数据类型,用于存储小范围的整数值。它占用1个字节的存储空间,可以表示的值范围是从-128到127(有符号)或者从0到255(无符号)。 以下是在MySQL中使用TINYINT数据类型…

2023牛客暑期多校训练营7

Beautiful Sequence 贪心,二进制,构造 Cyperation 模拟 ,数学 We Love Strings 分块,二进制枚举,二进制容斥dp Writing Books 签到 根据相邻两个异或值B,因为前小于等于后,故从高到低遍历B的每一…

MySQL(数据分组-GROUP BY、HAVING子句、联合查询、查询结果限定、通配符)

目录 分组: GROUP BY子句的真正作用: 分组函数: 分组函数重要规则: HAVING子句 HAVING与WHERE的区别 MySQL 多行数据合并 GROUP_CONCAT 联合查询 查询结果限定 MySQL中的通配符: 分组: 把该列具…

DDOS攻击成本高昂,与防御成本紧密相连110.42.2.1

ddos攻击成本高吗,与防御成本高的关系是什么?在数字时代,分布式拒绝服务(DDOS)攻击已经成为企业和组织面临的一种常见威胁。这种攻击通过利用网络资源,对目标系统或服务进行大规模、协调一致的攻击,导致目标系统崩溃或无法正常运…

AT89C51单片机实现单片机串口互动(中断方式,单片机--单片机,应答)

说一下功能:客户机发送0x01到服务机 2服务单片机应答0xf2到客户机 3客户机接收到0xf2,发送信息153432这6个数字到服务机 4client发送完信息后发送0xaa结束通信 5server接收到0xaa后回复0xaa结束通信,从此老死不相往来 看代码: //发送端…

C语言 ——函数指针变量

1、概念: 数组指针 - 是指针-是指向数组的指针,是存放数组地址的指针 函数指针 - 是指针 是指向函数的指针 - 是存放函数地址的指针!! 如上所示,函数也是具有地址的,而存放函数地址的指针变量成为函数指针变量。 而有如上所示&a…

构建Docker容器监控系统(2)(Cadvisor +Prometheus+Grafana)

Cadvisor产品简介 Cadvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行Cadvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。 接着上一篇来继续 部署Cadvisor 被监控主机上部署Cadvisor容器…

【Kafka】1.Kafka简介及安装

目 录 1. Kafka的简介1.1 使用场景1.2 基本概念 2. Kafka的安装2.1 下载Kafka的压缩包2.2 解压Kafka的压缩包2.3 启动Kafka服务 1. Kafka的简介 Kafka 是一个分布式、支持分区(partition)、多副本(replica)、基于 zookeeper 协调…

Qt5开发视频播放器

一、播放器界面UI设计 控件对象名位置(坐标点)对象名称组件名称备注Widget(0, 0, 809, 572)WidgetQWidgetlabellabelQLabel播放窗口label_2label_2QLabelvoice_controlvoice_controlQSlider音量滑动条btn_openbtn_openQPushButton打开文件按钮label_4la…

在vue3中定义组件的5种方式

在vue3中定义组件的5种方式 Vue 正在不断发展,目前在 Vue3 中定义组件的方法有多种。从选项式到组合式再到类API,情况截然不同。本文将会定义一个简单的组件并使用所有可用的方法重构它。 选项式 这是在 Vue 中声明组件的最常见方法。从 Vue1 就开始存…

[RISCV] Generate Debian distribution

获取keyring $ wget http://mirrors.ustc.edu.cn/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2023.02.01~deb11u1_all.deb安装keyring $ sudo dpkg -i debian-ports-archive-keyring_2023.02.01~deb11u1_all.deb安装debootstrap $ sudo…

ThreadLLocal的学习

ThreadLocal的学习 ThreadLocal的学习1.ThreadLocal是什么?2.ThreadLocal的数据结构Java的四种引用类型 3.ThreadLocal为什么会出现内存泄露?既然会出现内存泄露为什么Entry的key还要使用弱引用?如何避免内存泄露? ThreadLocal的学…

最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架

最新版本的2023UI千月影视APP源码是一款开源的完美版应用程序,具备前后端完美匹配的特点。该应用的后端开发基于ThinkPHP框架,这是一个广泛使用的PHP开发框架,具有稳定性和安全性方面的优势。 2023UI千月影视APP是一款提供电影、电视剧、综艺…