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

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

黄舟
發布: 2016-12-23 14:10:03
原創
1364 人瀏覽過

用戶空間部分

Device mapper在用戶空間相對簡單,主要包括device mapper庫和dmsetup工具。 Device mapper函式庫就是ioctl、使用者空間建立刪除device mapper邏輯裝置所需必要操作的封裝,dmsetup是一個提供給使用者直接可用的建立刪除device mapper裝置的命令列工具。因為它們的功能和流程相對簡單,在本文中對它們的細節就不介紹了,用戶空間主要負責如下工作:

1、 發現每個mapped device相關的target device;

2、 根據配置資訊創建映射表;

3、 將用戶空間建構好的映射表傳入內核,讓內核建構該mapped device對應的dm_table結構;

4、 保存目前的映射訊息,以便未來重新建構。

以下我們主要透過實例來說明dmsetup的使用,同時進一步說明device mapper這種映射機制。使用者空間中最主要的工作就是建構並保存映射表,以下給出一些映射表的例子:

1)
0 1024 linear /dev/sda 204
1024 512 linear /dev/sdb 766

1536 128 linear /dev/sdc 0 
2) 0 2048 striped 2 64 /dev/sda 1024 /dev/sdb 0

3) 0 4711 mirror core 2 64 nosync 2 /dev/sda 2048 /dev/sdb 1024
登入後複製

例子1中將邏輯設備0~1023扇區、1024~1535扇區以及1536~1663三個地址範圍分別以線形對應的方式對應到/dev/sda裝置第204號磁區、/dev/sdb裝置第766號磁區和/dev/sdc裝置的第0號磁區開始的區域。

例子2中將邏輯設備從0號扇區開始的,長度為2048個扇區的段以條帶的方式映射的到/dev/sda設備的第1024號扇區以及/dev/sdb設備的第0號扇區開始的區域。同時告訴內核這個條帶類型的target driver存在2個條帶設備與邏輯設備做映射,並且條帶的大小是64個扇區,使得驅動可以該值來拆分跨設備的IO請求。

例子3中將邏輯設備從0號扇區開始的,長度為4711個扇區的段以鏡像的方式映射到/dev/sda設備的第2048個扇區以及/dev/sdb設備的第1024號扇區開始的區域。

映射表確定後,建立、刪除邏輯設備的操作就相對簡單,透過dmsetup如下指令就可以完成對應的操作。

dmsetup create 设备名 映射表文件 /* 根据指定的映射表创建一个逻辑设备 */

dmsetup reload 设备名 映射表文件 /* 为指定设备从磁盘中读取映射文件,重新构建映射关系 */

dmsetup remove 设备名 /* 删除指定的逻辑设备 */
登入後複製

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

圖4 根據範例1中映射表在內核中建立的邏輯設備

當用戶空間根據映射表下達創建邏輯設備命令後,device mapper在內核中就根據傳入的參數和映射關係建立邏輯位址到物理位址的映射關係。根據映射表範例1中的映射關係建立的設備如圖4所示,圖中的下半部就抽像地描繪出了依照該映射表在內核中建立的邏輯位址到物理位址的映射關係。

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


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板