$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxの色々なブロックデバイス
Search
Satoru Takeuchi
PRO
April 27, 2023
Technology
0
460
Linuxの色々なブロックデバイス
以下動画のテキストです。
https://youtu.be/bEogvqKvoIQ
Satoru Takeuchi
PRO
April 27, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
93
waruiBPF
sat
PRO
0
87
eBPFとwaruiBPF
sat
PRO
4
2.6k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
87
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
170
様々なファイルシステム
sat
PRO
0
320
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
410
ソースを読むプロセスの例
sat
PRO
22
17k
メモリマップトファイル
sat
PRO
1
160
Other Decks in Technology
See All in Technology
文字列の並び順 / Unicode Collation
tmtms
3
610
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
0
170
Databricks向けJupyter Kernelでデータサイエンティストの開発環境をAI-Readyにする / Data+AI World Tour Tokyo After Party
genda
1
560
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
420
学習データって増やせばいいんですか?
ftakahashi
2
500
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
110
20251219 OpenIDファウンデーション・ジャパン紹介 / OpenID Foundation Japan Intro
oidfj
0
160
.NET 10の概要
tomokusaba
0
120
WordPress は終わったのか ~今のWordPress の制作手法ってなにがあんねん?~ / Is WordPress Over? How We Build with WordPress Today
tbshiki
2
820
Power of Kiro : あなたの㌔はパワステ搭載ですか?
r3_yamauchi
PRO
0
180
チーリンについて
hirotomotaguchi
6
2.1k
SREには開発組織全体で向き合う
koh_naga
0
380
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
160
My Coaching Mixtape
mlcsv
0
6
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
85
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
70
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
We Have a Design System, Now What?
morganepeng
54
7.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1k
Claude Code のすすめ
schroneko
65
200k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Unsuck your backbone
ammeep
671
58k
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. 切り出し