デバイスマッパーは、Linuxカーネルが提供する、物理ブロックデバイスを高レベルの仮想ブロックデバイスにマッピングするためのフレームワークです。論理ボリュームマネージャー(LVM)、ソフトウェアRAID、dm-cryptディスク暗号化の基盤を形成し、ファイルシステムスナップショットなどの追加機能を提供します。[1]
デバイス マッパーは、デバイス マッパー自体が提供する仮想ブロック デバイスから別のブロック デバイスにデータを渡すことによって機能します。デバイス マッパーがディスクの暗号化や信頼性の低いハードウェア動作のシミュレーションを提供する場合など、移行中にデータを変更することもできます。
この記事ではLinuxカーネルのデバイスマッパーの実装に焦点を当てていますが、デバイスマッパー機能はNetBSDとDragonFly BSDの両方でも利用可能です。[2] [3]
使用法
新しいマップされたデバイスを作成する必要のあるアプリケーション( LVM2やエンタープライズボリューム管理システム(EVMS)など)は、libdevmapper.so 共有ライブラリを介してデバイスマッパーと通信し、共有ライブラリはデバイスノードにioctlを発行します。[4]デバイスマッパーの構成は、ユーティリティを使用して対話的に(またはシェルスクリプト から)確認および構成することもできます。[5] [6]/dev/mapper/control
これら2つのユーザー空間コンポーネントのソースコードはLVM2ソースコードと並行して管理されています。[7]
特徴

デバイス マッパーが提供する機能には、線形、ストライプ、エラーマッピングのほか、暗号化ターゲットやマルチパスターゲットなどがあります。たとえば、2 つのディスクを、各ディスクに 1 つずつ線形マッピング のペアを使用して 1 つの論理ボリュームに連結できます。別の例として、暗号化ターゲットは、Linux カーネルのCrypto API を使用して、指定されたデバイスを通過するデータを暗号化します。[1]
2014年現在[アップデート]、以下のマッピングターゲットが利用可能です: [1] [5]
- キャッシュ -ソリッドステートドライブ(SSD) をハードディスクドライブ(HDD)のキャッシュとして使用することで、ハイブリッドボリュームの作成を可能にします。
- clone – 転送が完了する前に使用を許可します。
- crypt – LinuxカーネルのCrypto APIを使用してデータの暗号化を提供します。
- 遅延 – 異なるデバイスへの読み取りや書き込みを遅延します (テストに使用)
- era – リニアターゲットと同様の動作をしますが、ユーザーが定義した期間内に書き込まれたブロックを追跡します[9]
- error – マップされたすべてのブロックの I/O エラーをシミュレートします (テストに使用)
- flakey – 周期的な信頼性の低い動作をシミュレートします(テストに使用)
- 線形 – 連続したブロック範囲を別のブロックデバイスにマッピングします
- ミラー –データの冗長性を提供しながら、ミラー化された論理デバイスをマップします
- マルチパス–パスグループの使用を通じて、マルチパスデバイス のマッピングをサポートします
- raid – LinuxカーネルのソフトウェアRAIDドライバ(md) へのインターフェースを提供します。
- snapshotとsnapshot-origin – 基盤となるコピーオンライト方式の一部として LVM スナップショットの作成に使用されます。
- ストライプ – ストライプの数とストライプのチャンクサイズをパラメータとして、物理デバイス間でデータをストライプ化します。
- 薄い – 基礎となる物理デバイスよりも大きなデバイスの作成が可能で、物理スペースは書き込み時にのみ割り当てられます。
- ゼロ – と同等で
/dev/zero、すべての読み取りはゼロのブロックを返し、書き込みは破棄されます。
アプリケーション
デバイス マッパー上に構築された Linux カーネルの機能とプロジェクトには、次のものがあります。
- cryptsetup – dm-crypt に基づくディスク暗号化を簡単に設定するためのユーティリティ
- dm-crypt / LUKS – ボリューム暗号化を提供するマッピングターゲット
- dm-cache –ハイブリッドボリューム の作成を可能にするマッピングターゲット
- dm-integrity –チェックサムまたは暗号検証のいずれかを使用してデータの整合性を提供するマッピングターゲット。 [10] [11] LUKSでも使用される[12]
- dm-log-writes – 2つのデバイスを使用するマッピングターゲット。最初のデバイスを通過し、2番目のデバイスで実行された書き込み操作をログに記録します[13]
- dm-verity – ファイルシステムに含まれるデータブロックを暗号化ハッシュ値のリストと照合して検証する。ChromiumOSプロジェクトの一環として開発された[ 14 ]
- –デバイスマッパーを介して「偽の」RAID構成へのアクセスを提供します
- DM マルチパス – Linux カーネル内でブロック デバイスの I/O フェイルオーバーと負荷分散を提供します。
- Docker – デバイスマッパーを使用してソフトウェアコンテナのコピーオンライトストレージを作成します
- DRBD (分散複製ブロックデバイス)
- EVMS (非推奨)
- – デバイスマップの作成と削除時にホットプラグから呼び出されるユーティリティ
- LVM2 – Linuxカーネルの論理ボリュームマネージャ
- VeraCrypt - TrueCryptの Linux バージョン
- VDO - 仮想データオプティマイザー
参考文献
- ^ abc 「論理ボリュームマネージャの管理、付録 A. デバイスマッパー」。Red Hat。2013年 9 月 29 日閲覧。
- ^ 「NetBSD カーネルインターフェースマニュアル: dm(4)」。netbsd.gw.com。2008-08-30。2014-07-19 にオリジナルからアーカイブ。2015-01-25に閲覧。
- ^ 「DragonFly オンラインマニュアルページ: dm(4)」. dragonflybsd.org . 2010-07-28 . 2014-06-06閲覧。
- ^ "libdevmapper.h". sourceware.org . 2013年9月29日閲覧。[永久リンク切れ ]
- ^ ab "dmsetup(8) - Linux manページ". man.cx . 2013年10月22日閲覧。
- ^ 「論理ボリュームマネージャの管理」。付録 A.2. dmsetup コマンド。Red Hat。2013年 9 月 29 日閲覧。
- ^ 「Device-mapper リソース ページ」。sourceware.org。2013年 9 月 29 日閲覧。
- ^ ヴェルナー・フィッシャー;ゲオルグ・シェーンベルガー (2015-06-01)。 「Linux ストレージ スタック図」。 Thomas-Krenn.AG 。2015 年 6 月 8 日に取得。
- ^ 「6. ブロック層」。Linuxカーネル3.15。kernelnewbies.org。2014年6月8日。 2014年6月15日閲覧。
- ^ "dm-integrity". cryptosetup プロジェクト. 2018-04-30 . 2018-05-08に閲覧。
- ^ 「dm-integrity target」. kernel.org 2017-05-13 . 2018-05-08閲覧。
- ^ 「cryptsetup - プレーンな dm-crypt および LUKS で暗号化されたボリュームを管理する」。2018 年 1 月 1 日。2018年 5 月 8 日閲覧。
- ^ 「Linux カーネルドキュメント: Documentation/device-mapper/log-writes.txt」. kernel.org . 2015-05-29 . 2015-10-13閲覧。
- ^ Jonathan Corbet (2011-09-19). 「dm-verity」. LWN.net . 2015年10月13日閲覧。
外部リンク
- Red Hat のデバイス マッパー ホーム 2006-03-15 にWayback Machineでアーカイブ
- 「自分のデバイスを使用する権利」。Linux Gazette。2005年 5 月。 – さまざまなデバイスマッパーターゲットの使用方法を説明する記事
- さまざまな RAID メタデータ形式を使用してソフトウェア RAID を設定するためのユーザー空間ツール
- デバイス マッパーのマルチパス サポート、LWN.net、2005 年 2 月 23 日、Jonathan Corbet 著
