SlideShare a Scribd company logo
2
Most read
3
Most read
6
Most read
10分で分かる
Linuxブロックレイヤ
星野  喬
サイボウズ・ラボ
2014-01-30
内容
•  Linux ブロックレイヤ俯瞰

–  IO スケジューラ
–  デバイスドライバインターフェース
–  IO インターフェース

•  ⾼高度度な機能

–  md, dm, DRBD, 他

•  最近の話題

2
Linux ブロックレイヤ俯瞰
VFS
ディスクキャッシュ
ディスク
ファイル
システム

ディスク
ファイル
システム

ブロック
デバイス
ファイル

マッピングレイヤ
汎⽤用ブロック層
IOスケジューラ層
ブロック型デバイスドライバ

ブロック型デバイスドライバ

HDD

HDD

出典:  詳解LINUXカーネル第3版7章

3
IO スケジューラ
•  IO リクエストを並べ変える
•  種類(kernel 3.13)
–  noop
–  cfq (プロセスに対して公平)
–  deadline (レイテンシ重視)

•  ⽣生 HDD に対しては効果が⼤大きい
•  むしろ邪魔になることもある
4
ブロックデバイスドライバのインターフェース

•  bio interface
–  全て⾃自分で⾯面倒を⾒見見なければならない

•  reqeust-queue (single) interface
–  IOスケジューラの恩恵を受けられる
–  システムで  1  つしかキューがないので
ボトルネックに

•  request-queue (multi) interface
–  昨今の⾼高速デバイス/マルチコアシステム⽤用
–  Kernel 3.13 or later
5
Single-queue vs Multi-queue
Single-queue

Multi-queue

出典: Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems 6
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
IO インターフェース  (投げられる側)
void make_request(struct request_queue *q,
struct bio *bio);

•  bio interface 使⽤用時のコールバック

–  q 内のデータを使ってデバイスを特定し,
IO に必要な処理理を実⾏行行
–  make_request() は並列列に呼ばれる可能性も
–  IO が完了了したら  bio_endio() を呼んでブロッ
クレイヤに伝える
8
md (multiple devices)
•  機能

–  Software RAID (0,1,4,5,6,10)
–  Multipath

•  mdadm ツールで操作

9
dm (device mapper)
•  機能

–  仮想化
–  Snapshot (dm-snap)
–  Thin-provisioning (dm-thinp)
–  Software RAID (dm-raid, md を流流⽤用)
–  暗号化(dm-crypt)

•  LVM2 ツール他から操作
10
DRBD
•  ブロックデバイスレプリケーション
ドライバ
–  同期/⾮非同期モードのバリエーション
–  Linbit 社が主に開発

•  DRBD Proxy
–  遠隔レプリケーションには事実上必須
–  有償
–  ⼤大容量量バッファリングを実現
11
最近の話題
•  Atomic IO
–  MySQL の double-write などが必要なくなる
–  まだ汎⽤用ではない

•  NVM (Non-volatile-memory)
–  Block layer を使わないインターフェースを提案
–  ⾼高速な  flash memory などのため

•  TPPS (Tiny Parallel Proportion Scheduler)
–  cgoup + ⾼高速デバイス向け
12
最近の話題 –cont.
•  dm-writeboost
–  Write IO を⾼高速化するキャッシュ機構
–  WAL 使⽤用
–  開発中

•  WalB (⼿手前味噌)
–  差分記録/取り出し⽤用のラッパーデバイス
–  WAL 使⽤用
–  ver 1.0
13
参考⽂文献
•  詳解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

More Related Content

PPTX
iostat await svctm の 見かた、考え方
PDF
CXL_説明_公開用.pdf
PDF
10GbE時代のネットワークI/O高速化
PPTX
ARM LinuxのMMUはわかりにくい
PDF
仮想化環境におけるパケットフォワーディング
PDF
20111015 勉強会 (PCIe / SR-IOV)
PDF
PG-REXで学ぶPacemaker運用の実例
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
iostat await svctm の 見かた、考え方
CXL_説明_公開用.pdf
10GbE時代のネットワークI/O高速化
ARM LinuxのMMUはわかりにくい
仮想化環境におけるパケットフォワーディング
20111015 勉強会 (PCIe / SR-IOV)
PG-REXで学ぶPacemaker運用の実例
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)

What's hot (20)

PDF
NEDIA_SNIA_CXL_講演資料.pdf
PDF
[KubeCon NA 2020] containerd: Rootless Containers 2020
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
PPTX
分散ストレージ技術Cephの最新情報
PDF
Dockerイメージ管理の内部構造
PDF
MySQLレプリケーションあれやこれや
PDF
Pacemaker 操作方法メモ
PDF
initramfsについて
PDF
OSC2011 Tokyo/Fall 濃いバナ(virtio)
PDF
Ethernetの受信処理
PDF
さいきんの InnoDB Adaptive Flushing (仮)
PDF
ゼロからはじめるKVM超入門
PDF
LinuxのFull ticklessを試してみた
PDF
Linux女子部 systemd徹底入門
PDF
Docker Compose 徹底解説
PDF
その ionice、ほんとに効いてますか?
PPTX
0円でできる自宅InfiniBandプログラム
PDF
re:Invent 2019 BPF Performance Analysis at Netflix
PDF
I/O仮想化最前線〜ネットワークI/Oを中心に〜
PDF
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
NEDIA_SNIA_CXL_講演資料.pdf
[KubeCon NA 2020] containerd: Rootless Containers 2020
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
分散ストレージ技術Cephの最新情報
Dockerイメージ管理の内部構造
MySQLレプリケーションあれやこれや
Pacemaker 操作方法メモ
initramfsについて
OSC2011 Tokyo/Fall 濃いバナ(virtio)
Ethernetの受信処理
さいきんの InnoDB Adaptive Flushing (仮)
ゼロからはじめるKVM超入門
LinuxのFull ticklessを試してみた
Linux女子部 systemd徹底入門
Docker Compose 徹底解説
その ionice、ほんとに効いてますか?
0円でできる自宅InfiniBandプログラム
re:Invent 2019 BPF Performance Analysis at Netflix
I/O仮想化最前線〜ネットワークI/Oを中心に〜
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
Ad

Similar to 10分で分かるLinuxブロックレイヤ (20)

PPTX
Cloud os techday_0614
PDF
先進的計算基盤システムシンポジウム SACSIS2009 Slide Suzaki
PDF
WalBの紹介
PDF
Osc2011 Do
PDF
Windows Azure で 2/29 に起こった問題のまとめ
PDF
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
PPTX
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
PDF
Windows Server 2012 のストレージ強化とエンタープライズへの活用
PDF
Osc2009 Do Xen Hara
PPT
Bsd suki
PPT
osoljp201105_ZFSjiman_nslope
PDF
Unixファイルシステムの歴史
PDF
Scalable Cooperative File Caching with RDMA-Based Directory Management
PDF
Kernel ext4
PDF
動画共有ツール
PDF
JellyBeanのソースをとりあえず眺めてみた(手抜き)
PDF
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
PDF
Spectre/Meltdownとその派生
PDF
#dnstudy 01 Unboundの紹介
PDF
ZFS on Linux @ZFS Day 2011.10
Cloud os techday_0614
先進的計算基盤システムシンポジウム SACSIS2009 Slide Suzaki
WalBの紹介
Osc2011 Do
Windows Azure で 2/29 に起こった問題のまとめ
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
Windows Server 2012 のストレージ強化とエンタープライズへの活用
Osc2009 Do Xen Hara
Bsd suki
osoljp201105_ZFSjiman_nslope
Unixファイルシステムの歴史
Scalable Cooperative File Caching with RDMA-Based Directory Management
Kernel ext4
動画共有ツール
JellyBeanのソースをとりあえず眺めてみた(手抜き)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
Spectre/Meltdownとその派生
#dnstudy 01 Unboundの紹介
ZFS on Linux @ZFS Day 2011.10
Ad

More from Takashi Hoshino (20)

PDF
Serializabilityとは何か
PDF
Isolation Level について
PDF
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
PDF
WalB Driver Internals
PDF
トランザクションの並行実行制御 rev.2
PDF
トランザクションの並行処理制御
PDF
Effective Modern C++ 勉強会#8 Item38
PDF
Effective Modern C++ 勉強会#6 Item25
PDF
Effective Modern C++ 勉強会#1 Item3,4
PDF
WALをバックアップとレプリケーションに使う方法
PDF
メモリより大きなデータの Sufix Array 構築方法の紹介
PDF
10分で分かるバックアップとレプリケーション
PDF
10分で分かるデータストレージ
PDF
Intel TSX 触ってみた 追加実験 (TTAS)
PDF
Intel TSX HLE を触ってみた x86opti
PDF
Suffix Array 構築方法の紹介
PDF
An Efficient Backup and Replication of Storage
PPTX
ログ先行書き込みを用いたストレージ差分取得の一手法
PDF
Intel TSX について x86opti
PDF
WalB: Block-level WAL. Concept.
Serializabilityとは何か
Isolation Level について
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
WalB Driver Internals
トランザクションの並行実行制御 rev.2
トランザクションの並行処理制御
Effective Modern C++ 勉強会#8 Item38
Effective Modern C++ 勉強会#6 Item25
Effective Modern C++ 勉強会#1 Item3,4
WALをバックアップとレプリケーションに使う方法
メモリより大きなデータの Sufix Array 構築方法の紹介
10分で分かるバックアップとレプリケーション
10分で分かるデータストレージ
Intel TSX 触ってみた 追加実験 (TTAS)
Intel TSX HLE を触ってみた x86opti
Suffix Array 構築方法の紹介
An Efficient Backup and Replication of Storage
ログ先行書き込みを用いたストレージ差分取得の一手法
Intel TSX について x86opti
WalB: Block-level WAL. Concept.

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