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
March 19, 2023
Technology
8
3.6k
Linuxのブロックデバイス
Linuxのいろいろなブロックデバイスを紹介した資料です
Satoru Takeuchi
PRO
March 19, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Rook: Intro and Deep Dive With Ceph
sat
PRO
0
86
会社員しながら本を書いてきた知見の共有
sat
PRO
3
770
デバイスにアクセスするデバイスファイル
sat
PRO
1
32
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
28
デバイスドライバ
sat
PRO
0
45
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
110
共有メモリ
sat
PRO
3
66
マルチスレッドプログラム
sat
PRO
3
55
Linuxのブートプロセス initramfs編
sat
PRO
2
76
Other Decks in Technology
See All in Technology
実践! AIエージェント導入記
1mono2prod
0
140
In Praise of "Normal" Engineers (LDX3)
charity
3
1.2k
A2Aのクライアントを自作する
rynsuke
1
150
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
150
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
10
2.9k
データプラットフォーム技術におけるメダリオンアーキテクチャという考え方/DataPlatformWithMedallionArchitecture
smdmts
5
570
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
2
150
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
200
_第3回__AIxIoTビジネス共創ラボ紹介資料_20250617.pdf
iotcomjpadmin
0
140
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
130
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
210
本部長の代わりに提案書レビュー! KDDI営業が毎日使うAIエージェント「A-BOSS」開発秘話
minorun365
PRO
14
2.3k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
160
23k
The Pragmatic Product Professional
lauravandoore
35
6.7k
4 Signs Your Business is Dying
shpigford
184
22k
KATA
mclloyd
29
14k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
How STYLIGHT went responsive
nonsquared
100
5.6k
What's in a price? How to price your products and services
michaelherold
245
12k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Building an army of robots
kneath
306
45k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Transcript
Linuxのブロックデバイス kanazawa.rb #127 LT Satoru Takeuchi twitter: satoru_takeuchi
Linuxのブロックデバイス • 以下の特徴を持つデバイスのこと ◦ ブロック単位でデータを読み書きする (最小単位は通常512バイト) ◦ 「デバイス内のオフセット XX番からYYバイト読み出す」のようにランダムアクセス可能 •
一般的にはHDDやSSDのようなディスクデバイスだと思えばいい • 2つのコンポーネントが処理する ◦ ブロック層: 全ブロックデバイスに共通の処理 ◦ デバイスドライバ: 個々のデバイスに固有の処理
ユーザから見える部分との関係 ユーザ空間 カーネル空間 /dev/sda デバイスファイル ファイルシステム /dev/sdb プロセス 読み書き 読み書き
ファイル ファイルシステム ブロック層 デバイスドライバ 物理世界 デバイスA デバイスB 対応 対応
ブロック層がやること • ユーザ or ファイルシステムから依頼されたI/Oを効率的にデバイスに発行 ◦ ハードウェアの特性を考慮して I/O発行前にI/Oの並び替えやマージを行う • 先読み(readahead)
◦ ある領域へのreadが発生したら、それに続く領域も先読みする ◦ ある領域へのアクセス発生直後に近い領域へアクセスされる傾向にあるという経験則を利用
ブロックデバイスの種類(1/4) • 物理ディスク ◦ HDDやSSDのようなディスク ◦ /dev/sdX(SCSIデバイス)、/dev/hdX(IDEデバイス), /dev/nvmeX(NVMe SSD)という名前 ▪
iSCSIターゲットも/dev/sdXとして見える • 仮想ディスク ◦ VM上に存在する特殊なディスク ◦ /dev/vdXという名前 ◦ 実体はホストOS上のファイルイメージやディスク ◦ 高速化のためにVMとホストOSとの間で特殊な通信をしている
ブロックデバイスの種類(2/4) • ループデバイス ◦ /dev/loopXという名前 ◦ ファイルをデバイスとして扱うために使う ◦ “mount test.iso
/mnt”などによるisoイメージのマウントでは裏で loopデバイスを使う • brd ◦ マシンのメモリの一部をデバイスとして見せる ◦ /dev/ramXという名前 /dev/loop0 ファイルシステム ファイル 対応 ユーザ空間 カーネル空間 物理世界 RAM(の一部) /dev/ram0 対応
ブロックデバイスの種類(3/4) • 分散ストレージCephのブロックデバイス ◦ /dev/rbdXという名前 • ネットワークブロックデバイス ◦ /dev/ndbXという名前 ◦
ネットワーク上の任意のデータをブロックデバイスとして見せられる ユーザ空間 カーネル空間 物理世界 ネットワーク層 NIC /dev/rbd0 Cephクラスタ ディスクイメージ 対応
ブロックデバイスの種類(4/4) • multiple device ◦ 複数のブロックデバイスから 1つのブロックデバイスを構成 ◦ /dev/mdXという名前 ◦
RAID(mdraid)やmultipath deviceを実現 • device mapper ◦ 任意のものをブロックデバイスとして見せるしくみ ◦ /dev/dmXという名前 ◦ 詳細は後述 ユーザ空間 カーネル空間 /dev/sda /dev/sdb multiple device(md)層 /dev/md0 (1)束ねる /dev/sdaと/dev/sdbから 構成されるRAID1デバイス (2) 作る
device mapperの諸機能: dm-raid • 複数のデバイスを指定すると、それらを使ってRAID構成のブロックデバイスを生成 • mdraidと似通っているが別物 ユーザ空間 カーネル空間 /dev/sda
/dev/sdb device mapper(dm)層 /dev/dm0 (1)束ねる (2) 作る /dev/sdaと/dev/sdbから 構成されるRAID1デバイス
device mapperの諸機能: dm-linear • 複数のデバイスを指定すると、それらを順番につなぎ合わせたブロックデバイスを 生成 • JBODのようなものと考えらればよい ユーザ空間 カーネル空間
/dev/sda (100GiB) /dev/sdb (100GiB) device mapper(dm)層 /dev/dm0 (1)束ねる (2) 作る /dev/sdaと/dev/sdbから構成される 200GiBのブロックデバイス オフセット100GiBより前へのアクセス: sdaへアクセス オフセット100GiB以降へのアクセス: sdbへアクセス
device mapperの諸機能: dm-flakey • 指定したデバイスにリニアマップされたブロックデバイスを生成 • 所定の条件でEIOを返すようにできる(疑似的にエラーを起こせる) ユーザ空間 カーネル空間 /dev/sda
device mapper(dm)層 /dev/dm0 (2) 作る アクセスすると基本的には sdaにそのままアクセス 所定の条件を満たすと EIOを返す (1) 指定
device mapperの諸機能: LVM • LVM(Logical Volume Manager, 論理ボリュームマネージャ) • ボリューム管理ツール
• 3つの概念が存在する ◦ PV(Physical Volume): 後述のVGを構成する1つ以上のブロックデバイス ◦ VG(Volume Group): PVを束ねて作るボリュームグループ。ストレージプールを構成 ◦ LV(Logical Volume): VGから好きなサイズを切り出せる ▪ それぞれmdXと名前が付いたブロックデバイス • 特徴 ◦ 無停止のVG/LV拡張/縮小 ◦ RAID組める ◦ snapshot /dev/sda /dev/sdb /dev/sdc VG PV LV LV
device mapperの諸機能: dm-thin • 特徴 a. ボリュームはシンプロビジョニング (実際にアクセスするまでディスク容量を消費しない )なのでディス ク利用効率が高い
b. snapshotがLVMより優れている(LVMのsnapshotは採取後のI/O性能が極めて悪い傾向にある ) • LVMの上に構築する • しくみ 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. 切り出し