ホームページ > php教程 > PHP开发 > Linux システムカーネルのデバイスマッパーメカニズム (1) (5)

Linux システムカーネルのデバイスマッパーメカニズム (1) (5)

黄舟
リリース: 2016-12-23 14:11:24
オリジナル
1203 人が閲覧しました

デバイス マッパーのユーザー スペース部分は、開発者が独自のストレージ管理ツールを実装するためのオプションです。実際、LVM2、dmraid、その他のツールなどの一般的な論理ボリューム マネージャーの多くは、デバイス マッパーによって提供されるデバイスを使用します。マッパー ユーザー スペース ライブラリは、独自の管理ニーズに基づいて独立した管理ツールのセットを確立しますが、IBM のオープン ソース プロジェクトのエンタープライズ レベルの論理ボリューム管理システム (EVMS) でさえ、その実装でデバイスを使用しません。マッパーのユーザー空間ライブラリは、カーネル内の ioctl 定義に完全に基づいて独自の関数ライブラリを実装します。

ターゲット ドライバー

デバイス マッパーは、ユーザーがターゲット ドライバー プラグインを通じて実際のニーズに応じて独自の IO 処理ルールを指定できる統合アーキテクチャを提供します。そのため、ターゲット ドライバーはデバイス マッパーの柔軟性を完全に体現しています。上記では、ターゲット ドライバーについて何度も言及し、ターゲット ドライバーの機能について説明しました。ここでは、最も単純な線形ターゲット ドライバーを使用して、ターゲット ドライバーの実装を詳しく紹介します。

ターゲット ドライバーは主に IO リクエストの処理ルールを定義します。デバイス マッパーでは、ターゲット ドライバーの動作用に統一されたインターフェイスが定義されています。実装では、インターフェイスは前述の target_type 構造体によって定義されます。以下のターゲット ドライバーのメソッド:

2. ターゲット デバイスの削除方法

4. ターゲットの IO リクエストの終了方法。 5. ターゲットデバイスの読み取りと書き込みを一時停止する方法

7. ターゲットデバイスの現在のステータスを取得するためのメソッド。

ユーザーは、特定のニーズに応じて上記のメソッドを選択的に実装できますが、一般的には少なくとも最初の 3 つのメソッドを実装する必要があります。そうしないと、デバイス マッパーの下で適切に動作しません。リニア ターゲット ドライバーは、最初の 3 つのメソッドとメソッド 7 のみを実装します。これは、論理アドレス空間から物理アドレス空間への線形マッピングを完了し、図 4 に示すように、複数の物理デバイスを線形に接続することによって論理デバイスを形成できます。 、/dev/sda、/dev/sdb、/dev/sdc の 3 つの連続したスペースは、リニア ターゲット ドライバーを通じて大きな論理ブロック デバイスに形成されます。 Linear ターゲットの実装は非常に簡単で、次のコードに示すように、その作成メソッドと削除メソッドは主に、リニア ターゲット デバイスで使用される構造を記述するメモリ リソースの適用と解放を完了します。

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;

}
ログイン後にコピー

マッピング方法は、論理デバイスにマップされたデバイスに送信されたバイオ リクエストは、コードに示されているように、マッピング関係に従って線形ターゲット デバイスによって表される物理デバイスの対応する場所に線形にリダイレクトされます。具体的な実装方法は、bioのbi_bdevデバイスポインタをターゲットデバイスに対応するように変更し、ターゲットデバイスの開始アドレスとbioのオフセット値に基づいてIOリクエストが開始されるセクタ番号bi_sectorを変更することです。マップされたデバイス device 上でリクエストを実行し、IO リクエストのリダイレクトを完了します。他のターゲット ドライバーの実装も同様で、デバイス マッパーによって定義されたインターフェイス仕様に従って実装し、必要な機能を組み合わせることができます。興味のある読者は、ここでは個別のターゲット ドライバーのコードを参照してください。カーネル内で。

(T114)

上記は、Linux システム カーネルのデバイス マッパー メカニズム (1) (5) の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート