Saya memiliki pertanyaan yang sama dengan Anda, jadi saya mencari cara untuk melakukannya.
Pertama, saya melakukan ini dari Ubuntu 32-bit EBS yang didukung EBS dari wilayah AS-Timur, OS atau gambar lain dapat bekerja secara berbeda. Namun, saya menduga Anda harus baik-baik saja, selama Anda menggunakan sistem file * ext. Ini mungkin bekerja pada sistem file lain, tetapi Anda harus mencari cara untuk mengubah ukurannya sendiri.
Langkah-langkahnya pada dasarnya:
Lampirkan dua volume ke instance yang berjalan, yang pertama berdasarkan snapshot yang ingin Anda susutkan, dan yang kedua volume kosong yang memiliki ukuran baru yang ingin Anda susutkan.
Periksa sistem file volume pertama dan perbaiki kesalahan.
Kecilkan sistem file pada volume pertama sehingga hanya sebesar yang dibutuhkan untuk menyimpan data.
Salin sistem file dari volume pertama ke volume kedua.
Perluas sistem file pada volume kedua ke ukuran maksimumnya.
Pastikan semuanya terlihat bagus dengan memeriksa volume kedua untuk kesalahan.
Ambil snapshot dari volume kedua.
Buat gambar mesin berdasarkan snapshot dari volume kedua yang baru saja Anda ambil.
Pertama-tama Anda perlu mendapatkan beberapa informasi dari ami yang ingin menyusut. Khususnya, Anda memerlukan ID kernel dan ID ramdisk, jika ada (gambar yang saya susut tidak memiliki ramdisk). Semua informasi ini harus tersedia dari konsol manajemen aws, di jendela AMI.
ID kernel terlihat seperti kia-xxxxxxxx, dan ID snapshot tampak seperti snap-xxxxxxxx, dan ID ramdisk terlihat seperti RIA-xxxxxxxx.
Selanjutnya, luncurkan instance linux. Saya meluncurkan instance Ubuntu. Anda dapat menggunakan turunan t1.micro jika suka. Tidak perlu banyak tenaga untuk melakukan langkah selanjutnya.
Setelah mesin berjalan, pasang snapshot yang Anda catat dari langkah pertama. Dalam kasus saya, saya lampirkan di / dev / sdf
Kemudian, buat volume baru, dengan ukuran yang Anda inginkan. Dalam kasus saya, saya membuat volume 5GB, karena itulah ukuran yang saya inginkan. Jangan buat volume baru ini dari snapshot. Kami membutuhkan volume kosong baru. Selanjutnya, lampirkan ke instance yang berjalan, dalam kasus saya, saya melampirkannya sebagai / dev / sdg
Selanjutnya, ssh ke dalam mesin tetapi jangan memasang volume yang terpasang.
Pada titik ini, saya melakukan kesalahan pada sisi paranoia, dan saya memilih untuk memeriksa sistem file pada volume yang besar, hanya untuk memastikan tidak ada kesalahan. Jika Anda yakin tidak ada, Anda dapat melewati langkah ini:
$ sudo e2fsck -f /dev/sdf
Selanjutnya, saya mengubah ukuran sistem file pada volume besar sehingga hanya sebesar data pada disk:
$ sudo resize2fs -M -p /dev/sdf
-M menyusut, dan -p mencetak progres.
Resize2fs akan memberi tahu Anda seberapa besar sistem file shrunkin. Dalam kasus saya, itu memberi saya ukuran dalam blok 4K.
Kami sekarang menyalin sistem file shrunkin ke disk baru. Kita akan menyalin data dalam potongan 16MB, jadi kita perlu mencari tahu berapa banyak potongan 16MB yang perlu kita salin. Di sinilah ukuran sistem file menyusut datang di handey.
Dalam kasus saya, sistem file menyusut hanya lebih dari 1 GB, karena saya telah menginstal banyak program lain pada sistem dasar Ubuntu sebelum mengambil snapshot. Saya mungkin bisa pergi hanya dengan menyalin ukuran sistem file dibulatkan ke 16MB terdekat, tetapi saya ingin bermain aman.
Jadi, 128 kali potongan 16MB = 2GB:
$ sudo dd if=/dev/sdf ibs=16M of=/dev/sdg obs=16M count=128
Saya menyalin dalam blok 16MB karena dengan EBS, Anda membayar untuk setiap membaca dan menulis, jadi saya ingin meminimalkan jumlahnya sebanyak mungkin. Saya tidak tahu apakah melakukannya dengan cara ini, tetapi mungkin tidak sakit.
Kita kemudian perlu mengubah ukuran sistem file yang baru saja kita salin ke volume baru sehingga menggunakan semua ruang yang tersedia pada volume.
$ sudo resize2fs -p /dev/sdg
Akhirnya, periksa, untuk memastikan semuanya baik-baik:
$ sudo e2fsck -f /dev/sdg
Hanya itu yang perlu kita lakukan di mesin ini, meskipun tidak ada salahnya untuk memasang volume baru, seperti tes. Namun, langkah ini hampir pasti opsional, karena e2fsck seharusnya menangkap masalah.
Kita sekarang perlu memotret volume baru, dan membuat AMI berdasarkan itu. Kami sudah selesai dengan mesin, sehingga Anda dapat menghentikannya jika mau.
Pastikan volume kecil dilepas jika Anda memasangnya, lalu ambil potretnya. Sekali lagi, Anda dapat melakukan ini di konsol manajemen.
Langkah terakhir membutuhkan alat commandline ec2.
EDIT:
Karena jawaban ini diposting, konsol AWS memungkinkan Anda untuk mengklik kanan sebuah snapshot dan memilih Create Image from Snapshot. Anda masih harus memilih ID Kernel yang sesuai. Jika tidak muncul dalam daftar pastikan Anda memilih arsitektur yang sesuai.
Kami menggunakan aplikasi ec2-register untuk mendaftarkan AMI berdasarkan snapshot yang baru saja Anda ambil, jadi tuliskan nilai snap-xxxxxxxx dari snapshot yang baru saja Anda ambil.
Anda kemudian harus menggunakan perintah seperti:
ec2-register -C cert.pem -K sk.pem -n The_Name_of_Your_New_Image
-d Your_Description_of_This_New_AMI --kernel aki-xxxxxxxx
-b "/dev/sda1=snap-xxxxxxxx" --root-device-name /dev/sda1
Anda tentu saja perlu mengganti ID kernel dengan yang Anda tulis di awal dan ID snapshot dengan yang Anda buat pada langkah sebelumnya. Anda juga perlu mengarahkannya ke kunci rahasia Anda (disebut sk.pem) di atas, dan sertifikat x509 Anda (disebut cert.pem). Anda tentu saja dapat memilih apa pun yang Anda inginkan untuk nama dan deskripsi.
Semoga ini membantu.
sudo e2fsck -f /dev/sdf
mungkin merupakan langkah yang diperlukan sebelum melakukan pengubahan ukuran (ada pada contoh khusus saya, Amazon Linux AMI).sudo mkfs -t ext4 /dev/sdg
,.Ya, saya juga bertanya-tanya. Tutorial berikut ini berlebihan, tetapi saya pikir ini berisi alat yang diperlukan: http://www.linuxconfig.org/Howto_CREATE_BUNDLE_UPLOAD_and_ACCESS_custom_Debian_AMI_using_ubuntu
Alih-alih menginstal ke disk image baru seperti di atas, seharusnya dimungkinkan untuk mengaktifkan AMI besar, membuat EBS baru, melampirkan EBS ke instance yang sedang berjalan, dan menyalin AMI yang sedang berjalan ke EBS baru. Akhirnya, daftarkan EBS baru sebagai AMI.
Lihatlah postingan blog ini untuk latar belakang lebih lanjut, terutama komentar oleh freremark: http://alestic.com/2010/01/public-ebs-boot-amis-for-ubuntu-on-amazon-ec2
Pada catatan terakhir, euca2ools sepertinya merupakan pengganti yang bagus untuk ec2-ami-tools - euca2ools termasuk halaman manual yang sebenarnya! Mereka memiliki semua nama yang sama dengan perintah ec2- *, hanya dengan awalan euca-. http://open.eucalyptus.com/wiki/Euca2oolsUsing
sumber
Saya ingin mengurangi ukuran volume yang digunakan oleh contoh EC2 umum. Saya mengikuti langkah-langkah serupa dengan jawaban lain di sini tetapi mengalami masalah. Jadi, inilah yang harus saya lakukan untuk mengecilkan volume root saya ...
Di AWS Console
Pada contoh EC2
Kembali di Konsol AWS
Di sinilah kami mengalami masalah yang belum saya sebutkan sejauh yang saya bisa temukan. Contoh dimulai dengan baik, bagus! Tetapi ketika saya mencoba ssh ke instance, saya tidak bisa terhubung. Setelah banyak variasi dari langkah-langkah di atas, saya akhirnya memutuskan untuk mencoba menggunakan volume root dari instance EC2 yang baru saja diputarkan.
Di AWS Console
Pada contoh EC2
Kembali di Konsol AWS
Semoga ini bisa membantu seseorang
sumber