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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoru Takeuchi
PRO
April 27, 2023
Technology
0
470
Linuxの色々なブロックデバイス
以下動画のテキストです。
https://youtu.be/bEogvqKvoIQ
Satoru Takeuchi
PRO
April 27, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
書籍執筆での生成AIの活用
sat
PRO
1
290
ChatGPTに従って体調管理2026
sat
PRO
0
150
eBPF
sat
PRO
1
110
waruiBPF
sat
PRO
0
110
eBPFとwaruiBPF
sat
PRO
5
3.8k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
100
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
200
様々なファイルシステム
sat
PRO
0
340
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
430
Other Decks in Technology
See All in Technology
Webhook best practices for rock solid and resilient deployments
glaforge
1
290
Digitization部 紹介資料
sansan33
PRO
1
6.8k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
390
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
150
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
Context Engineeringの取り組み
nutslove
0
350
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
620
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
420
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
570
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
210
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
53
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
ラッコキーワード サービス紹介資料
rakko
1
2.3M
Building Flexible Design Systems
yeseniaperezcruz
330
40k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Technical Leadership for Architectural Decision Making
baasie
1
240
How GitHub (no longer) Works
holman
316
140k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
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. 切り出し