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
250
Linuxの色々なブロックデバイス
以下動画のテキストです。
https://youtu.be/bEogvqKvoIQ
Satoru Takeuchi
PRO
April 27, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
260
俺とキャンプ2
sat
PRO
1
98
俺とキャンプ3
sat
PRO
0
84
データ冗長化のしくみRAID 基礎概念とRAID1編
sat
PRO
2
30
RAIDの実現方法
sat
PRO
2
65
Linux環境のCPU上で10ミリ秒間に起こること
sat
PRO
3
110
HDDへのアクセス速度は位置によって変わる!??
sat
PRO
4
54
ボリュームマネージャLVM
sat
PRO
2
88
Best Practices of Production-Grade Rook/Ceph Cluster
sat
PRO
1
2k
Other Decks in Technology
See All in Technology
生成AIの変革の時代に、直近1年で直面した課題とその解決策
ktc_wada
0
310
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
170
現代CSSフレームワークの内部実装とその仕組み
poteboy
7
3.6k
VS CodeでAWSを操作しよう
smt7174
8
1.7k
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
3
310
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
3
570
プロンプトエンジニアリングでがんばらない-Agentic Workflow へ-近藤憲児
kenjikondobai
3
850
Azure犬駆動開発の記録/GlobalAzureFukuoka2024_20240420
nina01
1
220
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
380
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
530
MapLibreとAmazon Location Service
dayjournal
1
160
APIファーストなプロダクトマネジメントの実践 〜SaaSus Platformでの例〜 / "Practicing API-First Product Management - An Example with SaaSus Platform
oztick139
0
110
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
BBQ
matthewcrist
80
8.8k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Web development in the modern age
philhawksworth
202
10k
Producing Creativity
orderedlist
PRO
337
39k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Building an army of robots
kneath
300
41k
Done Done
chrislema
178
15k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
78
43k
Web Components: a chance to create the future
zenorocha
305
41k
Six Lessons from altMBA
skipperchong
21
3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
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. 切り出し