AWS Perbedaan antara snapshot dan AMI


108

Jadi saya kesulitan mencari tahu apa, khususnya perbedaan antara keduanya.

Seperti yang saya pahami, snapshot hanyalah cadangan dari disk drive, sedangkan AMI adalah cadangan dari seluruh sistem (atau contoh yang harus saya katakan), tetapi bukankah seluruh sistem secara teknis sepenuhnya berada di disk drive? dan jika itu masalahnya maka tidak ada perbedaan yang jelas dan saya kehilangan sesuatu?

Jawaban:


70

Ada dua jenis AMI (dan contoh terkait):

  1. instans-store (terkadang disebut berbasis S3). Ini kurang umum dan saya tidak merekomendasikannya untuk pemula. AMI penyimpanan instans adalah salinan dari volume penyimpanan instans akar ditambah beberapa metadata, semuanya disimpan dalam bucket S3 dalam format khusus

  2. Boot EBS. Ini mungkin yang Anda gunakan. AMI booting EBS adalah cuplikan EBS dari volume root EBS ditambah beberapa metadata seperti arsitektur, kernel, nama AMI, deskripsi, blokir pemetaan perangkat, dan banyak lagi.

Anda dapat mengambil snapshot dari volume boot EBS dan mengubahnya menjadi AMI booting EBS dengan mendaftarkannya dengan metadata yang sesuai. Bagian tersulit dari ini adalah menentukan id AKI (kernel) yang benar sehingga boot dengan benar.


Terima kasih eric, saya sudah mencadangkan gambar AMI, dan saya memiliki opsi untuk meluncurkan dan mendaftarkannya? Saya bingung apa perbedaannya di sini ...
Melbourne2991

Saya tidak tahu apa yang Anda maksud dengan "mencadangkan gambar AMI".
Eric Hammond

8
Saat Anda mengeklik "buat AMI" EC2 membuat cuplikan EBS dari volume EBS instans tersebut dan mendaftarkannya sebagai AMI. Anda dapat meluncurkan instans baru yang menetapkan AMI tersebut sebagai titik awal. Anda juga dapat membuat volume baru snapshot EBS jika Anda hanya ingin melihat file di dalamnya tanpa menjalankan instance baru.
Eric Hammond

6
Alternatifnya, Anda dapat membuat snapshot EBS dari volume EBS sendiri, dan kemudian mendaftarkan snapshot tersebut sebagai AMI. Ini adalah cara yang sedikit lebih sulit untuk membuat AMI karena mengharuskan Anda mengetahui atribut pendaftaran AMI yang sesuai untuk disetel. "Buat AMI" melakukan semua ini untuk Anda.
Eric Hammond

1
@ cosbor11 Anda tidak dapat menghapus snapshot untuk AMI.
Eric Hammond

24

Perbedaan utama adalah antara jenis layanan yang dirujuk. Snapshot adalah volume EBS tempat Anda dapat menyimpan status dan melakukan booting ulang dengan data yang sama pada titik waktu tertentu.

AMI serupa, tetapi untuk instans EC2 itu sendiri. Anda tidak dapat mengambil snapshot dari instance yang tidak didukung ebs, tetapi Anda dapat membuat AMI (image sistem) salah satunya.

Umumnya saya menggunakan snapshot EBS sebagai solusi cadangan untuk volume database dan saya menggunakan AMI untuk menyimpan konfigurasi instance


1
Bagaimana jika volume saya berisi database saya serta konfigurasi instans saya? Apa yang AMI simpan tetapi snapshot EBS tidak (dan sebaliknya)? Terima kasih
Melbourne2991

1
AMI segera dapat diluncurkan ke instance baru. snapshot EBS dapat disalin ke volume baru (disk virtual). Disk virtual tersebut dapat digunakan sebagai dasar untuk instance baru, tetapi ini bukan instance dengan sendirinya.
Dan Pritts

16

AMI dapat dibuat menggunakan snapshot. Misalnya, dengan menggunakan satu "snapshot" Anda dapat membuat beberapa AMI, katakanlah satu PV dan satu HVM AMI menggunakan snapshot yang sama.

Jadi, snapshot memiliki data sistem / OS. AMI adalah (snapshot + metadata mesin / perangkat keras).


1
jika saya memiliki AMI, itu adalah instance yang dibuat darinya. Apakah AMI menyertakan data pada contoh itu? Maksud saya, jika instance berisi file WAR tomcat, AMI tempat instance itu dibuat, termasuk juga?
Dejell

1
Jika Anda membuat AMI dari instance yang berisi tomcat (atau file apa pun), AMI yang baru dibuat akan berisi file / data tersebut. Setiap instance yang dibuat lebih lanjut dari AMI ini akan memiliki file-file ini. Namun, AMI sumber tempat Anda membuat instance tidak akan memilikinya (dengan asumsi Anda menambahkan file ke instance setelah pembuatan instance).
Anshu Prateek

15

Saya juga bingung dengan itu. Berikut cara termudah untuk memahaminya:

  • EBS Snapshot sangat sering mewakili cadangan volume EBS tertentu, mungkin volume apa pun (Volume root, volume data, dll.)

  • AMI(Amazon Machine Image) adalah cadangan Seluruh instans EC2. Misalnya, dengan konfigurasi yang tepat dimungkinkan untuk membuat AMI yang menyertakan beberapa volume EBS.

Sekarang, ini mungkin terdengar membingungkan, tetapi keduanya disimpan sebagai "EBS Snapshots".

Coba pikirkan seperti itu:

  • EBS Snapshot hanyalah cadangan data.
  • AMIadalah representasi dari keadaan sistem pada waktu tertentu. Anda juga dapat melakukan boot dari itu.

Jadi, jika saya membuat snapshot dari volume root, dapatkah snapshot itu digunakan untuk meluncurkan sebuah instance?
gaurav parashar

1
Jawaban singkat: Tidak. Ini tidak dapat dilakukan secara langsung hanya dengan menggunakan volume karena "opsi booting" yang tersedia untuk EC2 hanyalah AMI. Namun, Anda dapat membuat AMI dari volume dan meluncurkan instance dari AMI yang baru dibuat (seperti opsi tidak langsung).
skryvets

7

EBS Volumeadalah disk yang mendasari di belakang EC2. Snapshotadalah cadangan waktu tertentu volumesementara AMI adalah cadangan seluruh instans EC2 yang mungkin memiliki beberapa volume yang terpasang, persis seperti mesin virtual.

Dengan Packer , Anda dapat membuat image mesin otomatis termasuk AMI untuk EC2, file VMDK / VMX untuk VMware, ekspor OVF untuk VirtualBox, dll.

EC2  <-- EBS Volume (Boot) + EBS Volume 
                        ^
                        |
                     Snapshot (only of specific volume)       
                        ^
                        |
                       AMI (Combined snapshots of all volumes, snapshot must have boot volume) 
                        ^
                        | 
                  Launch a new Instance (same installed softwares and configs, different specs) 

Jepretan dapat digunakan untuk mem-backup drive / volume. Ini adalah operasi pencadangan tambahan yang berarti setiap kali Anda mengambil snapshot dari suatu volume, ini hanya akan menambahkan perubahan baru yang ditambahkan / diperkenalkan ke volume sejak pencadangan terakhir Anda (bukan seluruh pencadangan), yang menghemat waktu, ruang, dan pada akhirnya biaya pencadangan .

Foto dapat digunakan di:

  • Cadangkan drive secara teratur

  • Ubah jenis volume, misalnya Anda memiliki lalu lintas atau membaca dan menulis dan perlu meningkatkan operasi IO sehingga Anda mengubah dari gp2 menjadi io1dengan yang lebih tinggiIOPs

AMI kustom dapat digunakan di:

  • Untuk pemulihan bencana jika instans EC2 yang sedang berjalan rusak dan tidak dapat berjalan tanpa alasan.

  • AMI perusahaan standar yang memiliki semua perangkat lunak prasyarat terinstal yang menyederhanakan proses penerapan (misalnya, dikonfigurasi untuk terhubung ke `Splunk, memiliki beberapa perangkat lunak pemantauan dan pengamatan yang diinstal, telah menginstal buruh pelabuhan, atau dikonfigurasi untuk menghubungkan Puppet atau Chef saat startup)

  • AMI dapat digunakan untuk menyebarkan aplikasi Anda di berbagai wilayah dengan mudah.

  • Tingkatkan server Anda ke spesifikasi yang lebih tinggi atau berbeda dengan semua perangkat lunak yang terpasang dan konfigurasinya

  • AMI dapat dibagikan secara publik di seluruh akun AWS.


Paragraf pertama Anda adalah definisi paling jelas yang pernah saya baca sejauh ini. Terima kasih!
specialk1st

5

Berikut adalah beberapa perbedaan lagi antara AMI dan Snapshots EBS:

1) AMI dapat diluncurkan dan berisi tautan ke perangkat root dan mungkin berisi tautan ke snapshot dari volume data lainnya.

2) Gambar data yang terdapat dalam AMI tidak mewakili titik waktu yang ditentukan dengan baik, kecuali jika instance di-boot ulang, sesuatu yang biasanya tidak dapat diterima untuk lingkungan produksi. Snapshot dapat diambil dengan cara yang konsisten karena titik waktunya yang tepat dapat dikontrol, jadi sebelum snapshot dimulai, dapat dipastikan bahwa semuanya "siap untuk cadangan".

3) AMI dapat dibuat dari snapshot perangkat root yang ada untuk Linux tetapi tidak untuk Windows.


2

Sesuai definisi yang diberikan oleh AWS,

AMI adalah template tempat Anda dapat memulai instans EC2. Snapshot EBS adalah salinan tingkat blok dari volume EBS. Volume EBS dapat berupa volume boot (yaitu berisi sistem operasi), atau volume data-only (misalnya berisi file database). Anda menggunakan RegisterImage untuk membuat AMI (dari snapshot).

Ini adalah dua konsep berbeda, diterapkan pada tingkat yang berbeda (volume EBS vs template EC2) Namun, ada beberapa ketergantungan di antara kedua konsep tersebut.

Untuk instans EC2 yang didukung EBS (yaitu instans EC2 yang melakukan boot dari volume EBS), AMI diimplementasikan sebagai Snapshot EBS dari volume boot + beberapa data meta (arsitektur mesin - 32 vs 64 bit -, jenis virtualisasi - HVM vs PV - dll ...)

Jadi, untuk instans EC2 yang didukung EBS, AMI adalah snapshot EBS + file XML. Anda bahkan dapat membuat AMI Anda sendiri berdasarkan snapshot dari volume boot yang Anda miliki.


1

Snapshots lebih murah untuk digunakan sebagai strategi cadangan, karena ketika Anda memiliki beberapa snapshot, Anda hanya membayar untuk satu backup penuh dan sisanya, pada dasarnya, hanya berbeda, dan biasanya jauh lebih kecil.


6
Ini tidak berlaku untuk AMI booting EBS karena ini persis snapshot EBS ditambah sedikit metadata. Biayanya akan sama.
Eric Hammond

1

Anda dapat menganggap AMI sebagai template umum untuk mesin dengan OS dan komponen terinstal yang dipertahankan.

Snapshot dapat menyertakan semua yang dilakukan AMI, tetapi juga menyimpan data disk dari volume EBS.

Yang mana yang Anda putuskan untuk digunakan umumnya akan ditentukan oleh apakah instans Anda didukung EBS dan apakah Anda ingin membuat ulang mesin dengan semua data utuh atau hanya ingin template mesin generik.


Jadi AMI tidak menyimpan volume EBS?
Melbourne2991

1
AMI dapat diatur untuk menyertakan satu atau lebih volume EBS, tetapi volume tersebut akan kosong saat boot, volume tersebut tidak akan berisi data yang dimuat mesin sumber asli.
CIGuy

Jadi AMI sebenarnya hanya meta data (tidak yakin apakah itu istilah yang tepat)? Seperti apa OS yang Anda gunakan, ukuran instance, dll.? Secara teknis ukurannya hanya beberapa kb.
Melbourne2991

1
AMI juga menyimpan program apa pun yang telah Anda instal pada mesin, opsi konfigurasi level os, dll. Jadi, ini bukan hanya meta-data, tetapi ya, biasanya jauh lebih kecil daripada snapshot.
CIGuy

1
Jawaban ini salah. AMI mencakup satu atau lebih snapshot. Artinya, ini mereferensikan satu atau beberapa snapshot (tidak ada penyalinan data), dan juga menyimpan beberapa metadata tambahan. Inilah mengapa Anda tidak dapat menghapus snapshot jika saat ini sedang digunakan oleh AMI. docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html Lihat juga kontribusi Eric Hammond di utas ini.
Max Barraclough

0

Dari definisi yang disediakan oleh AWS, ini memperjelas perbedaannya - Amazon Machine Image (AMI) adalah templat yang berisi konfigurasi perangkat lunak (misalnya, sistem operasi, server aplikasi, dan aplikasi). Dari AMI, Anda meluncurkan sebuah instance, yang merupakan salinan AMI yang dijalankan sebagai server virtual di cloud. Sedangkan untuk Snapshots Anda dapat mencadangkan data pada volume EBS Anda ke Amazon S3 dengan mengambil snapshot point-in-time. Snapshot adalah cadangan tambahan, yang berarti hanya blok pada perangkat yang telah berubah setelah snapshot terbaru Anda yang disimpan. Saat Anda menghapus snapshot, hanya data eksklusif untuk snapshot itu yang dihapus.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.