Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxの色々なブロックデバイス
Search
Satoru Takeuchi
PRO
April 27, 2023
Technology
0
420
Linuxの色々なブロックデバイス
以下動画のテキストです。
https://youtu.be/bEogvqKvoIQ
Satoru Takeuchi
PRO
April 27, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
デバイスにアクセスするデバイスファイル
sat
PRO
1
20
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
16
デバイスドライバ
sat
PRO
0
21
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
56
共有メモリ
sat
PRO
3
47
マルチスレッドプログラム
sat
PRO
3
40
Linuxのブートプロセス initramfs編
sat
PRO
2
51
Linuxのブートプロセス
sat
PRO
6
160
シェルのジョブ
sat
PRO
1
32
Other Decks in Technology
See All in Technology
バクラクの認証基盤の成長と現在地 / bakuraku-authn-platform
convto
4
880
Microsoft Fabric vs Databricks vs (Snowflake) -若手エンジニアがそれぞれの強みと違いを比較してみた- "A Young Engineer's Comparison of Their Strengths and Differences"
reireireijinjin6
1
130
LLM アプリケーションのためのクラウドセキュリティ - CSPM の実装ポイント-
osakatechlab
0
140
OPENLOGI Company Profile for engineer
hr01
1
25k
更新系と状態
uhyo
8
2.2k
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
570
Simplify! 10 ways to reduce complexity in software development
ufried
1
190
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
2
450
AI 코딩 에이전트 더 똑똑하게 쓰기
nacyot
0
460
2025-04-24 "Manga AI Understanding & Localization" Furukawa Arata (CyberAgent, Inc)
ornew
2
320
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
380
白金鉱業Meetup_Vol.18_AIエージェント時代のUI/UX設計
brainpadpr
1
270
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
The Invisible Side of Design
smashingmag
299
50k
4 Signs Your Business is Dying
shpigford
183
22k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
590
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
For a Future-Friendly Web
brad_frost
177
9.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Fireside Chat
paigeccino
37
3.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Transcript
Linuxの色々なブロックデバイス Apr. 27th, 2023 Satoru Takeuchi twitter: satoru_takeuchi
はじめに • ブロックデバイスとは ◦ ブロック単位でデータを読み書きする (最小単位は通常512バイト) ◦ 「デバイス内のオフセット XX番からYYバイト読み出す」のようにランダムアクセス可能 •
一般的にはHDDやSSDのようなディスクデバイスだと思えばいい ◦ /dev/sdaとか/dev/nvme0n1とか • それ以外にもいろいろな種類のブロックデバイスがある • よく使われるものからマイナーなものまでいろいろ紹介
物理ディスク • HDD, SSD, NVMe SSD… /dev/sdX ユーザ空間 カーネル空間 物理世界
/dev/nvmeXnY SCSIディスク /dev/hdX IDEディスク NVMe SSD
仮想ディスク • VM上に存在する特殊なディスク • /dev/vdXという名前 • 高速化のためにVMとホストOSとの間で特殊な通信をしている ユーザ空間 (VM) カーネル空間
(VM) カーネル空間 (ホスト) /dev/vdX むずかしい しくみ
ループデバイス • /dev/loopXという名前 • ファイルをデバイスとして扱うために使う • “mount test.iso /mnt”などによるisoイメージのマウントでは裏でloopデバイスを使 う
/dev/loopX ファイルシステム ファイル ユーザ空間 カーネル空間 物理世界
brd • RAMの一部をブロックデバイスとして扱う • /dev/ramXという名前 /dev/ramX RAM ユーザ空間 カーネル空間 物理世界
nbd • ネットワークブロックデバイス • /dev/ndbXという名前 • ネットワーク上の任意のデータをブロックデバイスとして見せられる ユーザ空間 カーネル空間 物理世界
ネットワーク層 NIC /dev/nbdX なんらかのもの
rbd • 分散ストレージCephのブロックデバイス • /dev/rbdXという名前 ユーザ空間 カーネル空間 物理世界 ネットワーク層 NIC
/dev/rbdX Cephクラスタ ディスクイメージ CephのRBDドライバ
multiple devices • 複数のブロックデバイスから1つのブロックデバイスを構成 • /dev/mdXという名前 • RAID(mdraid)やmultipath deviceを実現 ユーザ空間
カーネル空間 /dev/sdX /dev/sdY multiple device(md)層 /dev/mdX /dev/sdaと/dev/sdbから 構成されるRAID1デバイス (2) 作る 物理世界 ディスク ディスク (1) 束ねる
device mapper • 任意のものをブロックデバイスとして見せるしくみ • /dev/dmXという名前 • 以後のページではdevice mapperを利用したさまざまなデバイスを紹介 ユーザ空間
カーネル空間 /dev/dm-X device mapper(dm)層 この先はなんでもいい
device mapper: dm-raid • 複数のデバイスから成るRAID構成のブロックデバイスを生成 • mdraidと混同しがちだが別物 ユーザ空間 カーネル空間 /dev/sdX
/dev/sdY device mapper(dm)層 /dev/dm-X /dev/sdXと/dev/sdYから 構成されるRAID1デバイス (2) 作る 物理世界 ディスク ディスク (1) 束ねる
device mapper: dm-linear • 様々なブロックデバイスの様々な範囲をリニアマップできる • たとえばJBODのようなことをできる • 200GiBのブロックデバイス •
オフセット < 100GiB: sdXへアクセス • オフセット >= 100GiB: sdYへアクセス ユーザ空間 カーネル空間 /dev/sdX /dev/sdY multiple device(md)層 /dev/mdX (2) 作る 物理世界 ディスク ディスク (1) 束ねる
device mapper: dm-flakey • 指定したデバイスにリニアマップされたブロックデバイスを生成 • 所定の条件でEIOを返すようにできる(疑似的にエラーを起こせる) • 基本的にはsdXにそのままアクセス •
所定の条件を満たすと EIOを返す ユーザ空間 カーネル空間 /dev/sdX multiple device(md)層 /dev/mdX (2) 作る 物理世界 ディスク (1) 組み込む
LVM(Logical Volume Manager) • ボリューム管理ツール • device mapperの仕組みを利用 • 3つの概念が存在
◦ PV(Physical Volume): 後述のVGを構成する1つ以上のブロックデバイス ◦ VG(Volume Group): PVを束ねて作るボリュームグループ。ストレージプールを構成 ◦ LV(Logical Volume): VGから好きなサイズを切り出せる ▪ それぞれ/dev/<vg名>/<lv名>という名前がつく • 特徴 ◦ 無停止のVG/LV拡張/縮小 ◦ RAID組める ◦ snapshot /dev/sdX /dev/sdY /dev/sdZ VG PV LV LV
lvmthin • シンプロビジョニングされたLVM logical volume a. ディスク利用効率が高い b. snapshotがLVMより優れている(通常のLVのsnapshotは採取後のI/O性能が大きく劣化) •
LVMとdm-thinというdevice mapperの合わせ技 • しくみ 1. VGの上にthin poolと呼ばれる特別なLVを作る 2. thin pool内にthin volume(mdデバイス)を作る 3. thin volumeにアクセスされたらthin pool上のデータへのアクセスに変換 VG LV(thinpool) LV(thin volume) LV(thin volume) 1. 切り出し 2. 切り出し