テストステ論

京大卒の高テス協会会長がテストステロンに関する情報をお届けします

device-mapperの仕組み 目次

device-mapperは, ブロック層の抽象化フレームワークです. 私が開発したdm-lc(Sorry, クローズド)は, このフレームワークプラグインとして実装されています. device-mapperを利用する(使い倒す)ことによって, dm-lcのような複雑な制御を行うキャッシュソフトウェアも, 極めてシンプルに実装することが可能となります. device-mapperは, もはやLinux運用に欠かせないツールとなったLVM(Logical Volume Manager)を始め, 様々なところで活躍していますがしかし, その実態が広く知れ渡っているわけではありません.

このシリーズでは, 私が, device-mapperの仕組みについて説明します. device-mapperは非常に柔軟なフレームワークであり, その力は計り知れません. upstreamに取り込まれているメジャーなプラグイン(ソフトウェアRAIDなど)の他にも, dm-lcやflashcache(Facebook)のようなキャッシュソフトウェアを始め, dm-green(ストレージの階層制御, 消費電力の観点から), dm-iobandのようなユニークなプラグインが存在し, あなたのユニークな閃きをコードとして表現することが待ち望まれています. このシリーズが, 人類の新たな突破口にならんことを願っています.

本シリーズは, 以下のような構成を予定しています. dm_targetを構成するメンバ関数がどのような処理を行なっているか, コードを掘り下げて説明していきます.

  1. device-mapperの仕組み (1) device-mapperの概要 - テストステ論
  2. device-mapperの仕組み (2) I/Oの概要 - テストステ論
  3. device-mapperの仕組み (3) dm_requestからの流れ - テストステ論
  4. device-mapperの仕組み (4) endioの仕組み - テストステ論
  5. device-mapperの仕組み (5) dm_ioでI/Oを簡単に発行しよう! - テストステ論
  6. device-mapperの仕組み (6) dm_ioで同期I/O。デッドロックに気をつけて! - テストステ論