テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

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の概要 http://akiradeveloper.hatenadiary.com/entry/2013/05/11/220634
  2. I/Oの概要 http://akiradeveloper.hatenadiary.com/entry/2013/05/12/182629
  3. dm_requestからの流れ http://akiradeveloper.hatenadiary.com/entry/2013/05/14/220018
  4. endioの仕組み http://akiradeveloper.hatenadiary.com/entry/2013/05/16/213025
  5. dm_ioでI/Oを簡単に発行しよう! http://akiradeveloper.hatenadiary.com/entry/2013/05/18/132406
  6. dm_ioで同期I/O. デッドロックに気をつけて! http://akiradeveloper.hatenadiary.com/entry/2013/05/18/205610
  7. .iterate_devices
  8. .merge
  9. .message and .status