Linux文件IO深入剖析

目录

一、文件IO引发的项目血案

1、分析

一、Linux文件系统基本概念

1、文件系统接口

2、文件系统缓存

二、文件IO 访问方式概述

1、标准文件访问方式

2、直接IO

3、实现方式

4、缓存同步

5、Linux 文件IO流程图

6、血案解决


一、文件IO引发的项目血案

事件经过下午某时,一个重要客户的一封邮件不见了,客户要求公司赔偿他上百万的损失!在一个通宵后找到了问题所在,write 函数出问题了,邮件写入文件时write 返回成功,但写入大文件中的邮件内容不见了。一致认为write 函数执行完成后数据还没同步到物理存储的间隔系统出现宕机了............

1、分析

一、Linux文件系统基本概念

1、文件系统接口

文件系统 -一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。

2、文件系统缓存

主存(通常是DRAM)的一块区域,用来缓存文件系统的内容,包含各种数据和元数据。

二、文件IO 访问方式概述

1、标准文件访问方式

2、直接IO

3、实现方式

open +O_DIRECT = 绕过内核缓冲区的直接访问,便有效避免了CPU和内存的多余时间开销。

注意:

后者只对写数据有效,它将写入内核缓冲区的数据立即写入磁盘,将机器故障时

数据的丢失减少到最小,但是它仍然要经过内核缓冲区。

4、缓存同步

缓存同步      为了保证磁盘系统与缓冲区中内容一致,Linux 系统提供了 syncfsync fdatasync 三个函数.

函数描述:向打开的文件写数据; 成功返回写入的字节数,若出错,返回-1

头文件:#include <unistd.h>int fsync(int fd);int fdatasync(int fd);void sync(void);

说明:

sync - 将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。

fsync - fd对应文件的块缓冲区立即写入磁盘,并等待实际写磁盘操作结束返回。

fdatasync - 类似fsync,但只影响文件的数据部分。而除数据外,fsync 还会同步更新文件属性。

5、Linux 文件IO流程图

6、血案解决

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

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

相关文章

MTK平台Android13实现三方launcher为默认

一、前言 目前有遇到客户的定制需求,希望使用三方的launcher作为默认的launcher使用,一般情况下直接将三方launcher通过内置到系统并通过overlay机制即可很方便的实现launcher的替换,但是存在一个问题,需要增加ROM的维护成本。本文通过设备在使用前联网通过后台下发三方lau…

MetaGPT全面指南:多代理协作框架的深入解析与应用

文章目录 理解MetaGPT1.1 MetaGPT的基础1.2 MetaGPT的独特之处1.3 MetaGPT在AI领域的应用 MetaGPT的工作原理2.1 训练2.2 微调2.3 推理2.4 多代理协作的概念2.5 如何分配角色给GPTs2.6 复杂任务的完成过程 实际应用3.1 客户支持3.2 内容创作3.3 教育3.4 医疗保健3.5 在企业中的…

自签名的PDF文档证书有法律效力吗?

自签名的PDF文档证书是否具有法律效力&#xff0c;取决于多个因素。以下是对此问题的详细分析&#xff1a; 电子签名的法律效力&#xff1a; 根据《中华人民共和国电子签名法》的规定&#xff0c;电子签名可以作为电子数据&#xff0c;与纸质文件一样具有法律效力。这意味着&a…

【408考点之数据结构】树与二叉树的应用

树与二叉树的应用 一、树与二叉树的基本应用 树和二叉树是数据结构中的重要组成部分&#xff0c;具有广泛的应用。以下是树和二叉树的一些基本应用&#xff1a; 表达式树&#xff1a;用于表示算术表达式&#xff0c;其中叶节点是操作数&#xff0c;内部节点是运算符。霍夫曼…

CAS和AQS 原理

CAS&#xff08;Compare And Swap&#xff09;和AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是并发编程中常用的两种同步机制。以下是它们的原理介绍&#xff1a; CAS&#xff08;Compare And Swap&#xff09; CAS是一种无锁的并发机制&#xff0c;主要用于解决…

Potato(土豆)一款轻量级的开源文本标注工具

项目介绍&#xff1a; Potato 是一款轻量级、可移植的Web文本标注工具&#xff0c;被EMNLP 2022 DEMO赛道接受。它旨在帮助用户快速地从零开始创建和部署各种文本标注任务&#xff0c;无需复杂的编程或网页设计。只需简单配置&#xff0c;团队即可在几分钟内启动并运行标注项目…

【论文速读】| LLAMAFUZZ:大语言模型增强的灰盒模糊测试

本次分享论文&#xff1a;LLAMAFUZZ: Large Language Model Enhanced Greybox Fuzzing 基本信息 原文作者&#xff1a;Hongxiang Zhang, Yuyang Rong, Yifeng He, Hao Chen 作者单位&#xff1a;University of California, Davis 关键词&#xff1a;模糊测试&#xff0c;大…

SQL面试题练习 —— 合并用户浏览行为

目录 1 题目2 建表语句3 题解 1 题目 有一份用户访问记录表&#xff0c;记录用户id和访问时间&#xff0c;如果用户访问时间间隔小于60s则认为时一次浏览&#xff0c;请合并用户的浏览行为。 样例数据 ------------------------ | user_id | access_time | ---------------…

云动态摘要 2024-06-27

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新产品更新 veLinux 2.0 镜像邀测发布 火山引擎 2024-06-26 veLinux 2.0 镜像邀测发布 ECS支持100台实例批量续费/退订 火山引擎 2024-06-26 ECS支持100台实例批量续费/退订 弹性伸缩支持目标追踪规则(邀测) …

花8000元去培训机构学习网络安全值得吗,学成后就业前景如何?

我就是从培训机构学的网络安全&#xff0c;线下五六个月&#xff0c;当时学费不到一万&#xff0c;目前已成功入行。所以&#xff0c;只要你下决心要入这一行&#xff0c;过程中能好好学&#xff0c;那这8000就花得值~ 因为只要学得好&#xff0c;工作两个多月就能赚回学费&am…

Shell (一)Ubuntu的网络配置及软件安装

Ubuntu的配置及软件安装 网络配置 虚拟机提供的网络类型 桥接模式 主机和虚拟机分别拥有不同的ip地址&#xff0c;可以实现和外界设备通信 NAT模式 也可以联网&#xff0c;但是和主机共用同一个ip地址&#xff0c;外界无法识别虚拟机和主机发送的信息 仅主机模式 虚拟机不可…

数据资产与人工智能的融合之路:探讨如何结合AI技术优化数据资产管理,提升企业智能化水平

目录 一、引言 二、数据资产管理的现状与挑战 1、数据资产管理的重要性 2、数据资产管理的挑战 三、人工智能在数据资产管理中的应用 1、数据采集与整合 2、数据清洗与校验 3、数据安全与隐私保护 4、数据分析与挖掘 四、结合AI技术优化数据资产管理的策略 1、制定数…

【stm32-新建工程-HAL库版本】

stm32-新建工程-HAL库版本 ■ 1. 下载STM32Cube官方固件包&#xff08;F1/F4/F7/H7&#xff09;■ 2. 新建HAL库版本MDK工程所需的文件夹■ 2.1 新建工程文件- XXX项目并在下面新建如下文件夹■ 2.2 向Drivers文件添加如下文件■ 2.3 向Mrddlewares文件添加文件■ 2.4 设置Outp…

python--jiaba库的基本使用

jieba 是一个用于中文分词的 Python 库。它使用基于统计的词典分词方法&#xff0c;能够支持三种分词模式&#xff1a;精确模式、全模式、搜索引擎模式&#xff0c;并且支持繁体分词和自定义词典。 以下是 jieba 库的基本使用步骤&#xff1a; 安装 首先&#xff0c;你需要安…

一篇文章带你玩懂数据库的基础函数

数据库的函数 单行函数1.数据函数2.字符串函数3.时间函数4.流程函数 多行函数聚合函数 阅读指南&#xff1a; 本文章讲述了对于数据库的单行和多行函数&#xff0c;如果读者感兴趣&#xff0c;后续我们会更新高级的操作在我们的对于数据库教程的合集中&#xff0c;大家可以来很…

唐兴通:银行金融数字化转型营销客户销售个金对公讲师培训师

唐兴通 数字化转型顾问、金融产品营销专家、数字化销售增长教练、沃顿商学院演讲嘉宾。全球创新增长战略大家EM罗杰斯&#xff08;创新的扩散&#xff09;、杰弗里摩尔&#xff08;跨越鸿沟&#xff09;、亨利切萨布鲁夫&#xff08;开放式创新&#xff09;在中国合作者。《中…

服务接口请求 CORS跨域漏洞修复

通过nginx去对Origin请求头的来源地址去做逻辑处理&#xff0c;不在白名单内返回403 具体配置 location / {set $flag 0;if ($http_origin ){set $flag "${flag}1";}if ($http_origin !~* ^(http|https)://www\.abc\.com$){set $flag "${flag}1";}if ($f…

一位OpenAI大模型训练工程师繁忙的一天

早晨&#xff1a;迎接新的一天 7:00 AM - 起床 早晨七点起床。洗漱、吃早餐后&#xff0c;查看手机上的邮件和公司消息&#xff0c;以便提前了解今天的工作安排和任务优先级。 7:30 AM - 前往公司 乘坐地铁前往位于旧金山的OpenAI总部。在地铁上习惯性地阅读一些与人工智能和…

秋招倒计时?到底需要准备到什么程度?

秋招倒计时&#xff1f;需要准备到什么程度&#xff1f; 秋招&#xff0c;面向全国的毕业生&#xff0c;招聘的激烈程度可想而知&#xff01;按照往年时间&#xff0c;秋招通常从八月初开始&#xff0c;九月黄金期&#xff0c;十月中后期。距今刚好差不多60天&#xff0c;时间其…

npm常用命令大全(非常详细)

npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理工具&#xff0c;它允许你安装、更新、删除和管理Node.js项目的依赖。 以下是npm的一些常用命令&#xff0c;按照不同的功能进行分类和解释&#xff1a; 1. 初始化项目 init # 初始化一个新的npm项目&…