OSSのクラウド基盤「Eucalyptus」を使う(3)--EBSの実装方式

箕浦真(VA Linux Systems Japan)
2009-06-25 11:51:01
  • このエントリーをはてなブックマークに追加

 スロット番号はEucalyptusが管理し、外部から制御することはできませんので、一般的には既に使われているAoEターゲットとスロット番号の衝突が避けられません。もちろん、前々回の記事の図2のように専用ネットワークを利用する前提では問題になりません。

 EBSのボリューム作成(CreateVolume) 時の動作は以下の通りです。

  1. CLCノードのローカルディスクに空のファイルが作られる(dd if=/dev/zero)。
  2. これをloopデバイスにくくりつけ(losetup)、PVとして設定する(pvcreate)。
  3. 2.のPVだけを含むVGを作成する(vgcreate)。
  4. 3.のVGをフルに使ったLVが作られる(lvcreate)。
  5. 4.のLVを、vbladeを使ってATA over Ethernetのターゲットとする。エクスポート先は前々回の記事の図2で言えば専用ネットワーク側のNIC。

 これをインスタンスに割り当てる(AttachVolume)と、CC経由でNCがAoEデバイスを指定インスタンスに割り当てます(Xenであれば、xm block-attach相当)。

 ところでEucalyptusのEBSでも、ボリュームのスナップショットを取る機能が実装されています。しかし、1.5.1の段階では、オンライン(インスタンスがmountしている)のボリュームのスナップショットが正しく取れないなどの問題があるので注意が必要です。この件は報告済みで、Eucalyptusの次の版では修正されるはずですので、この修正済みの動作を説明します。

  1. CLCノードのローカルディスクに空のファイルが作られる(dd if=/dev/zero)。
  2. これをloopデバイスにくくりつけ(losetup)、PVとして設定する(pvcreate)。
  3. スナップョット元ボリュームに対応するLVの属するVGに対して、2.のPVを追加する(vgextend)。
  4. 3.で空きのできたVGにスナップショットLVを作成する(lvcreate -s)。
  5. CLCノードのローカルディスクに再度空のファイルが作られる(dd if=/dev/zero)。
  6. 5.をloopデバイスにくくりつける(losetup)。
  7. 4.のスナップショットLVの内容を6.にコピーする(dd)。
  8. 4.のスナップショットLVを削除する(lvremove)。
  9. VGから2.のPVを削除(vgreduce)し、loopを解除(losetup -d)、ファイル自体も削除する。

 以上により、スナップショットの内容は元のボリュームとは別に保存されることになります。従って、元のボリュームを削除してもスナップショットは残ります。スナップショットの内容を見るためには、そのスナップショットに対応するボリュームを作成した上でインスタンスに割り当てる必要があります。その手順は空のボリュームのときとほぼ同じですが、LVを作成した後に上記のスナップショットの内容を流し込む手順が追加されます。

5. その他のリソースの割り当て

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]