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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoru Takeuchi
PRO
March 19, 2023
Technology
9
4.2k
Linuxのブロックデバイス
Linuxのいろいろなブロックデバイスを紹介した資料です
Satoru Takeuchi
PRO
March 19, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
書籍執筆での生成AIの活用
sat
PRO
1
270
ChatGPTに従って体調管理2026
sat
PRO
0
150
eBPF
sat
PRO
1
110
waruiBPF
sat
PRO
0
110
eBPFとwaruiBPF
sat
PRO
5
3.7k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
99
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
200
様々なファイルシステム
sat
PRO
0
340
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
430
Other Decks in Technology
See All in Technology
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
170
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
150
Webhook best practices for rock solid and resilient deployments
glaforge
1
260
Deno・Bunの標準機能やElysiaJSを使ったWebSocketサーバー実装 / ラーメン屋を貸し切ってLT会! IoTLT 2026新年会
you
PRO
0
290
今日から始めるAmazon Bedrock AgentCore
har1101
4
390
セキュリティ はじめの一歩
nikinusu
0
1.5k
日本語テキストと音楽の対照学習の技術とその応用
lycorptech_jp
PRO
1
420
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
1
190
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
プロポーザルに込める段取り八分
shoheimitani
0
160
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
690
AI時代、1年目エンジニアの悩み
jin4
1
160
Featured
See All Featured
Side Projects
sachag
455
43k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
420
Leo the Paperboy
mayatellez
4
1.4k
The Curse of the Amulet
leimatthew05
1
8.2k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
Accessibility Awareness
sabderemane
0
48
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
88
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. 切り出し