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
400
Linuxの色々なブロックデバイス
以下動画のテキストです。
https://youtu.be/bEogvqKvoIQ
Satoru Takeuchi
PRO
April 27, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Linuxのブートプロセス
sat
PRO
2
25
シェルのジョブ
sat
PRO
1
20
常駐サービスを実現するデーモンプロセス
sat
PRO
0
24
絶対殺すSIGKILLシグナルと絶対死なないプロセス
sat
PRO
3
80
シェルのセッション
sat
PRO
2
31
RubyでKubernetesプログラミング
sat
PRO
4
180
プロセスの生成 exec編
sat
PRO
1
40
プロセスの生成 fork&exec編
sat
PRO
0
36
プロセスの生成 コピーオンライトを使ったfork編
sat
PRO
0
35
Other Decks in Technology
See All in Technology
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
130
CDKのコードを書く環境を作りました with Amazon Q
nobuhitomorioka
1
160
Windows の新しい管理者保護モード
murachiakira
0
200
日経のデータベース事業とElasticsearch
hinatades
PRO
0
210
LINE NEWSにおけるバックエンド開発
lycorptech_jp
PRO
0
190
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
190
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
120
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.3k
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
260
コンテナサプライチェーンセキュリティ
kyohmizu
1
130
EDRの検知の仕組みと検知回避について
chayakonanaika
11
4.5k
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
8
2.1k
Featured
See All Featured
Designing for Performance
lara
604
68k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
570
BBQ
matthewcrist
87
9.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Automating Front-end Workflow
addyosmani
1368
200k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
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. 切り出し