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 ..
相关文章:

Linux —— 文件系统
目录 一,背景 二,文件系统 一,磁盘简介 磁盘分为SSD、机械磁盘;机械磁盘,即磁盘高速转动,磁头移动到读写扇区所在磁道,让磁头在目标扇区上划过,即可完成对扇区的读写操作ÿ…...
自然策略优化的解释 Natural Policy Optimization
Natural Policy Optimization(自然策略优化)是一种用于优化策略梯度算法的方法。它是基于概率策略的强化学习算法,旨在通过迭代地更新策略参数来最大化累积回报。 传统的策略梯度算法通常使用梯度上升法来更新策略参数,但这种方法…...

docker基本使用方法
docker使用 1. Docker 介绍 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。通过利用 …...

机器学习(十八):Bagging和随机森林
全文共10000余字,预计阅读时间约30~40分钟 | 满满干货(附数据及代码),建议收藏! 本文目标:理解什么是集成学习,明确Bagging算法的过程,熟悉随机森林算法的原理及其在Sklearn中的各参数定义和使用方法 代码…...

使用蓝牙外设却不小心把台式机电脑蓝牙关了
起因 今天犯了一个贼SB的错误,起因是蓝牙键盘突然就不能输入了(虽然是连接状态,但是按什么键都没有反应) 原来我的解决方法就是重启一下电脑,但是那会电脑开了贼多的软件。我就想重启也太麻烦了,既然重启…...
美国Linux服务器安装Grafana和配置zabbix数据源的教程
美国Linux服务器的Grafana工具是跨平台、开源、时序和可视化面板Dashboard监控平台工具,是在日常管理中帮忙提高效率的实用工具,可以通过将采集的美国Linux服务器系统数据查询后,进行可视化的展示及通知,本文小编就来介绍下美国Li…...
[ROS安装问题] rosdep update 失败报错
【关于ROS安装】 由于日益复杂的国际形势,按照wiki官网的ROS安装流程变得相当困难,这里我推荐使用鱼香ROS大佬写的脚本一键傻瓜式安装: wget http://fishros.com/install -O fishros && . fishros 【关于rosdep失败】 这已经是一…...

Vue2到3 Day5 全套学习内容,众多案例上手(内付源码)
简介: Vue2到3 Day1-3 全套学习内容,众多案例上手(内付源码)_星辰大海1412的博客-CSDN博客本文是一篇入门级的Vue.js介绍文章,旨在帮助读者了解Vue.js框架的基本概念和核心功能。Vue.js是一款流行的JavaScript前端框架…...

STM32 CubeMX (uart_IAP串口)简单示例
STM32 CubeMX STM32 CubeMX (串口IAP) STM32 CubeMXIAP有什么用?整体思路 一、STM32 CubeMX 设置时钟树UART使能UART初始化设置 二、代码部分文件移植
Kafka:安装和配置
producer:发布消息的对象,称为消息产生者 (Kafka topic producer) topic:Kafka将消息分门别类,每一个消息称为一个主题(topic) consumer:订阅消息并处理发布消息的对象…...
786. 第k个数
文章目录 QuestionIdeasCode Question 给定一个长度为 n 的整数数列,以及一个整数 k ,请用快速选择算法求出数列从小到大排序后的第 k 个数。 输入格式 第一行包含两个整数 n 和 k 。 第二行包含 n 个整数(所有整数均在 1∼109 范围内&…...

用友-NC-Cloud远程代码执行漏洞[2023-HW]
用友-NC-Cloud远程代码执行漏洞[2023-HW] 一、漏洞介绍二、资产搜索三、漏洞复现PoC小龙POC检测脚本: 四、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#…...

Transformer(二)(VIT,TNT)(基于视觉CV)
目录 1.视觉中的Attention 2.VIT框架(图像分类,不需要decoder) 2.1整体框架 2.2.CNN和Transformer遇到的问题 2.3.1CNN 2.3.2Transformer 2.3.3二者对比 2.4.公式理解 3TNT 参考文献 1.视觉中的Attention 对于人类而言看到一幅图可以立…...

Scratch 详解 之 线性→代数之——求两线段交点坐标
可能有人要问:求交点坐标有什么用呢?而且为啥要用线代来求?直线方程不行吗??? 这个问题,我只能说,直线方程计算的次数过多了,而且动不动就要考虑线的方向,90的…...

Python-组合数据类型
今天要介绍的是Python的组合数据类型 整理不易,希望得到大家的支持,欢迎各位读者评论点赞收藏 感谢! 目录 知识点知识导图1、组合数据类型的基本概念1.1 组合数据类型1.2 集合类型概述1.3 序列类型概述1.4 映射类型概述 2、列表类型2.1 列表的…...
vue3+vue-simple-uploader实现大文件上传
vue-simple-uploader本身是基于vue2实现,如果要使用vue3会报错。如何在vue3中使用,可参考我的另一篇文章:解决vue3中不能使用vue-simple-uploader__Jyann_的博客-CSDN博客 一.实现思路 使用vue-simple-uploader组件的uploader组件,设置自动上传为false,即可开启手动上传。…...

自适应变异麻雀搜索算法及其Matlab实现
麻雀搜索算法( sparrow search algorithm,SSA) 是2020 年新提出的一种元启发式算法[1],它是受麻雀种群的觅食和反捕食行为启发,将搜索群体分为发现者、加入者和侦察者 3 部分,其相互分工寻找最优值,通过 19 个标准测试…...

ETL技术入门之ETLCloud初认识
首先ETL是什么? ETL代表“Extract, Transform, Load”,是一种用于数据集成和转换的过程。它在数据管理和分析中扮演着重要的角色。下面我们将分解每个步骤: Extract(抽取): 这一步骤涉及从多个不同的数据源…...

uniapp项目如何运行在微信小程序模拟器上
在HbuilderX中的小程序写完后自己一定要保存,否则会出不来效果 那么怎么让uniapp项目运行在微信小程序开发工具中呢 1 在hbuilderx中点击运行到小程序模拟器 2 然后在项目目录中会生成一个文件夹 在微信小程序开发软件中的工具>安全设置>打开端口 或者在微…...

数据挖掘全流程解析
数据挖掘全流程解析 数据指标选择 在这一阶段,使用直方图和柱状图的方式对数据进行分析,观察什么数据属性对于因变量会产生更加明显的结果。 如何绘制直方图和条形统计图 数据清洗 观察数据是否存在数据缺失或者离群点的情况。 数据异常的两种情况…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...