10分で分かるLinuxブロックレイヤ
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

10分で分かるLinuxブロックレイヤ

on

  • 7,798 views

 

Statistics

Views

Total Views
7,798
Views on SlideShare
7,632
Embed Views
166

Actions

Likes
18
Downloads
68
Comments
0

3 Embeds 166

https://twitter.com 81
http://www.scoop.it 61
http://www.slideee.com 24

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

10分で分かるLinuxブロックレイヤ Presentation Transcript

  • 1. 10分で分かる Linuxブロックレイヤ 星野  喬 サイボウズ・ラボ 2014-01-30
  • 2. 内容 •  Linux ブロックレイヤ俯瞰 –  IO スケジューラ –  デバイスドライバインターフェース –  IO インターフェース •  ⾼高度度な機能 –  md, dm, DRBD, 他 •  最近の話題 2
  • 3. Linux ブロックレイヤ俯瞰 VFS ディスクキャッシュ ディスク ファイル システム ディスク ファイル システム ブロック デバイス ファイル マッピングレイヤ 汎⽤用ブロック層 IOスケジューラ層 ブロック型デバイスドライバ ブロック型デバイスドライバ HDD HDD 出典:  詳解LINUXカーネル第3版7章 3
  • 4. IO スケジューラ •  IO リクエストを並べ変える •  種類(kernel 3.13) –  noop –  cfq (プロセスに対して公平) –  deadline (レイテンシ重視) •  ⽣生 HDD に対しては効果が⼤大きい •  むしろ邪魔になることもある 4
  • 5. ブロックデバイスドライバのインターフェース •  bio interface –  全て⾃自分で⾯面倒を⾒見見なければならない •  reqeust-queue (single) interface –  IOスケジューラの恩恵を受けられる –  システムで  1  つしかキューがないので ボトルネックに •  request-queue (multi) interface –  昨今の⾼高速デバイス/マルチコアシステム⽤用 –  Kernel 3.13 or later 5
  • 6. Single-queue vs Multi-queue Single-queue Multi-queue 出典: Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems 6
  • 7. IO インターフェース (投げる側) void generic_make_request(struct bio *bio); •  bio の中⾝身(抜粋) –  データバッファ –  read or write フラグ –  その他フラグ •  FLUSH: 直前までの全 write IO の永続化を保証 •  FUA:  当該 IO の永続化を保証 •  DISCARD: SSD などの trim/unmap ⽤用のフラグ –  bi_end_io: IO 完了了時に呼ばれるコールバック 7
  • 8. IO インターフェース  (投げられる側) void make_request(struct request_queue *q, struct bio *bio); •  bio interface 使⽤用時のコールバック –  q 内のデータを使ってデバイスを特定し, IO に必要な処理理を実⾏行行 –  make_request() は並列列に呼ばれる可能性も –  IO が完了了したら  bio_endio() を呼んでブロッ クレイヤに伝える 8
  • 9. md (multiple devices) •  機能 –  Software RAID (0,1,4,5,6,10) –  Multipath •  mdadm ツールで操作 9
  • 10. dm (device mapper) •  機能 –  仮想化 –  Snapshot (dm-snap) –  Thin-provisioning (dm-thinp) –  Software RAID (dm-raid, md を流流⽤用) –  暗号化(dm-crypt) •  LVM2 ツール他から操作 10
  • 11. DRBD •  ブロックデバイスレプリケーション ドライバ –  同期/⾮非同期モードのバリエーション –  Linbit 社が主に開発 •  DRBD Proxy –  遠隔レプリケーションには事実上必須 –  有償 –  ⼤大容量量バッファリングを実現 11
  • 12. 最近の話題 •  Atomic IO –  MySQL の double-write などが必要なくなる –  まだ汎⽤用ではない •  NVM (Non-volatile-memory) –  Block layer を使わないインターフェースを提案 –  ⾼高速な  flash memory などのため •  TPPS (Tiny Parallel Proportion Scheduler) –  cgoup + ⾼高速デバイス向け 12
  • 13. 最近の話題 –cont. •  dm-writeboost –  Write IO を⾼高速化するキャッシュ機構 –  WAL 使⽤用 –  開発中 •  WalB (⼿手前味噌) –  差分記録/取り出し⽤用のラッパーデバイス –  WAL 使⽤用 –  ver 1.0 13
  • 14. 参考⽂文献 •  詳解LINUXカーネル第3版 –  Daniel P. Bovet, Marco Cesati •  Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems –  Matias Bjørling, Jens Axboe, David Nellans, Philippe Bonnet •  Linux Weekly News –  http://lwn.net/ 14