Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Linuxのブロックデバイス
Search
Satoru Takeuchi
PRO
March 19, 2023
Technology
4.8k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linuxのブロックデバイス
Linuxのいろいろなブロックデバイスを紹介した資料です
Satoru Takeuchi
PRO
March 19, 2023
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
68
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
93
あなたの知らないバージョン命名規則
sat
PRO
3
900
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
66
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
87
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
Other Decks in Technology
See All in Technology
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Screen Lens - 今見てる画面を翻訳する
komagata
0
320
AI時代、データエンジニアが一番おもろい
genshun9
0
620
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.3k
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
150
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
970
品質と信頼性を地続きにする
grimoh
0
470
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
4
200
あけおめLINE 傾向とその対策
nasa9084
0
100
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
3
1.7k
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
620
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
30
26k
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
400
The Curse of the Amulet
leimatthew05
3
14k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
Balancing Empowerment & Direction
lara
6
1.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Technical Leadership for Architectural Decision Making
baasie
3
570
Rails Girls Zürich Keynote
gr2m
96
14k
Agile that works and the tools we love
rasmusluckow
331
22k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
660
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
Marketing to machines
jonoalderson
1
5.8k
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. 切り出し