- 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通りあってこれもまた混乱します。(どう使い分ければいいのか等)
よろしくお願いいたします。
> 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の概念が理解出来れば全てがスッキリ理解できるんじゃないかと思います。
はい、それは理解しています。
「関係を教えてください」というのが質問です。
> 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の概念が理解出来れば全てがスッキリ理解できるんじゃないかと思います。
おお!いつもありがとうございます!
> 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> VolumeのSnapshotを作ってもどこかのS3バケットに見える形でオブジェクトが出来てるようには見えませんよね。
たしかにそうですね。Snapshotはどこに置いてあるかは、気にしなくてもよさそうですね。(気にしてもしょうがない)
> AMIというのはInstanceを起動するためのHDD構成を記述した設定ファイルだと思えば良いと思います。SnapshotやVolumeと一緒に出てきますが、その外にあり、どのSnapshotを元にしたVolumeを繋げて起動するかが書いてあるモノです。
> 実際、AMIに含まれる主な情報は「Name、CPUアーキテクチャ(i386/x86_64)、何GBのHDDをなんというデバイス名でつなげておくか」ということが書いてあるだけです。ただの設定セットなのでAMI単体ではディスク容量などは食いません。
なるほど!
やっと理解できました。
わかりやすい明確な回答ありがとうございました。