AWSで下記の4つの概念の関係を明確に教えていただけないでしょうか?


- Instance
- Volume
- Snapshot
- AMI

個々の概念は下記のように理解しています。

- Instance(いわゆるサーバ、ホスト)
- Volume (ブロック型ストレージ。HDDのようなもの)
- Snapshot (S3上のオブジェクト)
- AMI (仮想マシンのひながた)

しかし4つの関係がわからなくなることがよくあります。

例えばVolumeとSnapshotはそれ単体で存在できるのでわかりやすいのですが、AMIってそれだけでは存在しなくて、Snapshot(またはVolume?)と表裏一体だったりしますよね。
ということはAMIとは必ずAMI on Snapshot またAMI on Volumeということになるのでしょうか。

また、EBS root Instanceは、「ルートデバイスがEBSであるインスタンス」と理解していますが、そのroot EBSをdetachしたりできますよね?
(rootをdetachしたEBS root Instanceっていったいなんじゃらホイと思ってしまいます。)

あとはEBS root Instanceをバックアップとるときに、Create Image(EBS AMI)する方法とSnapshotを取る方法と2通りあってこれもまた混乱します。(どう使い分ければいいのか等)

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/05/26 14:08:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント200pt

> Instance(いわゆるサーバ、ホスト)
あってます


> Volume (ブロック型ストレージ。HDDのようなもの)

あってます。


> Snapshot (S3上のオブジェクト)

ここでは単にある時点のVolumeのコピーを保存したものと思っておけば良いと思います。

でたまたまそれが裏ではS3に保存されてるだけくらいと思っておけば良いです。実際ドキュメントにはS3という言葉が出てきますがあまりS3に捕われないほうが良いです。例えばEC2 ConsoleでVolumeのSnapshotを作ってもどこかのS3バケットに見える形でオブジェクトが出来てるようには見えませんよね。


> AMI (仮想マシンのひながた)

その後の文章を見るとAMIという何かがSnapshotやVolumeの上に保存されてるみたいなイメージをされてるように見えますがちょっと違います。

AMIというのはInstanceを起動するためのHDD構成を記述した設定ファイルだと思えば良いと思います。SnapshotやVolumeと一緒に出てきますが、その外にあり、どのSnapshotを元にしたVolumeを繋げて起動するかが書いてあるモノです。

実際、AMIに含まれる主な情報は「Name、CPUアーキテクチャ(i386/x86_64)、何GBのHDDをなんというデバイス名でつなげておくか」ということが書いてあるだけです。ただの設定セットなのでAMI単体ではディスク容量などは食いません。

で、このときルートデバイスとしてOSが入ったHDD(Volume)が必要なのですが、そのHDDの元になるのがSnapshotです。

一番単純な構成のAMIではルートディスクに元になる特定Snapshotを指定して終わりです。複雑な例では更に空の100GBのHDDを/dev/sdbにつなげておくとか、/dev/sdcにはOSとは関係ないデータディスクのSnapshotを元にしたVolumeを繋げた構成などを作ることができます。


で、Instanceの起動は、AMIでハードウェア構成(どんなOSが入ったHDD繋げておくか)を指定して、あとはセキュリティグループやインスタンスタイプ(CPUやメモリのスペック)を指定して起動するだけということになるわけです。
おそらくAMIの概念が理解出来れば全てがスッキリ理解できるんじゃないかと思います。

id:DQNEO

おお!いつもありがとうございます!


> VolumeのSnapshotを作ってもどこかのS3バケットに見える形でオブジェクトが出来てるようには見えませんよね。

たしかにそうですね。Snapshotはどこに置いてあるかは、気にしなくてもよさそうですね。(気にしてもしょうがない)


> AMIというのはInstanceを起動するためのHDD構成を記述した設定ファイルだと思えば良いと思います。SnapshotやVolumeと一緒に出てきますが、その外にあり、どのSnapshotを元にしたVolumeを繋げて起動するかが書いてあるモノです。

> 実際、AMIに含まれる主な情報は「Name、CPUアーキテクチャ(i386/x86_64)、何GBのHDDをなんというデバイス名でつなげておくか」ということが書いてあるだけです。ただの設定セットなのでAMI単体ではディスク容量などは食いません。

なるほど!
やっと理解できました。
わかりやすい明確な回答ありがとうございました。

2013/05/26 14:07:14

その他の回答1件)

id:dawakaki No.1

回答回数797ベストアンサー獲得回数122

Instance
サービスを動かすための実体。仮想マシンだと思って下さい。

Volume
ハードディスク領域のこと。

Snapshot
バックアップ用データのこと。

AMI
OSの起動イメージ(OS関連ファイル一式)のこと。

id:DQNEO

はい、それは理解しています。
「関係を教えてください」というのが質問です。

2013/05/26 14:03:51
id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226ここでベストアンサー

ポイント200pt

> Instance(いわゆるサーバ、ホスト)
あってます


> Volume (ブロック型ストレージ。HDDのようなもの)

あってます。


> Snapshot (S3上のオブジェクト)

ここでは単にある時点のVolumeのコピーを保存したものと思っておけば良いと思います。

でたまたまそれが裏ではS3に保存されてるだけくらいと思っておけば良いです。実際ドキュメントにはS3という言葉が出てきますがあまりS3に捕われないほうが良いです。例えばEC2 ConsoleでVolumeのSnapshotを作ってもどこかのS3バケットに見える形でオブジェクトが出来てるようには見えませんよね。


> AMI (仮想マシンのひながた)

その後の文章を見るとAMIという何かがSnapshotやVolumeの上に保存されてるみたいなイメージをされてるように見えますがちょっと違います。

AMIというのはInstanceを起動するためのHDD構成を記述した設定ファイルだと思えば良いと思います。SnapshotやVolumeと一緒に出てきますが、その外にあり、どのSnapshotを元にしたVolumeを繋げて起動するかが書いてあるモノです。

実際、AMIに含まれる主な情報は「Name、CPUアーキテクチャ(i386/x86_64)、何GBのHDDをなんというデバイス名でつなげておくか」ということが書いてあるだけです。ただの設定セットなのでAMI単体ではディスク容量などは食いません。

で、このときルートデバイスとしてOSが入ったHDD(Volume)が必要なのですが、そのHDDの元になるのがSnapshotです。

一番単純な構成のAMIではルートディスクに元になる特定Snapshotを指定して終わりです。複雑な例では更に空の100GBのHDDを/dev/sdbにつなげておくとか、/dev/sdcにはOSとは関係ないデータディスクのSnapshotを元にしたVolumeを繋げた構成などを作ることができます。


で、Instanceの起動は、AMIでハードウェア構成(どんなOSが入ったHDD繋げておくか)を指定して、あとはセキュリティグループやインスタンスタイプ(CPUやメモリのスペック)を指定して起動するだけということになるわけです。
おそらくAMIの概念が理解出来れば全てがスッキリ理解できるんじゃないかと思います。

id:DQNEO

おお!いつもありがとうございます!


> VolumeのSnapshotを作ってもどこかのS3バケットに見える形でオブジェクトが出来てるようには見えませんよね。

たしかにそうですね。Snapshotはどこに置いてあるかは、気にしなくてもよさそうですね。(気にしてもしょうがない)


> AMIというのはInstanceを起動するためのHDD構成を記述した設定ファイルだと思えば良いと思います。SnapshotやVolumeと一緒に出てきますが、その外にあり、どのSnapshotを元にしたVolumeを繋げて起動するかが書いてあるモノです。

> 実際、AMIに含まれる主な情報は「Name、CPUアーキテクチャ(i386/x86_64)、何GBのHDDをなんというデバイス名でつなげておくか」ということが書いてあるだけです。ただの設定セットなのでAMI単体ではディスク容量などは食いません。

なるほど!
やっと理解できました。
わかりやすい明確な回答ありがとうございました。

2013/05/26 14:07:14
  • id:y-kawaz
    > あとはEBS root Instanceをバックアップとるときに、Create Image(EBS AMI)する方法とSnapshotを取る方法と2通りあってこれもまた混乱します。(どう使い分ければいいのか等)

    この部分は回答していませんでしたが、ついでに説明しておきますね。
    簡単に言うと CreateImage=CreateSnapshot+CreateAmi なだけです。

    先に述べたとおり AMI はHDDを構成を記述した設定セットです。
    既存のInstanceと同じAMIを作りたい場合は、まずルートボリュームのSnapshotを取り、そのSnapshotをルートデバイスに紐付けたAMIを作るという手順になります。
    CreateImage はその決まりきった手順を一発で行なってくれるだけのものです。

    CreateImageのメリットは操作が簡単でお手軽なことです。
    対してCreateSnapshotとCreateAmiを別に行うことのメリットは柔軟なバックアップや起動構成を自分で管理できるということです。
  • id:DQNEO
    さらに追加コメントまで、ありがとうございます!

    もやもやしてたのが明確に理解できるようになりました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません