首頁 php教程 PHP开发 Linux系統核心中的Device Mapper機制 (1)(5)

Linux系統核心中的Device Mapper機制 (1)(5)

Dec 23, 2016 pm 02:11 PM

Device mapper的用戶空間部分對開發者要實現自己的儲存管理工具來說是可選的,事實上,很多我們常見的邏輯捲管理器,比如LVM2、dmraid等工具都利用device mapper的提供的device mapper用戶空間庫,根據自己的管理需求建立獨立的一套管理工具,而並沒有使用它提供的dmsetup工具,甚至IBM的開源專案企業級的邏輯捲管理系統-EVMS,在實作中都沒有採用device mapper的使用者空間庫,完全根據核心中的ioctl定義實作了一套自己的函式庫。

Target Driver

Device mapper提供了一個統一的架構,透過target driver 插件的方式允許用戶根據實際的需要指定自己的IO處理規則,因此target driver充分體現了device mapper的靈活性。在上文中我們已經不只一次的提到target driver,也描述過target driver的功能,在這裡我們結合最簡單的linear target driver具體介紹target driver的實作。

Target driver主要定義對IO請求的處理規則,在device mapper中對target driver的操作已定義好了統一的接口,在實現中該接口由我們上文提到的target_type結構中定義,它定義了以下target driver的方法:

1、 建構target device 的方法;

2、刪除target device 的方法;

3、Target的對應IO 請求的方法;

3、Target的映射IO請求的方法;

5、暫停 target device讀寫的方法;

6、恢復 target device讀寫的存取;

7、 取得目前 target device狀態的存取;

8、Target Target 可以處理使用者訊息的方法;根據具體需求選擇性地實現上述方法,但一般最少要實現前3種方法,否則在device mapper下不能夠正常的工作。 linear target driver就只實現了前3種方法和方法7,它完成邏輯位址空間到物理位址空間的線性映射,可以將多個實體設備以線性連接的方式組成一個邏輯設備,就如圖4中描述的那樣,透過linear target driver將/dev/sda、/dev/sdb、/dev/sdc的三段連續空間組成了一個大的邏輯區塊裝置。 Linear target的實作很簡單,它的建立和刪除方法主要完成申請和釋放描述linear target device所用結構的記憶體資源;IO映射處理方法的實作更是簡單,如下程式碼所示:

static int linear_map(struct dm_target *ti, struct bio *bio,

        union map_info *map_context)

{

 struct linear_c *lc = (struct linear_c *) ti->private;

 bio->bi_bdev = lc->dev->bdev;

 bio->bi_sector = lc->start + (bio->bi_sector - ti->begin);

 return 1;

}
登入後複製

該映射方法就是將發送給邏輯設備mapped device的bio請求,根據映射關係以線性的方式重新定向到linear target device所表示物理設備的相應位置,如代碼所示具體實現方法就是修改bio的bi_bdev設備指針為target device對應的設備指針,並根據target device的起始位址和該bio請求在mapped device設備上的偏移值改變IO請求開始的磁區號bi_sector,從而完成IO請求的重定向。其他target driver的實作也都大同小異,按照device mapper所定義的介面規範,結合自己需要的功能進行實作即可,這裡就不一一介紹了,有興趣的讀者可以看核心中具體的target driver程式碼。

(T114)

 以上就是Linux系統核心中的Device Mapper機制 (1)(5)的內容,更多相關內容請關注PHP中文網(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
在 Linux 下使用工作管理員 在 Linux 下使用工作管理員 Aug 15, 2024 am 07:30 AM

有很多Linux初學者經常問起的問題,“Linux有任務管理器嗎?”,“怎樣在Linux上打開任務管理器呢?”來自Windows的用戶都知道任務管理器非常有用。你可以在Windows中按下Ctrl+Alt+Del開啟工作管理員。這個任務管理器向你展示了所有的正在運行的進程和它們消耗的內存,你可以從任務管理器程式中選擇並殺死一個進程。當你剛使用Linux的時候,你也會尋找一個在Linux相當於任務管理器的一個東西。一個Linux使用專家更喜歡使用命令列的方式來尋找進程和消耗的記憶體等等,但是你不用必須

解決Zabbix中文監控伺服器圖形圖表顯示亂碼 解決Zabbix中文監控伺服器圖形圖表顯示亂碼 Jul 31, 2024 pm 02:10 PM

zabbix對中文的支援不是很好,但為了管理方面有時候我們還是會選擇中文,在zabbix監控的web界面,圖形圖標下面的中文會顯示一個個小方塊,這樣是不正確的,需要下載字體。例如“微軟雅黑”,“微軟雅黑.ttf”命名為“msyh.ttf”,將下載的字體上傳到/zabbix/fonts/字體下修改/zabbix/include/defines.inc.php檔案中的兩處define('ZBX_GRAPH_FONT_NAME','DejaVuSans');define('ZBX_FONT_NAME'

7個方法幫你查看Linux用戶的註冊日期 7個方法幫你查看Linux用戶的註冊日期 Aug 24, 2024 am 07:31 AM

你知道嗎,如何在Linux系統上查看帳戶的建立日期?如果知道,那麼有些什麼辦法。你成功了麼?如果是的話,該怎麼做?基本上Linux系統不會追蹤這些信息,因此,獲取這些資訊的替代方法是什麼?你可能會問為什麼我要去看這個?是的,在某些情況下,你可能需要查看這些信息,那時會對你會有幫助。可以使用以下7種方法進行驗證。使用/var/log/secure使用aureport工具使用.bash_logout使用chage指令使用useradd指令使用passwd指令使用last指令方式1:使用/var/l

如果linux系統下WPS缺失字型導致檔案亂碼該怎麼辦? 如果linux系統下WPS缺失字型導致檔案亂碼該怎麼辦? Jul 31, 2024 am 12:41 AM

1.從網路上找到wingdings、wingdings2、wingdings3、Webdings、MTExtra這些字體2、進入主資料夾,按Ctrl+h鍵(顯示隱藏檔案),查看有沒有.fonts資料夾,如果沒有就建立一個3、把下載下來的wingdings、wingdings2、wingdings3、Webdings、MTExtra這些字體,複製到主資料夾下的.fonts資料夾裡,再去啟動wps看看還有沒有「系統缺少字體…」提醒對話框,沒有就成功了!  注意事項:wingdings、wingdin

5分鐘教你加字體到Fedora 5分鐘教你加字體到Fedora Jul 23, 2024 am 09:45 AM

全系統安裝如果你在系統範圍內安裝字體,那麼它可以讓所有使用者使用。此方式的最佳方法是使用官方軟體庫中的RPM軟體包。開始前開啟FedoraWorkstation中的「Software」工具,或其他使用官方倉庫的工具。選擇橫欄中選擇“Add-ons”類別。接著在該類別中選擇“Fonts”。你會看到類似下面截圖中的可用字體:當你選擇一種字體時,會出現一些細節。根據幾種情況,你可能能夠預覽字體的一些範例文字。點擊“Install”按鈕將其添加到你的系統。根據系統速度和網路頻寬,完成此過程可能需要一些

Centos 7安裝設定NTP網路時間同步伺服器 Centos 7安裝設定NTP網路時間同步伺服器 Aug 05, 2024 pm 10:35 PM

實驗環境:OS:LinuxCentos7.4x86_641.查看目前伺服器時區&列出時區並設定時區(如已是正確時區,請略過):#timedatectl#timedatectllist-timezones#timedatectlset-timezoneAsia/Shanghai2.時間時區理解概念: GMT、UTC、CST、DSTUTC:整個地球分為二十四時區,每個時區都有自己的本地時間,在國際無線電通訊場合,為了統一起見,使用一個統一的時間,稱為通用協調時(UTC :UniversalTim

如何使用一條網路線讓兩台ubuntu主機連網 如何使用一條網路線讓兩台ubuntu主機連網 Aug 07, 2024 pm 01:39 PM

如何使用一條網線讓兩台ubuntu主機聯網1、準備主機A:ubuntu16.04主機B:ubuntu16.042、主機A有兩個網卡,一個接外網,一個與主機B相接。使用指令iwconfig可以查看主機所有網路卡。如上圖筆者的A主機(筆記本)上的網卡有:wlp2s0:這個是無線網卡。 enp1s0:有線網路卡,與B主機連接的網路卡。其它與我們無關,無需關心。 3.設定A的靜態IP編輯檔#vim/etc/network/interfaces為介面enp1s0配置靜態IP位址,如下圖(其中#==========

折騰!在樹莓派上運行DOS 折騰!在樹莓派上運行DOS Jul 19, 2024 pm 05:23 PM

不同的CPU架構意味著在樹莓派上運行DOS並非唾手可得,但其實也沒多麻煩。 FreeDOS對大家來說也許並不陌生。它是一個完整、免費且對DOS相容良好的作業系統,它可以運行一些比較老舊的DOS遊戲或商用軟體,也可以開發嵌入式的應用。只要在MS-DOS上能夠運行的程序,在FreeDOS上都可以運行。身為FreeDOS的發起者和專案協調人員,許多使用者會把我當成內行人進行提問。而我最常被問到的問題是:「FreeDOS可以在樹莓派上運行嗎?」這個問題並不令人意外。畢竟Linux在樹莓派上能夠很好地運

See all articles