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
Rook/Cephストレージシステムを開発しながらupstream OSSに成果を還元してきた...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoru Takeuchi
PRO
November 21, 2022
Technology
940
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rook/Cephストレージシステムを開発しながらupstream OSSに成果を還元してきた取り組み
Cloud Native Days Tokyo 2022の発表スライドです。
https://event.cloudnativedays.jp/cndt2022/talks/1525
Satoru Takeuchi
PRO
November 21, 2022
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
80
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
110
あなたの知らないバージョン命名規則
sat
PRO
3
930
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
74
Machine Check Exception
sat
PRO
2
72
バイナリダンプの模様を読む
sat
PRO
0
120
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
110
114-ファイルのshallow_copy.pdf
sat
PRO
2
63
113-Btrfsのスナップショット.pdf
sat
PRO
0
48
Other Decks in Technology
See All in Technology
20年間 SNS サービス「GREE」 を支えた技術の刷新と、長期運用サービスの Kubernetes へのリアーキテクト
gree_tech
PRO
0
110
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
220
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
250
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
140
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
1k
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
7
5.2k
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
120
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
170
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
240
sue445's proposals 2026
sue445
0
120
CloudWatch Logsのコスト最適化:どこまでAIに任せてどこから人間が承認すべきか
yama3133
0
150
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
How to build a perfect <img>
jonoalderson
1
6.1k
KATA
mclloyd
PRO
35
16k
Rails Girls Zürich Keynote
gr2m
96
14k
Google's AI Overviews - The New Search
badams
0
1.6k
How STYLIGHT went responsive
nonsquared
100
6.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
The Curse of the Amulet
leimatthew05
3
16k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Designing Experiences People Love
moore
143
24k
Transcript
Rook/Cephストレージシステムを開発しながら upstream OSSに成果を還元してきた取り組み Nov. 21st, 2022 Cybozu, Inc. Satoru Takeuchi
1
今日伝えること ▌サイボウズがOSSベースのストレージシス テムを開発の延長としてupstreamに還元し てきた経験 ▌成果の還元で得られたOSSコミュニティと のつきあいかたのベストプラクティス 2
もくじ 3 ▌サイボウズとサイボウズのインフラ ▌これまでの開発&OSS貢献実績 ⚫検証中に見つけたRook/Cephの機能追加、バグ修正 ⚫upstream Cephのテスト改善提案 ⚫Upstream OSS最新情報チェック ▌OSSコミュニティとつきあうベストプラクティス
もくじ 4 ▌サイボウズとサイボウズのインフラ ▌これまでの開発&OSS貢献実績 ⚫検証中に見つけたRook/Cephの機能追加、バグ修正 ⚫upstream Cephのテスト改善提案 ⚫Upstream OSS最新情報チェック ▌OSSコミュニティとつきあうベストプラクティス
サイボウズ ▌様々なグループウェアを提供している ⚫kintone, Garoonなどなど ▌提供形態 ⚫クラウドサービス(今日の主題はこちら) ⚫一部パッケージ製品もある 5
サイボウズのインフラ ▌OSSベースのオンプレシステムを自前運用 ⚫有事に自ら即座に詳細調査や修正提供したい ▌現行インフラの限界が見えてきたので新インフラを 開発中 ▌新インフラはK8sクラスタで、ストレージシステム にはRook/Cephを使用 ⚫Ceph: OSSの分散ストレージ ⚫Rook:
K8s上で動くCephのオーケストレーション 6
Cephのアーキテクチャ 7 アプリ ストレージプール Cephクラスタ node disk disk node disk
disk node disk disk … ブロックデバイス オブジェクトストレージ OSD OSD OSD OSD OSD OSD ファイルシステム
Rookのアーキテクチャ 8 Rook ストレージプール Cephクラスタ node disk disk node disk
disk node disk disk … ブロックデバイス オブジェクトストレージ アプリ OSD OSD OSD OSD OSD OSD PV PV PV PV PV PV PV PVC Object Bucket Claim(OBC) Object Bucket(OB) PVC PVC PVC PVC ファイルシステム PV PVC PVC PVC
Rook/Cephクラスタの完成予想図 9 K8sクラスタ リモート K8sクラスタ * 左図と 同様の構成 レプリケーション HDD
Rook/Cephクラスタ SSD Rook/Cephクラスタ アプリ アプリ オブジェクト ストレージ ブロック ストレージ HDD node node SSD HDD HDD SSD NVMe SSD バック アップ
もくじ 10 ▌サイボウズとサイボウズのインフラ ▌これまでの開発&OSS貢献実績 ⚫検証中に見つけたRook/Cephの機能追加、バグ修正 ⚫upstream Cephのテスト改善提案 ⚫Upstream OSS最新情報チェック ▌OSSコミュニティとつきあうベストプラクティス
基本的な開発の流れ ▌以下の繰り返し 1. VM上に構築した仮想DCを使って開発 2. 開発用オンプレDCにdeploy 3. 本番オンプレDCへのdeploy ▌問題が見つかれば可能な限りupstreamで修正 ⚫成果がすべてのupstream
Rook/Cephユーザのためになる ⚫手元だけで修正するとメンテが大変 11
使用するコンテナ ▌Upstream OSSの最新版をもとに独自ビルドしたもの ▌独自パッチを当てたコンテナを運用することもある ⚫重要な修正がupstreamにマージされていない ⚫マージされたが新版がリリースされていない 12
もくじ 13 ▌サイボウズとサイボウズのインフラ ▌これまでの開発&OSS貢献実績 ⚫検証中に見つけたRook/Cephの機能追加、バグ修正 ⚫upstream Cephのテスト改善提案 ⚫Upstream OSS最新情報チェック ▌OSSコミュニティとつきあうベストプラクティス
問題1: OSDが作れない! 1. SSD Rook/CephクラスタはOSDをLVM上に作る 2. RookがOSD on LVMをサポートしていなかった 3.
Upstream Rookに機能追加して解決 14
問題2: OSDが壊れる! 1. ノード再起動時にOSDが壊れる問題が多発 2. RookにOSD操作の排他制御漏れがあった 3. Upstream Rookを修正して解決 15
問題3: OSDが作れない!(その2) 1. OSDを増やそうとすると稀に作成に失敗。テストにも 支障が出ていた 2. Upstream Cephのissue trackerに報告 3.
Upstream Cephを修正してもらった 16
問題4: オブジェクトストレージが動かない! 1. 突然オブジェクトストレージが応答しなくなった 2. オブジェクト数の増加時にサービスが長時間停止する バグがあった 3. Upstream Rookを修正して解決
17
貢献が認められRookのメンテナに就任 ▌プロジェクトの意思決定にかかわれる ▌KubeConのメンテナセッションで登壇できる ▌メンテナのおしごと ⚫リリース作業、ドキュメント改善、テスト改善 ⚫社外の人が作ったIssue対応,PRレビュー ⚫サイボウズに直接関係ないものも多い 18
OSS開発業務を支える会社のポリシー ▌OSSポリシーを定めている ⚫https://cybozu-oss-policy.readthedocs.io/ja/latest/ ▌ポリシーを定める目的 (前文より抜粋) ⚫当社及び従業員がOSS関連活動を過大な負担なく行える よう支援すること ⚫当社がオープンソースコミュニティで良き一員であるた めに必要な規定を定めること 19
もくじ 20 ▌サイボウズとサイボウズのインフラ ▌これまでの開発&OSS貢献実績 ⚫検証中に見つけたRook/Cephの機能追加、バグ修正 ⚫upstream Cephのテスト改善提案 ⚫upstream OSS最新情報チェック ▌OSSコミュニティとつきあうベストプラクティス
Cephについて浮かんだ疑問 ▌なぜサイボウズでは頻繁にOSDの作成失敗や再 起動時にOSDが破れるのか? ⚫前述したもの以外にもいくつかの類似バグを検出 ▌なぜupstreamのテストで検出されなかったか ▌手元のデータとupstreamのテスト履歴を分析 することに 21
分析の結果わかったこと 22 ▌サイボウズの開発スタイルではOSDを再起動す る頻度がupstreamのテストよりもはるかに高い ⚫UpstreamのテストでOSD再起動の負荷試験をすればバグ検 出率が上がるかも ▌ほとんどの問題はHDD上で検出していた ⚫UpstreamのテストでHDDを使っていない疑いがある ⚫もしそうならHDDを使うようにするとよいのでは
Upstream Cephへのはたらきかけ 23 ▌Ceph Virtualというイベントで問題提起 ⚫テストの改善を提案 ▌今後はMLなどで議論継続
もくじ 24 ▌サイボウズとサイボウズのインフラ ▌これまでの開発&OSS貢献実績 ⚫検証中に見つけたRook/Cephの機能追加、バグ修正 ⚫upstream Cephのテスト改善提案 ⚫Upstream OSS最新情報チェック ▌OSSコミュニティとつきあうベストプラクティス
upstream OSS最新情報チェック 25 ▌RookとCephの動向を毎日全てチェック ⚫ML, issue tracker, GitHub, slack… ▌目的
⚫深刻なバグの早期発見 ⚫問題に遭遇する前にワークアラウンド実施 ⚫暫定的に自前パッチ適用&リリース版へバックポート
例1: オブジェクトストレージのデータロスト 26 1. Upstream Cephにオブジェクトストレージのデータ ロスト問題の修正PRが投稿された ⚫オブジェクトのPUT時に特定のタイミングでネットワークが切れると オブジェクトがロスト 2.
mainマージ後にバックポートPR作成 ⚫現在マージ待ち状態
例2: オブジェクトストレージの性能問題 1. 開発用クラスタでオブジェクトストレージの 性能劣化が起きていた 2. この問題を解決しそうなPRがCephのmain branchに取り込まれた 3. 安定版にバックポートしたパッチを当てたサ
イボウズ独自コンテナにアップグレード 4. 性能改善! 27
ところが… 4. クラスタが異常を報告しはじめる 5. データが一部壊れる ⚫この後upstream Cephの安定版リリース時のテストで性能 改善PRのバグが検出された 6. 残ったデータの退避、及びバグ修正後の
PRを適用した開発用クラスタを再作成 28
原因 ▌性能改善PRは、ある程度以上古いバージョンで 作ったOSDのデータをうまく扱えなかった ▌条件に合うOSDが開発用クラスタに存在した ▌サイボウズではこのようなケースをテストして いなかった 29
PRマージ前に検出されなかった理由 ▌Upstreamのテストにはupgrade suiteがある ⚫古いバージョンのCephでOSDを作ってから最新版 にアップグレード ▌しかし個々のPRのテストではupgradeテストは 動かないことが判明 30
Cephコンテナのアップグレードポリシーの変更 ▌古い形式のOSDを考慮したテストを追加 ▌CephのアップグレードでOSDの形式が変われば、既 存の古いOSDは可能な限り全て最新版で作り直す ▌Upstreamのテストで流す全テストをローカル環境で 流せるようにする(継続中) ⚫これができるまで自前パッチを当てる運用は禁止 31
Rook/Cephクラスタ開発の進捗 32 K8sクラスタ レプリケーション Rook/CephクラスタA Rook/CephクラスタB オブジェクト ストレージ ブロック ストレージ
現行インフラ リモート K8sクラスタ * 左図と 同様の構成 HDD node node SSD HDD HDD SSD NVMe SSD 一部アプリ バック アップ アプリ アプリ
人材育成もやってます ▌当初upstream対応は一人が専任に近い形 でやっていて、SPOFになっていた ▌現在できる人を増やしつつある ⚫upstream OSSチェックは2人体制 ⚫Upstream OSS関連作業は慣れている人と慣れてい ない人がペアになってノウハウを伝達 33
もくじ 34 ▌サイボウズとサイボウズのインフラ ▌これまでの開発&OSS貢献実績 ⚫検証中に見つけたRook/Cephの機能追加、バグ修正 ⚫upstream Cephのテスト改善提案 ⚫Upstream OSS最新情報チェック ▌OSSコミュニティとつきあうベストプラクティス
基本的な考え方 ▌OSSへの貢献を特別なものと捉えない ▌OSSを使っていれば自然と貢献に繋げられる 1. 自社システムの課題を見つける 2. 課題をOSSコミュニティに共有 3. コミュニティ全体の利益になるよう一緒に解決 ▌企業同士の協業に近い(同じではない)
35
はじめの一歩 ▌簡単なバグ報告/修正から始める ⚫ドキュメント修正やテスト追加もアリ ▌具体的にどうするか ⚫貢献方法が書いている公式ドキュメントを見る ⚫GitHubなどを見て真似する ⚫経験がある人に助けてもらう 36
最初から肯定的な反応を期待しない ▌否定的な反応は注目されているサイン ⚫落としどころを見つけるために議論を重ねる ⚫無理筋なときは引き下がる。無理強いは嫌われる ▌無視が一番困る ⚫単に忘れられているだけでpingを打つと反応があることも ⚫説明しなおせば相手してもらえることも ⚫ × 「これが直らないと弊社が困るんです」
⚫ 〇 「これはみんながハマりうる問題です」 37
押さえておきたいこと ▌どこでコミュニケーションをとればいいか ▌Main branchやリリース版へのマージ条件 ▌リリースサイクル ▌キーマンは誰か 38
会社のサポートがあるとよい ▌OSSへの理解があるとうれしい ⚫自社のスケジュール通りには進まない ⚫自社の利益に直結しないタスクをすることも ⚫ ポリシーとして明文化されているとよい ▌Open Source Program Office(OSPO)があると楽
⚫ライセンスの使用可否の判断、知見蓄積 ⚫OSSコミュニティとのやりとりのアドバイス 39
まとめ ▌サイボウズはRook/Cephクラスタ開発の一環 としてupstream OSSに成果を還元してきた ▌この結果、OSSとのつきあいかたについての ノウハウを蓄積した ▌これからもこの方法で開発を進める ▌一緒に働いてくれる仲間を募集中! 40
That’s all, thank you! 41