SlideShare a Scribd company logo
1 of 28
Download to read offline
Copyright©2017 NTT Corp. All Rights Reserved.
分散オブジェクトストレージ
OpenStack Swift紹介
(2017/08/01)
Kota Tsuyuzaki [IRC: kota_]
tsuyuzaki.kota@lab.ntt.co.jp
NTT Software Innovation Center
Copyright(c)2009-2017 NTT CORPORATION. All Rights Reserved.
2Copyright©2017 NTT Corp. All Rights Reserved.
[プロフィール]
氏名:露﨑 浩太
Launchpad: tsuyuzaki-kota
IRC: kota_
所属:日本電信電話株式会社 (NTT)
ソフトウェアイノベーションセンタ (R&D部門)
[OpenStack Swiftとの関わり]
2012~: 社内のSwift関連のお仕事を開始
2015~: Swiftのコアチームで活動開始
自己紹介
3Copyright©2017 NTT Corp. All Rights Reserved.
• What is an Object?
• オブジェクトストレージの主な用途
• Swiftとは
• Swift API
• Swiftのデザイン
• Scale Out
• Data Redundancy (冗長化)
• Consistent Hashing
• Active Consistency Engine
• Swiftのエコシステム
• まとめ
アジェンダ
4Copyright©2017 NTT Corp. All Rights Reserved.
What is an Object
ファイル:
DSC_0029.JPG
メタデータ:
ImageSize: 3840 x 2160
Date: 2017-07-23
Place: Tokyo Shinjuku
etc…
Object = ファイル + メタデータ
5Copyright©2017 NTT Corp. All Rights Reserved.
オブジェクトストレージの主な用途
様々な種類のサイズの大きなファイルを、大量に、長期間保存することが得意
オンラインバックアップ 画像・映像のアーカイブ IoT/M2M
バックアップサーバ サービス提供システム IoT GW
オブジェクト
ストレージ オブジェクト
ストレージ
オブジェクト
ストレージ
100T 100T
100T
100T
100T
100T
http://storage-host
…
ログ
ログ
ログ
ログ
ログ
ログ
…
6Copyright©2017 NTT Corp. All Rights Reserved.
Swiftとは
Swift
 IaaS基盤であるOpenStackで開発されているオブジェクトストレージのPython実装
 元々Rackspaceが自社サービス(CloudFiles)向けに開発されたOSSであり、
OpenStackができた当初(2010年)からあるソフトウェア
 海外はもちろん、国内でも商用実績あり
 NTTグループ
 NTTデータ社(https://goo.gl/Rb8i7b)
 NTTぷらら社(https://goo.gl/fDC69D)
7Copyright©2017 NTT Corp. All Rights Reserved.
Swift API
https://swift.example.com/v1/AUTH_account/container/object
HTTP based Rest API:
Host名 API Version
アカウント コンテナ オブジェクト
8Copyright©2017 NTT Corp. All Rights Reserved.
Swift API
PUT https://swift.example.com/v1/AUTH_account/container/object
Write a new object:
GET https://swift.example.com/v1/AUTH_account/container/object
Read an object:
9Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or ErasureCode
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
10Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or ErasureCode
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
11Copyright©2017 NTT Corp. All Rights Reserved.
Scale Out: Swiftのアーキテクチャ(3レプリカの例)
ユーザ、
クライアント:
Swift
Load Balancer:
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Object
Object
Object
Object
PUT GET
■Swiftのアーキテクチャと基本的なデータの流れ
12Copyright©2017 NTT Corp. All Rights Reserved.
Scale Out: Swiftのアーキテクチャ(3レプリカの例)
ユーザ、
クライアント:
Swift
Load Balancer:
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Object
Object
Object
Object
PUT GET
■Proxy TierとStorage Tierは独立にスケールアウトが可能
同時接続数が増えたら
Proxyの数を増やす
容量が足りなくなったら
Storageの数を増やす
13Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
14Copyright©2017 NTT Corp. All Rights Reserved.
• クラスタ内のFailure Domainを定義可能で、オブジェクトはで
きるだけユニークなFailure Domainへ保存される
Data Redundancy: 保存されるオブジェクトの配置
zone1 zone2
Object
Object
Object
2zoneの場合
各zoneに最低一つずつ
15Copyright©2017 NTT Corp. All Rights Reserved.
• クラスタ内のFailure Domainを定義可能で、オブジェクトはで
きるだけユニークなFailure Domainへ保存される
Data Redundancy: 保存されるオブジェクトの配置
zone1 zone2
Object
zone3 zone4
Region 2Region 1
Object
Object
2Region4Zoneの場合
各Regionに最低一つ
各Zoneに一つずつ
16Copyright©2017 NTT Corp. All Rights Reserved.
Data Redundancy: SwiftのFailure Domain
Region
Zone
Server
Disk Disk
Server
Disk Disk
Zone
Server
Disk Disk
Server
Disk Disk
Region
Zone
Server
Disk
• 最小のFailure Domainがディスク単位とし、1つディスクが壊
れても、複数のレプリカが消失しないことを担保 (No SPOF)
Object Object Object
17Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
18Copyright©2017 NTT Corp. All Rights Reserved.
• Swiftは「Ring」と呼ばれる静的なデータ構造でデバイスとFailure
Domainを管理
• RingではデバイスのリストとPartitionのマップを管理
• Object URLをMD5hash値をからPartitionを計算し実際の配置デバイ
スを決める
Consistent Hashing: Swift Ring
Device
Idx
Device Info
0 192.168.11.10/zone1/sdb
1 192.168.11.11/zone1/sdc
… …
34 192.168.11.24/zone2/sdd
… …
Partition Replica1 Replica2 Replica3
0 11 21 43
… … … …
6 34 1 0
… … … …
MD5(URL) = index(※)
※ Swift uses a modified MD5 consistent hashing ring
Partitions
Primaries
19Copyright©2017 NTT Corp. All Rights Reserved.
• Swiftは全てのRingが同じである(運用側でそれを保証する)という前
提で動いている
• CassandraのGossipのような内部でRing情報を伝播する仕組みは存在
しない
Consistent Hashing: Swift Ring
Swift
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Object
Object
Object
20Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
21Copyright©2017 NTT Corp. All Rights Reserved.
Active Consistency Engine: Replicator
Swift
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Replicator
• ReplicatorはSwiftの各サーバに常駐し、オブジェクトの一貫性
を監視するデーモンプロセス
22Copyright©2017 NTT Corp. All Rights Reserved.
Active Consistency Engine:オブジェクトの障害と復旧
通常時
障害時
復旧時
X X X
X X X
X X X X
X X X
X X X
X X
X
X
① 各ノードのReplicatorは、Primariesのサーバ搭載された
ディスクを監視する。(HTTPで状態を送りあう)
② ディスクに障害が発生する。ディスク障害を検知する。
③ ディスク内のデータを他の空いているディスクに一時的に
ファイルを複製する(ハンドオフ)
④ ディスクを復旧する。ディスク復旧を検知する。
⑤ ハンドオフを元のディスクに複製する。
⑥ ハンドオフを削除する。
Replicator with
Replicator with
23Copyright©2017 NTT Corp. All Rights Reserved.
• Q: データ読み込み時のRead Repairは?
• A: しません
• Q: アクティブにデータ動かすとNW障害などの死活監
視が途絶えた際にデータの大移動が起こるのでは?
• A: Swiftはネットワーク障害とディスク障害を区別し
て挙動を変えます。データの移動を伴うのは、「ディス
ク故障」か「Ringに対するディスクの追加/削除」の場
合のみで、リブートやネットワーク断をトリガとした
データの移動は行いません
Active Consistency Engine:よくある質問
24Copyright©2017 NTT Corp. All Rights Reserved.
• Swift3
• https://github.com/openstack/swift3
• Amazon S3 APIをSwift上でエミュレーションするプロジェクト
• Storlets
• https://github.com/openstack/storlets
• 保存されているオブジェクトに対してSwift上で処理用のコードを
実行する環境を提供するプロジェクト
• Hadoop MapReduceのMap処理のようなものをStorage Tierで
実行できる
• Hadoop: Swift Object Store
• https://hadoop.apache.org/docs/r2.7.0/hadoop-
openstack/index.html
• HDFSの代わりにSwiftに保存されてオブジェクトを扱えるように
するプラグイン
Swiftのエコシステム
25Copyright©2017 NTT Corp. All Rights Reserved.
• Vagrant Swift All In One
• https://github.com/swiftstack/vagrant-swift-all-in-one
• Steps
• git clone https://github.com/swiftstack/vagrant-swift-all-in-one
• vagrant up
試してみるなら
26Copyright©2017 NTT Corp. All Rights Reserved.
• ConsistentHashingのアーキテクチャ上でオブジェクト一覧を
取得可能にするための実装と工夫
• Account and Container DB
• ファイルシステムレベルでの工夫
• fallocate reserve, rename operation, posix_fadvise
• bit rot対策
• content md5 and Auditor
• Erasure Codingのための工夫
• 2 Phase Commit over HTTP
• その他、使い方の幅を広げる機能など
• Multi Upload、Bulk DELETE、Quota、Versioning、TempURL、
CORS、Encryption、etc…
今日話さなかったこと
気になるものがあれば、懇親会で是非議論しましょう!!!
27Copyright©2017 NTT Corp. All Rights Reserved.
• Swiftはデータの冗長度を持ちながらスケールアウトするようにデ
ザインされたオブジェクトストレージである
• SwiftではRingと呼ばれるConsistentHashingの仕組みを元に、
常にデータの整合性を管理することでデータの冗長度を担保でき
るように作られている
• こうした特長から、失いたくないデータのバックアップや大容量
の画像映像を扱う、ストリーミングの事例などに採用されている
• 話しきれなかったトピックは懇親会で是非議論しましょう
まとめ
28Copyright©2017 NTT Corp. All Rights Reserved.
質問など
tsuyuzaki.kota@lab.ntt.co.jp
IRC: kota_

More Related Content

What's hot

Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 

What's hot (20)

その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
 
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
 
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
 
Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 

Viewers also liked

OpenStack & the Evolving Cloud Ecosystem
OpenStack & the Evolving Cloud EcosystemOpenStack & the Evolving Cloud Ecosystem
OpenStack & the Evolving Cloud Ecosystem
Mark Voelker
 

Viewers also liked (7)

Equinix Big Data Platform and Cassandra - A view into the journey
Equinix Big Data Platform and Cassandra - A view into the journeyEquinix Big Data Platform and Cassandra - A view into the journey
Equinix Big Data Platform and Cassandra - A view into the journey
 
Big Data in the Cloud? Yes, you can do it in OpenStack
Big Data in the Cloud? Yes, you can do it in OpenStackBig Data in the Cloud? Yes, you can do it in OpenStack
Big Data in the Cloud? Yes, you can do it in OpenStack
 
Montreal Linux MeetUp - OpenStack Overview (2017.10.03)
Montreal Linux MeetUp - OpenStack Overview (2017.10.03)Montreal Linux MeetUp - OpenStack Overview (2017.10.03)
Montreal Linux MeetUp - OpenStack Overview (2017.10.03)
 
日本OpenStackユーザ会 Atlantaサミット報告会 Swift関連報告
日本OpenStackユーザ会 Atlantaサミット報告会 Swift関連報告日本OpenStackユーザ会 Atlantaサミット報告会 Swift関連報告
日本OpenStackユーザ会 Atlantaサミット報告会 Swift関連報告
 
201708 OpenStack Seminar in Myanmar
201708 OpenStack Seminar in Myanmar201708 OpenStack Seminar in Myanmar
201708 OpenStack Seminar in Myanmar
 
201711 OpenStack Summit Sydney Report
201711 OpenStack Summit Sydney Report201711 OpenStack Summit Sydney Report
201711 OpenStack Summit Sydney Report
 
OpenStack & the Evolving Cloud Ecosystem
OpenStack & the Evolving Cloud EcosystemOpenStack & the Evolving Cloud Ecosystem
OpenStack & the Evolving Cloud Ecosystem
 

Similar to OpenStack Swift紹介

OpenStack Object Storage; Overview
OpenStack Object Storage; OverviewOpenStack Object Storage; Overview
OpenStack Object Storage; Overview
irix_jp
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
 

Similar to OpenStack Swift紹介 (20)

OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
 
NTTデータ様講演 OpenStack最新情報セミナー 2014年6月
NTTデータ様講演 OpenStack最新情報セミナー 2014年6月NTTデータ様講演 OpenStack最新情報セミナー 2014年6月
NTTデータ様講演 OpenStack最新情報セミナー 2014年6月
 
OpenStack Object Storage; Overview
OpenStack Object Storage; OverviewOpenStack Object Storage; Overview
OpenStack Object Storage; Overview
 
July techfesta2014 f30
July techfesta2014 f30July techfesta2014 f30
July techfesta2014 f30
 
[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?
 
OpenStack Congress Deep Dive
OpenStack Congress Deep DiveOpenStack Congress Deep Dive
OpenStack Congress Deep Dive
 
Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況
 
2016年2月4日 空間OSの設計コンセプトと先端IT
2016年2月4日 空間OSの設計コンセプトと先端IT2016年2月4日 空間OSの設計コンセプトと先端IT
2016年2月4日 空間OSの設計コンセプトと先端IT
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)
 
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
 
OpenStack, Hadoop -- OSSクラウドの最新動向
OpenStack, Hadoop -- OSSクラウドの最新動向OpenStack, Hadoop -- OSSクラウドの最新動向
OpenStack, Hadoop -- OSSクラウドの最新動向
 
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
 
Tizen native application
Tizen native applicationTizen native application
Tizen native application
 
Aerospike on IDCF Cloud
Aerospike on IDCF CloudAerospike on IDCF Cloud
Aerospike on IDCF Cloud
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
 
Orb oracle
Orb oracleOrb oracle
Orb oracle
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
FIWARE Lab, a service platform based on a large distributed OpenStack environ...
FIWARE Lab, a service platform based on a large distributed OpenStack environ...FIWARE Lab, a service platform based on a large distributed OpenStack environ...
FIWARE Lab, a service platform based on a large distributed OpenStack environ...
 

More from Kota Tsuyuzaki

More from Kota Tsuyuzaki (13)

Storlets Project Update for Train
Storlets Project Update for TrainStorlets Project Update for Train
Storlets Project Update for Train
 
Project Updates Storlets Denver 2019
Project Updates Storlets Denver 2019Project Updates Storlets Denver 2019
Project Updates Storlets Denver 2019
 
NVIDIA/deepopsを触ってみた話
NVIDIA/deepopsを触ってみた話NVIDIA/deepopsを触ってみた話
NVIDIA/deepopsを触ってみた話
 
OpenStack Swift Introduction 2019
OpenStack Swift Introduction 2019OpenStack Swift Introduction 2019
OpenStack Swift Introduction 2019
 
Case Study: Large Scale Deployment for Machine Learning with Highspeed Storage
Case Study: Large Scale Deployment for Machine Learning with Highspeed StorageCase Study: Large Scale Deployment for Machine Learning with Highspeed Storage
Case Study: Large Scale Deployment for Machine Learning with Highspeed Storage
 
OpenStack Summit Storlets Project Update Queens
OpenStack Summit Storlets Project Update QueensOpenStack Summit Storlets Project Update Queens
OpenStack Summit Storlets Project Update Queens
 
OpenStack Swiftの最新機能とStorlets
OpenStack Swiftの最新機能とStorletsOpenStack Swiftの最新機能とStorlets
OpenStack Swiftの最新機能とStorlets
 
Using Storlets/Docker For Large Scale Image Processing
Using Storlets/Docker For Large Scale Image ProcessingUsing Storlets/Docker For Large Scale Image Processing
Using Storlets/Docker For Large Scale Image Processing
 
Global EC Cluster Updates (OpenStack Mitaka Swift Design Summit)
Global EC Cluster Updates (OpenStack Mitaka Swift Design Summit)Global EC Cluster Updates (OpenStack Mitaka Swift Design Summit)
Global EC Cluster Updates (OpenStack Mitaka Swift Design Summit)
 
OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告
 
Container Listing Update (Liberty Swift Design Summit)
Container Listing Update (Liberty Swift Design Summit)Container Listing Update (Liberty Swift Design Summit)
Container Listing Update (Liberty Swift Design Summit)
 
Durability Simulator Design for OpenStack Swift
Durability Simulator Design for OpenStack SwiftDurability Simulator Design for OpenStack Swift
Durability Simulator Design for OpenStack Swift
 
More Efficient Object Replication in OpenStack Summit Juno
More Efficient Object Replication in OpenStack Summit JunoMore Efficient Object Replication in OpenStack Summit Juno
More Efficient Object Replication in OpenStack Summit Juno
 

OpenStack Swift紹介

  • 1. Copyright©2017 NTT Corp. All Rights Reserved. 分散オブジェクトストレージ OpenStack Swift紹介 (2017/08/01) Kota Tsuyuzaki [IRC: kota_] tsuyuzaki.kota@lab.ntt.co.jp NTT Software Innovation Center Copyright(c)2009-2017 NTT CORPORATION. All Rights Reserved.
  • 2. 2Copyright©2017 NTT Corp. All Rights Reserved. [プロフィール] 氏名:露﨑 浩太 Launchpad: tsuyuzaki-kota IRC: kota_ 所属:日本電信電話株式会社 (NTT) ソフトウェアイノベーションセンタ (R&D部門) [OpenStack Swiftとの関わり] 2012~: 社内のSwift関連のお仕事を開始 2015~: Swiftのコアチームで活動開始 自己紹介
  • 3. 3Copyright©2017 NTT Corp. All Rights Reserved. • What is an Object? • オブジェクトストレージの主な用途 • Swiftとは • Swift API • Swiftのデザイン • Scale Out • Data Redundancy (冗長化) • Consistent Hashing • Active Consistency Engine • Swiftのエコシステム • まとめ アジェンダ
  • 4. 4Copyright©2017 NTT Corp. All Rights Reserved. What is an Object ファイル: DSC_0029.JPG メタデータ: ImageSize: 3840 x 2160 Date: 2017-07-23 Place: Tokyo Shinjuku etc… Object = ファイル + メタデータ
  • 5. 5Copyright©2017 NTT Corp. All Rights Reserved. オブジェクトストレージの主な用途 様々な種類のサイズの大きなファイルを、大量に、長期間保存することが得意 オンラインバックアップ 画像・映像のアーカイブ IoT/M2M バックアップサーバ サービス提供システム IoT GW オブジェクト ストレージ オブジェクト ストレージ オブジェクト ストレージ 100T 100T 100T 100T 100T 100T http://storage-host … ログ ログ ログ ログ ログ ログ …
  • 6. 6Copyright©2017 NTT Corp. All Rights Reserved. Swiftとは Swift  IaaS基盤であるOpenStackで開発されているオブジェクトストレージのPython実装  元々Rackspaceが自社サービス(CloudFiles)向けに開発されたOSSであり、 OpenStackができた当初(2010年)からあるソフトウェア  海外はもちろん、国内でも商用実績あり  NTTグループ  NTTデータ社(https://goo.gl/Rb8i7b)  NTTぷらら社(https://goo.gl/fDC69D)
  • 7. 7Copyright©2017 NTT Corp. All Rights Reserved. Swift API https://swift.example.com/v1/AUTH_account/container/object HTTP based Rest API: Host名 API Version アカウント コンテナ オブジェクト
  • 8. 8Copyright©2017 NTT Corp. All Rights Reserved. Swift API PUT https://swift.example.com/v1/AUTH_account/container/object Write a new object: GET https://swift.example.com/v1/AUTH_account/container/object Read an object:
  • 9. 9Copyright©2017 NTT Corp. All Rights Reserved. • Scale Out • Data Redundancy (冗長化) • レプリカ or ErasureCode • Consistent Hashing • Active Consistency Engine Swiftのデザイン
  • 10. 10Copyright©2017 NTT Corp. All Rights Reserved. • Scale Out • Data Redundancy (冗長化) • レプリカ or ErasureCode • Consistent Hashing • Active Consistency Engine Swiftのデザイン
  • 11. 11Copyright©2017 NTT Corp. All Rights Reserved. Scale Out: Swiftのアーキテクチャ(3レプリカの例) ユーザ、 クライアント: Swift Load Balancer: Proxy Tier: Storage Tier: (アカウント、 コンテナ、 オブジェクト) zone1 zone2 zone3 zone4 Object Object Object Object PUT GET ■Swiftのアーキテクチャと基本的なデータの流れ
  • 12. 12Copyright©2017 NTT Corp. All Rights Reserved. Scale Out: Swiftのアーキテクチャ(3レプリカの例) ユーザ、 クライアント: Swift Load Balancer: Proxy Tier: Storage Tier: (アカウント、 コンテナ、 オブジェクト) zone1 zone2 zone3 zone4 Object Object Object Object PUT GET ■Proxy TierとStorage Tierは独立にスケールアウトが可能 同時接続数が増えたら Proxyの数を増やす 容量が足りなくなったら Storageの数を増やす
  • 13. 13Copyright©2017 NTT Corp. All Rights Reserved. • Scale Out • Data Redundancy (冗長化) • レプリカ or Erasure Code • Consistent Hashing • Active Consistency Engine Swiftのデザイン
  • 14. 14Copyright©2017 NTT Corp. All Rights Reserved. • クラスタ内のFailure Domainを定義可能で、オブジェクトはで きるだけユニークなFailure Domainへ保存される Data Redundancy: 保存されるオブジェクトの配置 zone1 zone2 Object Object Object 2zoneの場合 各zoneに最低一つずつ
  • 15. 15Copyright©2017 NTT Corp. All Rights Reserved. • クラスタ内のFailure Domainを定義可能で、オブジェクトはで きるだけユニークなFailure Domainへ保存される Data Redundancy: 保存されるオブジェクトの配置 zone1 zone2 Object zone3 zone4 Region 2Region 1 Object Object 2Region4Zoneの場合 各Regionに最低一つ 各Zoneに一つずつ
  • 16. 16Copyright©2017 NTT Corp. All Rights Reserved. Data Redundancy: SwiftのFailure Domain Region Zone Server Disk Disk Server Disk Disk Zone Server Disk Disk Server Disk Disk Region Zone Server Disk • 最小のFailure Domainがディスク単位とし、1つディスクが壊 れても、複数のレプリカが消失しないことを担保 (No SPOF) Object Object Object
  • 17. 17Copyright©2017 NTT Corp. All Rights Reserved. • Scale Out • Data Redundancy (冗長化) • レプリカ or Erasure Code • Consistent Hashing • Active Consistency Engine Swiftのデザイン
  • 18. 18Copyright©2017 NTT Corp. All Rights Reserved. • Swiftは「Ring」と呼ばれる静的なデータ構造でデバイスとFailure Domainを管理 • RingではデバイスのリストとPartitionのマップを管理 • Object URLをMD5hash値をからPartitionを計算し実際の配置デバイ スを決める Consistent Hashing: Swift Ring Device Idx Device Info 0 192.168.11.10/zone1/sdb 1 192.168.11.11/zone1/sdc … … 34 192.168.11.24/zone2/sdd … … Partition Replica1 Replica2 Replica3 0 11 21 43 … … … … 6 34 1 0 … … … … MD5(URL) = index(※) ※ Swift uses a modified MD5 consistent hashing ring Partitions Primaries
  • 19. 19Copyright©2017 NTT Corp. All Rights Reserved. • Swiftは全てのRingが同じである(運用側でそれを保証する)という前 提で動いている • CassandraのGossipのような内部でRing情報を伝播する仕組みは存在 しない Consistent Hashing: Swift Ring Swift Proxy Tier: Storage Tier: (アカウント、 コンテナ、 オブジェクト) zone1 zone2 zone3 zone4 Object Object Object
  • 20. 20Copyright©2017 NTT Corp. All Rights Reserved. • Scale Out • Data Redundancy (冗長化) • レプリカ or Erasure Code • Consistent Hashing • Active Consistency Engine Swiftのデザイン
  • 21. 21Copyright©2017 NTT Corp. All Rights Reserved. Active Consistency Engine: Replicator Swift Proxy Tier: Storage Tier: (アカウント、 コンテナ、 オブジェクト) zone1 zone2 zone3 zone4 Replicator • ReplicatorはSwiftの各サーバに常駐し、オブジェクトの一貫性 を監視するデーモンプロセス
  • 22. 22Copyright©2017 NTT Corp. All Rights Reserved. Active Consistency Engine:オブジェクトの障害と復旧 通常時 障害時 復旧時 X X X X X X X X X X X X X X X X X X X X ① 各ノードのReplicatorは、Primariesのサーバ搭載された ディスクを監視する。(HTTPで状態を送りあう) ② ディスクに障害が発生する。ディスク障害を検知する。 ③ ディスク内のデータを他の空いているディスクに一時的に ファイルを複製する(ハンドオフ) ④ ディスクを復旧する。ディスク復旧を検知する。 ⑤ ハンドオフを元のディスクに複製する。 ⑥ ハンドオフを削除する。 Replicator with Replicator with
  • 23. 23Copyright©2017 NTT Corp. All Rights Reserved. • Q: データ読み込み時のRead Repairは? • A: しません • Q: アクティブにデータ動かすとNW障害などの死活監 視が途絶えた際にデータの大移動が起こるのでは? • A: Swiftはネットワーク障害とディスク障害を区別し て挙動を変えます。データの移動を伴うのは、「ディス ク故障」か「Ringに対するディスクの追加/削除」の場 合のみで、リブートやネットワーク断をトリガとした データの移動は行いません Active Consistency Engine:よくある質問
  • 24. 24Copyright©2017 NTT Corp. All Rights Reserved. • Swift3 • https://github.com/openstack/swift3 • Amazon S3 APIをSwift上でエミュレーションするプロジェクト • Storlets • https://github.com/openstack/storlets • 保存されているオブジェクトに対してSwift上で処理用のコードを 実行する環境を提供するプロジェクト • Hadoop MapReduceのMap処理のようなものをStorage Tierで 実行できる • Hadoop: Swift Object Store • https://hadoop.apache.org/docs/r2.7.0/hadoop- openstack/index.html • HDFSの代わりにSwiftに保存されてオブジェクトを扱えるように するプラグイン Swiftのエコシステム
  • 25. 25Copyright©2017 NTT Corp. All Rights Reserved. • Vagrant Swift All In One • https://github.com/swiftstack/vagrant-swift-all-in-one • Steps • git clone https://github.com/swiftstack/vagrant-swift-all-in-one • vagrant up 試してみるなら
  • 26. 26Copyright©2017 NTT Corp. All Rights Reserved. • ConsistentHashingのアーキテクチャ上でオブジェクト一覧を 取得可能にするための実装と工夫 • Account and Container DB • ファイルシステムレベルでの工夫 • fallocate reserve, rename operation, posix_fadvise • bit rot対策 • content md5 and Auditor • Erasure Codingのための工夫 • 2 Phase Commit over HTTP • その他、使い方の幅を広げる機能など • Multi Upload、Bulk DELETE、Quota、Versioning、TempURL、 CORS、Encryption、etc… 今日話さなかったこと 気になるものがあれば、懇親会で是非議論しましょう!!!
  • 27. 27Copyright©2017 NTT Corp. All Rights Reserved. • Swiftはデータの冗長度を持ちながらスケールアウトするようにデ ザインされたオブジェクトストレージである • SwiftではRingと呼ばれるConsistentHashingの仕組みを元に、 常にデータの整合性を管理することでデータの冗長度を担保でき るように作られている • こうした特長から、失いたくないデータのバックアップや大容量 の画像映像を扱う、ストリーミングの事例などに採用されている • 話しきれなかったトピックは懇親会で是非議論しましょう まとめ
  • 28. 28Copyright©2017 NTT Corp. All Rights Reserved. 質問など tsuyuzaki.kota@lab.ntt.co.jp IRC: kota_