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
分散ストレージCephのデータ破壊検知修復機能は本当に動作するのか
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoru Takeuchi
PRO
December 11, 2023
Technology
0
250
分散ストレージCephのデータ破壊検知修復機能は本当に動作するのか
以下動画のテキストです
https://youtu.be/uN_Gn-bfiSI
Satoru Takeuchi
PRO
December 11, 2023
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
書籍執筆での生成AIの活用
sat
PRO
1
300
ChatGPTに従って体調管理2026
sat
PRO
0
150
eBPF
sat
PRO
1
110
waruiBPF
sat
PRO
0
110
eBPFとwaruiBPF
sat
PRO
5
3.9k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
100
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
200
様々なファイルシステム
sat
PRO
0
340
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
430
Other Decks in Technology
See All in Technology
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
190
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
230
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
210
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
Red Hat OpenStack Services on OpenShift
tamemiya
0
140
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Tebiki Engineering Team Deck
tebiki
0
24k
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
520
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
620
Featured
See All Featured
Believing is Seeing
oripsolob
1
59
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
190
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
57
GitHub's CSS Performance
jonrohan
1032
470k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
70
Deep Space Network (abreviated)
tonyrice
0
67
Music & Morning Musume
bryan
47
7.1k
Transcript
分散ストレージCephの データ破壊検知&修復機能は 本当に動作するのか Dec, 11st, 2023 Satoru Takeuchi X: satoru_takeuchi
今回話すこと • 分散ストレージCephのデータ破壊検知&修復機能の動作確認 ◦ レプリカが2個以上ある状態で1つのレプリカが壊れても、正しいデータから修復できる ◦ …という触れ込みだが、本当なのだろうか ? • 「その63
ディスクI/O障害のエミュレーション ~既存ターゲット編~」を見ていると理解 しやすい ◦ 軽い事例紹介なので、難しいところは雰囲気を理解するだけで OK
Cephのアーキテクチャ node node node disk OSD disk OSD disk OSD
RADOS(独自インタフェースのオブジェクトストレージ ) ファイルシステム ブロックデバイス S3互換 オブジェクトストレージ
実験に使ったCephクラスタ node disk RADOS ファイル ファイル /dev/loop0 /dev/loop1 dust0 dust1
OSD0 OSD1
オブジェクトを作成 $ cat /tmp/test.data Hello Ceph world! $ rados -p
replicapool put test-object test.data RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ write write
GETする場合に読むOSDを得る $ ceph pg ls-by-pool replicapool PG OBJECTS … UP
ACTING … 1.a 1 … [1,0]p1 [1,0]p1 … オブジェクトを読み出すのは dust0上のOSD1から RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ read
オブジェクトの位置を知る • stringsコマンドを使ってそれっぽいデータがあるセクタを疑似不良セクタとする ◦ 📝 本当はOSDの中にあるRocksDBを走査してセクタ番号を求めます $ sudo strings -t
d /dev/mapper/dust1 | grep "Hello Ceph world!" 4616192 Hello Ceph world! ^C $ echo $((4616192/512)) 9016
疑似不良セクタを設定 $ sudo dmsetup message dust1 0 addbadblock 9016 0
$ sudo dmsetup message dust1 0 enable RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ readするとI/Oエラー発生 データ
オブジェクトをGETすると中身は正しい $ rados -p replicapool get test-object /tmp/out.data $ cat
/tmp/out.data Hello Ceph world! RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ read データ readするとI/Oエラー発生 したはずだが…
OSDのログにデータを修復した痕跡が出ている … _aio_thread got r=-5 ((5) Input/output error) … _aio_thread
translating the error to EIO for upper layer … log [ERR] : 1.a missing primary copy of 1:5756f1fd:::test-object:head, will try copies on 0 RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ データ
何が起きたか RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ
read データ
何が起きたか RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ
I/Oエラー発生 データ破壊検知
何が起きたか RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ
正しいデータをコピー
何が起きたか RADOS /dev/loop0 /dev/loop1 dust0 dust1 OSD0 OSD1 データ データ
渡す
おわり • Cephのデータ破壊検知&修復機能は仕様通り機能することを確認した • こういうことを楽々試せるdm-dustは便利