塊設備層保序操作分析

Q:塊設備層保序功能的作用?
A:通用塊層可以提交一個帶保序標簽(BIO_RW_BARRIER)的BIO到IO請求隊列,塊設備層可以保證在保序BIO之前提交的BIO都先于BIO執行且抵達存儲介質;保序BIO執行完畢后,它需要寫入的數據必定已經抵達存儲介質;在保序IO之后提交的BIO都晚于保序BIO執行,確保BIO不饑餓.

Q:塊設備層保序功能的應用?
A:保序功能最典型的應用場景是文件系統的日志,日志文件系統做文件操作時的日志操作可以簡化為:1.開始事務->2.將修改的元數據寫入到日志空間->3.向日志空間寫入事務提交塊->4.事務結束,這個過程中,IO調度器可能重排2,3步的BIO,導致第3步先于第2步執行完畢,掉電后一個不完整的事務被恢復,文件系統數據被破壞.

Q:塊設備保序功能的實現?
A:BIO從提交到抵達存儲介質需要經過的IO路徑有:IO調度器緩存隊列->IO分發隊列->驅動緩存隊列->磁盤緩存->磁盤介質,保序的真正實現需要借助磁盤提供支持,2.6.27的保序實現會根據磁盤提供的功能做不同的操作.其原理是在收到保序請求后,清空IO調度器中緩存的request,同時在保序請求前后插入刷硬盤緩存指令的request,確保保序請求執行完畢后它和它以前請求寫入的數據都已抵達存儲介質,具體步驟如下:
1.當塊設備層收到保序BIO時,獨立創建一個帶REQ_HARDBARRIER標志的request,調用add_request()向request_queue添加request,插入的位置是ELEVATOR_INSERT_BACK.

2.elv_insert()收到ELEVATOR_INSERT_BACK位置的請求后,將IO調度器中緩沖的request都轉移到分發隊列,同時將保序request插入到分發隊列的最后.

3.底層驅動提供的q->request_fn()函數被調用,elv_next_request()->blk_do_ordered()處理到保序request時,如果q->ordseq=0且硬盤支持沖刷緩存指令,調用start_ordered()開始保序流程.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20536.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

07.爬蟲---使用session發送請求

07.使用session發送請求 1.目標網站2.代碼實現 1.目標網站 我們以這個網站作為目標網站 http://www.360doc.com/ 注冊用戶 注冊后從登錄界面獲取到這些信息 2.代碼實現 import requestssession requests.Session() url http://www.360doc.com/ajax/login/login.ashx u…

深入剖析Java線程池的核心概念與源碼解析:從Executors、Executor、execute逐一揭秘

文章目錄 文章導圖前言Executors、Executor、execute對比剖析Executors生成的線程池?線程池中的 execute 方法execute 方法的作用execute的工作原理拒絕策略 源碼分析工作原理基本知識線程的狀態線程池的狀態線程池狀態和線程狀態總結線程池的狀態信息和線程數量信息…

RedisSearch與Elasticsearch:技術對比與選擇指南

碼到三十五 : 個人主頁 數據時代,全文搜索已經成為許多應用程序中不可或缺的一部分。RedisSearch和Elasticsearch是兩個流行的搜索解決方案,它們各自具有獨特的特點和優勢。本文簡單探討一些RedisSearch和Elasticsearch之間的技術差異。 目錄…

9款實用而不為人知的小眾軟件推薦!

AI視頻生成:小說文案智能分鏡智能識別角色和場景批量Ai繪圖自動配音添加音樂一鍵合成視頻https://aitools.jurilu.com/ 在電腦軟件的浩瀚海洋中,除了那些廣為人知的流行軟件外,還有許多簡單、干凈、功能強大且注重實用功能的小眾軟件等待我們…

[NISACTF 2022]sign_crypto(LATEX)

題目: 我們看出這是LATEX編碼,破解之后: 看出每個“\”之后的第一個字母連起來即使:nss....,在大寫即可得到flag。

linux各個日志的含義 以及使用方法

在Linux系統上,系統日志文件通常存儲在/var/log/目錄下。可以通過查看這些日志文件來了解系統的操作記錄、錯誤信息和其他相關信息。以下是一些常見的系統日志文件以及它們包含的信息: /var/log/messages:這是一個常見的系統日志文件&#xf…

Sui Nami Bags對NFT使用案例進行創新

在四月的Sui Basecamp活動中,與會者體驗了一系列Sui技術,這些技術以Nami Bags的形式呈現,這些數字禮包里滿是來自Sui生態的NFT和優惠券。通過Enoki(Mysten Labs的新客戶參與平臺)提供支持,即使沒有加密錢包…

OpenCV學習 基礎圖像操作(十七):泛洪與分水嶺算法

原理 泛洪填充算法和分水嶺算法是圖像處理中的兩種重要算法,主要用于區域分割,但它們的原理和應用場景有所不同,但是他們的基礎思想都是基于區域迭代實現的區域之間的劃分。 泛洪算法 泛洪填充算法(Flood Fill)是一…

修改element-ui el-radio顏色

修改element-ui el-radio顏色 需求效果圖代碼實現 小結 需求 撤銷扣分是綠色&#xff0c;駁回是紅色 效果圖 代碼實現 dom <el-table-columnlabel"操作"width"200px"><template v-slot"scope"><el-radio-group v-model"s…

Vue插槽與作用域插槽

title: Vue插槽與作用域插槽 date: 2024/6/1 下午9:07:52 updated: 2024/6/1 下午9:07:52 categories: 前端開發 tags:VueSlotScopeSlot組件通信Vue2/3插槽作用域API動態插槽插槽優化 第1章&#xff1a;插槽的概念與原理 插槽的定義 在Vue.js中&#xff0c;插槽&#xff08;…

如何用FPGA實現SINC濾波

目錄 簡介: 技術說明: 代碼如下: 簡介: sinc(音同“sink”)濾波器是由sinc函數構造的濾波器。sinc函數的定義可以參考抽樣信號Sa的定義,這里只需知道矩形脈沖和sinc函數是一個變換對。當矩形脈沖的頻譜沒有混疊時,它就是sin(x)/x,一個sinc函數,對于連續信號,矩形脈…

【記錄43】el-table @selection-change 數據回顯、條件約束、歷史回顯清除

場景 在其他地方設置好人員&#xff0c;到對應的頁面直接在表格中復選設置好的人員。解決方案用到selection-change方法 <el-button click"EchoClick()">回顯設置好的人</el-button> <el-table ref"choeck" :data"TableData" s…

c++(七)

c&#xff08;七&#xff09; 內聯函數內聯函數的特點為什么要有內聯函數內聯函數是如何工作的呢 類型轉換異常處理智能指針單例模式懶漢模式餓漢模式 VS中數據庫的相關配置 內聯函數 修飾類的成員函數&#xff0c;關鍵字&#xff1a;inline inline 返回值類型 函數名(參數列…

vue-el-steps 使用2[代碼示例]

效果圖 代碼 element代碼 <template> <div class"app-container"> <el-form :model"queryForm" size"small" :inline"true"> <el-form-item label"內容狀態"> <el-button-group> <el-bu…

Docker 容器中運行Certbot獲取和管理 SSL 證書

如果你在 Docker 容器中運行 Nginx 并希望使用 Certbot 獲取和管理 SSL 證書&#xff0c;可以使用 Certbot 的官方 Docker 鏡像來完成這項工作。以下是使用 Docker 和 Certbot 獲取 SSL 證書并配置 Nginx 的詳細步驟&#xff1a; 1. 拉取 Certbot Docker 鏡像 首先&#xff0…

window下C語言程序報錯

Thread 1 received signal SIGSEGV, Segmentation fault. ___chkstk_ms () at ../../../../../src/gcc-8.1.0/libgcc/config/i386/cygwin.S:126 126 ../../../../../src/gcc-8.1.0/libgcc/config/i386/cygwin.S: No such file or directory. 參考&#xff1a;不同平臺下對…

代碼隨想錄訓練營Day 46|力扣完全背包、518. 零錢兌換 II、377. 組合總和 Ⅳ

1.完全背包 視頻講解&#xff1a;帶你學透完全背包問題&#xff01; 和 01背包有什么差別&#xff1f;遍歷順序上有什么講究&#xff1f;_嗶哩嗶哩_bilibili https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%AE%8C%E…

as keyof GlobalStore

解釋 as keyof GlobalStore 在 TypeScript 中&#xff0c;as keyof GlobalStore 是一種類型斷言語法。它告訴 TypeScript&#xff0c;返回的值是一個特定類型的值&#xff0c;這里是 GlobalStore 類型的鍵。這在編譯時有助于確保類型安全。 關鍵點&#xff1a; 類型斷言&…

【三國戰紀game】

編寫一個完整的《三國戰紀》游戲是一個龐大的項目&#xff0c;需要一個專業的游戲開發團隊和大量的時間。但是&#xff0c;我可以給你一個簡化的概念&#xff0c;幫助你開始這個過程。 游戲概念&#xff1a;三國戰紀 《三國戰紀》是一個以中國三國時期為背景的策略游戲&#…

構建智慧銀行保險系統的先進技術架構

隨著科技的不斷發展&#xff0c;智慧銀行保險系統正日益受到關注。在這個數字化時代&#xff0c;構建一個先進的技術架構對于智慧銀行保險系統至關重要。本文將探討如何構建智慧銀行保險系統的先進技術架構&#xff0c;以提升服務效率、降低風險并滿足客戶需求。 ### 1. 智慧銀…