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
ファイルシステムのデータを ブロックデバイスへの操作で変更
Search
Satoru Takeuchi
PRO
May 06, 2025
Technology
1
33
ファイルシステムのデータを ブロックデバイスへの操作で変更
以下動画のテキストです
https://youtu.be/9DqN2dnkm3A
Satoru Takeuchi
PRO
May 06, 2025
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
ポーリングと割り込み
sat
PRO
0
5
Rook: Intro and Deep Dive With Ceph
sat
PRO
1
110
会社員しながら本を書いてきた知見の共有
sat
PRO
3
790
デバイスにアクセスするデバイスファイル
sat
PRO
1
39
デバイスドライバ
sat
PRO
0
49
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
120
共有メモリ
sat
PRO
3
71
マルチスレッドプログラム
sat
PRO
3
59
Linuxのブートプロセス initramfs編
sat
PRO
2
91
Other Decks in Technology
See All in Technology
Reach American Airlines®️ Instantly: 19 Calling Methods for Fast Support in the USA
flyamerican
1
180
モニタリング統一への道のり - 分散モニタリングツール統合のためのオブザーバビリティプロジェクト
niftycorp
PRO
1
430
ロールが細分化された組織でSREは何をするか?
tgidgd
1
260
freeeのアクセシビリティの現在地 / freee's Current Position on Accessibility
ymrl
2
280
How Do I Contact HP Printer Support? [Full 2025 Guide for U.S. Businesses]
harrry1211
0
130
伴走から自律へ: 形式知へと導くSREイネーブリングによる プロダクトチームの信頼性オーナーシップ向上 / SRE NEXT 2025
visional_engineering_and_design
3
260
SEQUENCE object comparison - db tech showcase 2025 LT2
nori_shinoda
0
290
セキュアなAI活用のためのLiteLLMの可能性
tk3fftk
1
210
SREのためのeBPF活用ステップアップガイド
egmc
2
1.1k
データ基盤からデータベースまで?広がるユースケースのDatabricksについて教えるよ!
akuwano
3
170
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
2
230
ポストコロナ時代の SaaS におけるコスト削減の意義
izzii
1
420
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Building Applications with DynamoDB
mza
95
6.5k
Automating Front-end Workflow
addyosmani
1370
200k
Documentation Writing (for coders)
carmenintech
72
4.9k
Writing Fast Ruby
sferik
628
62k
The World Runs on Bad Software
bkeepers
PRO
69
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
Transcript
ファイルシステムのデータを ブロックデバイスへの操作で変更 May. 6th, 2025 Satoru Takeuchi X: satoru_takeuchi 1
はじめに • 前置き ◦ ファイルはディスク上に所定のフォーマットで置かれたデータのかたまり ◦ ファイルにアクセスすると最終的にディスク上のデータにアクセスする ◦ ブロックデバイスファイルはファイルシステムを介さずディスクに直接アクセスする •
やること ◦ ブロックデバイスファイルを使ってファイルシステムのデータを書き換える 2
ファイルシステムとブロックデバイスの関係(簡易版) 3 プロセス プロセス プロセス ユーザ空間 カーネル空間 現実世界 ディスク ブロックデバイスファイル
(例: /dev/sda) 通常ファイル (例: /home/sat/foo) デバイスドライバ 色々なレイヤ(今は気にしなくてよい )
手順 1. ファイルシステムを作成 2. ファイルシステム上のファイルにデータを書き込む 3. 書き込んだデータのブロックデバイス上のオフセットを得る 4. 上述のオフセットにブロックデバイスファイル経由でデータを書き込む 5.
ファイルからデータを読み出す 4
1. ファイルシステムを作成 • loop device上にext2ファイルシステムを作成 ◦ 📝 過去動画: その30 loop
device ◦ 📝 ext4やXFS、Btrfsだとデータの整合性を保つためのジャーナリングやコピーオンライト (後日別 動画で説明予定)といった仕組みのために実験結果がわかりにくくなるので避けた。 5 $ sudo dd if=/dev/zero of=test.img bs=1G count=0 seek=1 # サイズ1GiBのファイルを作成 … $ sudo mkfs.ext2 test.img # test.imgの中身をext2でフォーマット mke2fs 1.47.0 (5-Feb-2023) … $ sudo losetup -f test.img # test.imgをloop deviceにマップ $ losetup -l NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC /dev/loop0 0 0 0 0 /home/sat/test.img 0 512 $ sudo mount test.img /mnt/ # loop deviceをmount $ sudo ls /mnt/ lost+found
2. ファイルシステム上のファイルにデータを書き込む • “hello block device”という文字列を先ほど作成したファイルシステム上のtestファイ ルに書き込む 6 $ echo
"hello block device" >test $ sudo dd if=test of=/mnt/test … $ cat /mnt/test hello block device $ sudo sync /mnt # 書き込んだ内容を確実にディスクに反映させる
3. 書き込んだデータのブロックデバイス上のオフセットを得る • ファイル内に存在する文字列を一覧する”strings”コマンドを使う ◦ -tdオプションを使用すると各文字列のファイル内オフセットが得られる 7 $ sudo strings
-td /dev/loop0 1128 $PcA 1160 /mnt 2371616 lost+found 2371636 test 4194304 hello block device 134217832 $PcA 402653288 $PcA 671088744 $PcA 939524200 $PcA
4. 上述のオフセットにブロックデバイスファイル経由でデータを書き込む • /mnt/testの内容が保存されているオフセットに別のデータを書き込む 8 $ umount /mnt # ページキャッシュの影響を排除
$ echo "HELLO BLOCK DEVICE" >test2 $ sudo dd if=test2 of=/dev/loop0 bs=1 seek=4194304 … $ sudo mount test.img /mnt/
5. ファイルからデータを読み出す • 9 $ sudo cat /mnt/test HELLO BLOCK
DEVICE
まとめ • ファイルのデータをファイルシステムが存在するディスクに対応するブロックデバイ スファイル経由で書き換えられた • ブロックデバイスファイル経由でディスクにアクセスできることがわかった 10