1 背景 1.1 Ceph の紹介
Ceph RBD はシンプロビジョニングをサポートしています。これは、オンデマンドでスペースを割り当てることを意味し、Linux ファイルシステムのスパースファイルに似ています。 20 GB の仮想ハードディスクを作成すると、最初は物理的なストレージ領域を占有しません。ストレージ スペースは、データが書き込まれるときにのみオンデマンドで割り当てられます。
Ceph の詳細については、公式ドキュメントを参照してください。ここでは RBD のみに焦点を当てます。 RBD によって管理されるコア オブジェクトはブロック デバイスであり、通常はボリュームと呼ばれますが、Ceph ではイメージと呼ばれます (OpenStack イメージとの違いに注意してください)。 Ceph には、名前空間に似たプールの概念もあります。異なるプールでは、異なるレプリカ数、PG 数、配置戦略などを定義できます。各イメージではプールを指定する必要があります。イメージの命名規則は pool_name/image_name@snapshot です。たとえば、openstack/test-volume@test-snap は、openstackpool 内の test-volumeimage のスナップショット test-snap を意味します。したがって、次の 2 つのコマンドは同等です。
OpenStack プールに 1G イメージを作成するコマンドは次のとおりです。
イメージはスナップショット機能をサポートしています。スナップショットを作成すると、現在のイメージのステータスが保存されます。これは、git commit 操作と同等です。ユーザーはいつでもイメージを任意のスナップショット ポイントにロールバックできます (git reset)。スナップショットを作成するコマンドは次のとおりです。
rbd リストを表示します:
スナップショットに基づいて、クローンと呼ばれる新しいイメージを作成できます。クローンでは元のイメージがすぐにコピーされるのではなく、COW 戦略、つまりコピーオンライトが使用されます。オブジェクトを書き込む必要がある場合にのみ、オブジェクトが親からローカルにコピーされます。したがって、クローン操作は基本的に数秒で完了します。同じスナップショットに基づいて作成されたすべてのイメージは、スナップショット前のイメージ データを共有することに注意してください。したがって、クローンを作成する前にスナップショットを保護する必要があります。保護されたスナップショットは削除できません。クローン操作は、git ブランチ操作に似ています。イメージを複製するコマンドは次のとおりです。
イメージにどの子があるかを確認できるほか、イメージがどのイメージ クローンに基づいているか (親) も確認できます。
上記から、int32bit-test-2 は int32bit-test-1 の子であり、int32bit-test-1 は int32bit-test-2 の親であることがわかります。 スナップショットを継続的に作成し、イメージを複製すると、非常に長いイメージ チェーンが形成されます。チェーンが非常に長い場合、読み取りおよび書き込みのパフォーマンスに影響するだけでなく、管理も非常に面倒になります。幸いなことに、Ceph はチェーン上のすべてのイメージを 1 つのイメージにマージすることをサポートしています。この操作は flatten と呼ばれ、git merge 操作に似ています。フラット化では、最上位レベルの存在しないデータをすべてレイヤーごとにコピーする必要があるため、通常は非常に時間がかかります。
この時点で、親子関係をもう一度見てみましょう。
この時点では、int32bit-test-1 には子がなく、int32bit-test-2 は完全に独立しています。 もちろん、Ceph は copy と呼ばれる完全なコピーもサポートしています。
コピーはイメージを完全にコピーするため、非常に時間がかかりますが、コピーでは元のスナップショット情報はコピーされないことに注意してください。 Ceph は RBD イメージのエクスポートをサポートしています。
「エクスポート」では画像全体がエクスポートされます。 Ceph は、特定のスナップショット ポイントからエクスポートを開始することを指定する差分エクスポート (export-diff) もサポートしています。
上記は、スナップショット ポイント snap-1 からスナップショット ポイント snap-2 にデータをエクスポートします。 もちろん、反対の操作は import と import-diff です。エクスポート/インポートは完全なイメージ バックアップをサポートしますが、エクスポート diff/インポート diff は差分イメージ バックアップを実装します。 Rbd イメージはストレージ スペースを動的に割り当てます。 du コマンドを使用すると、イメージが占有する実際の物理ストレージ領域を表示できます。
上記のイメージ割り当てのサイズは 1024M で、実際に占有されるスペースは 12288KB です。 画像を削除します。最初にすべてのスナップショットを削除し、依存する子がないことを確認する必要があることに注意してください。
1.2 OpenStackの概要 OpenStack は、IaaS レイヤーにおけるクラウド コンピューティング プラットフォームのオープン ソース実装です。 OpenStack の詳細については、私の個人ブログをご覧ください。ここでは、OpenStack が Ceph ストレージ システムに接続されたときに、ソース コード分析に基づいて Ceph が段階的に実行する内容にのみ焦点を当てます。この記事では、OpenStack のワークフロー全体を詳細に紹介するのではなく、Ceph に関連する実装にのみ焦点を当てます。 OpenStack ソース コードのアーキテクチャがよくわからない場合は、OpenStack ソース コードの読み方に関する以前の記事を参照してください。 この記事を読むと、次の質問が理解できるようになります。
この記事は Ceph ストレージを使用することを前提としていることに注意してください。つまり、Glance、Nova、Cinder はすべて Ceph を使用します。この結論は他の場合には当てはまらない可能性があります。 (注: 元記事にはソースコードがあり、5,000 語の制限を超えているため簡略化されています。詳細な導出と検証のプロセスを確認する必要がある場合は、元のリンクを確認してください。また、要約セクションにすぐにジャンプして、各 OpenStack 操作に対応する Ceph の動作を確認できます。) 2 一目見る 2.1 Glance の紹介 Glance によって管理されるコアエンティティは、OpenStack のコアコンポーネントの 1 つであるイメージです。 OpenStack のイメージ サービス (Image as Service) を提供し、主に OpenStack イメージとイメージ メタデータのライフサイクル管理、取得、ダウンロードを担当します。 Glance は、複数のストレージ システムへのイメージの保存をサポートしています。バックエンドのストレージシステムはストアと呼ばれ、イメージにアクセスするためのアドレスはロケーションと呼ばれます。場所は、http アドレスまたは rbd プロトコル アドレスにすることができます。ストア ドライバーが実装されていれば、Glance のストレージ バックエンドとして使用できます。ドライバーの主なインターフェースは次のとおりです。
メンテナンスの容易さのため、glance store は独立したライブラリとして Glance コードから分離され、glance_store プロジェクトによってメンテナンスされています。現在コミュニティによってサポートされているストアのリストは次のとおりです。
http: 上記のすべてのストアは画像データを保存しますが、http ストアは特別です。画像データを保存しないため、add メソッドは実装されません。画像のURLアドレスのみが保存されます。仮想マシンが起動すると、コンピューティング ノードは指定された http アドレスからイメージをダウンロードします。 この記事では、ソース コードがここにある rbd ストアに焦点を当てます。このストアのドライバー コードは主に中国の Fei Long Wang によって管理されています。他のストアの実装の詳細については、Glance ストア ドライバーのソース コードを参照してください。 3 ノヴァ 3.1 Novaの紹介 Nova によって管理されるコア エンティティはサーバーであり、OpenStack にコンピューティング サービスを提供して OpenStack のコア コンポーネントとなります。 Nova のサーバーは仮想マシンだけを指すのではなく、あらゆるコンピューティング リソースの抽象化である可能性があることに注意してください。仮想マシン以外にも、ベアメタルマシンやコンテナなどでも構いません。 ただし、ここでは次のことを前提としています。
仮想マシンを起動する前に、まずルート ディスク (Nova ではイメージと呼ばれます) を準備する必要があります。 Glance と同様に、Nova のイメージはローカル ディスク、Ceph、Cinder (ボリュームからのブート) のストレージもサポートします。画像が保存される場所は画像の種類によって決まることに注意してください。 raw、qcow2、ploop などでローカルディスクに保存できます。イメージタイプが rbd の場合、イメージは Ceph に保存されます。異なる画像タイプは、異なる画像バックエンドによって管理されます。 rbd バックエンドは、nova/virt/libvirt/imageackend の Rbd クラス モジュールによって実装されます。 4 シンダー 4.1 Cinderの紹介 Cinder は AWS の EBS に似た OpenStack のブロック ストレージ サービスであり、管理するエンティティはボリュームです。 Cinder はボリュームプロバイダー機能を実装していませんが、Ceph、Fujitsu、NetApp などのさまざまなストレージシステムのボリュームの管理を担当します。ボリュームの作成、スナップショット、バックアップなどの機能をサポートしています。接続されたストレージ システムはバックエンドと呼ばれます。 cinder/volume/driver.py の VolumeDriver クラスで定義されたインターフェースが実装されている限り、Cinder はストレージ システムに接続できます。 Cinder はローカル ボリュームの管理をサポートするだけでなく、別の Ceph クラスターや Swift オブジェクト ストレージ システムなどのリモート ストレージ システムにローカル ボリュームをバックアップすることもできます。この記事では、ソース Ceph クラスターからリモート Ceph クラスターにバックアップするケースのみを検討します。 5 結論 5.1 概要 1. 画像をアップロードする
2. 画像を削除する
5.2 ノヴァ 1 仮想マシンを作成する
2 仮想マシンのスナップショットを作成する
3 仮想マシンの削除
5.3 シンダー 1 ボリュームを作成する (1)空のボリュームを作成する
(2)スナップショットから作成
(3)ボリュームから作成
(4)イメージから作成する
2 スナップショットを作成する
3 バックアップを作成する (1)最初のバックアップ
(2)増分バックアップ
4 バックアップとリカバリ
|
<<: 企業はクラウド コンピューティングをどのように活用してユーザーにリーチし、コストを削減できるでしょうか?
>>: 企業のデータ分析をクラウドに移行するのは簡単ではない
著者のQQ空間資料ネットワークは、オンラインになってから1か月以上経ちました。百度は週に2回更新する...
[[383770]]この記事はWeChatの公開アカウント「大宇賢人」から転載したもので、著者は大宇...
eName.cnは6月4日、WeChatはテンセントの独占遺伝子を変えていないと報じた。WeChat...
タオバオモールの名称変更広告新浪科技報、1月11日朝のニュースによると、淘宝ショッピングモール(微博...
inceptionhosting は典型的なワンマンブランドです。海外では評判が良いのですが、一部の...
組織は、アプリケーションとデータをオンプレミスからクラウドに移行する際に直面する主な課題を理解する必...
Prometeus の 17 周年を記念して、公式に KVM ベースの仮想 SSD ハード ディスク...
5周年を記念して、hosteonsは特別な記念イベントを開始しました。すべてのVPSのトラフィックが...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスランキングを上げるコツは...
ほぼすべての Google アルゴリズムのアップデートは、アフィリエイト マーケターにとって大きな打...
本日、Sina が Lakala と O2O 分野およびモバイル決済で提携した場合、両社が提携する可...
誰もが今同じような考えを持っているに違いありません。つまり、タオバオとTmallでビジネスをするのは...
[[415285]]クラウド コンピューティングにはさまざまなオプションがあるため、CIO からイン...
多くのウェブマスターは、この質問について考えています。インクルージョンとランキングには関係があります...
昨年11月、当社は「合肥レンタカー」をメインキーワードとするサイトを引き継ぎました。このサイトを分析...