Ben de seninle aynı soruyu sordum, bu yüzden nasıl yapılacağı konusunda çalıştım.
Öncelikle, bunu ABD-Doğu bölgesinden gelen Ubuntu 32-bit EBS destekli amiden yaptım, diğer işletim sistemleri veya görüntüler farklı çalışabilir. Ancak, bir ext * dosya sistemi kullandığınız sürece tamam olmanız gerektiğinden şüpheleniyorum. Diğer dosya sistemlerinde çalışabilir, ancak bunları nasıl yeniden boyutlandıracağınızı bulmak zorundasınız.
Adımlar temelde:
Çalışmakta olan bir örneğe iki cilt ekleyin, ilki küçültmek istediğiniz anlık görüntüye ve ikincisi küçültmek istediğiniz yeni boyuta sahip boş bir birim.
İlk cildin dosya sistemini kontrol edin ve hataları onarın.
Dosya sistemini ilk ciltte küçültün, böylece yalnızca verileri tutması gereken büyüklükte olur.
Dosya sistemini ilk ciltten diğerine kopyalayın.
İkinci birimdeki dosya sistemini maksimum boyutuna genişletin.
Hataların ikinci sesini kontrol ederek her şeyin iyi göründüğünden emin olun.
İkinci cildin anlık görüntüsünü alın.
Çektiğiniz ikinci cildin anlık görüntüsünü temel alan bir makine resmi oluşturun.
Önce, küçültmek istediğiniz ami'den biraz bilgi almanız gerekir. Özellikle, eğer varsa, çekirdek kimliğine ve ramdisk kimliğine ihtiyacınız var (küçültdüğüm görüntüde ramdisk yoktu). Tüm bu bilgiler AMI penceresinde aws yönetim konsolundan edinilmelidir.
Çekirdek kimliği kia-xxxxxxxx gibi görünür ve anlık görüntü kimliği snap-xxxxxxxx gibi görünür ve ramdisk kimlikleri RIA-xxxxxxxx gibi görünür.
Sonra, bir linux örneği başlatın. Bir Ubuntu örneği başlattım. İsterseniz bir t1.micro örneği kullanabilirsiniz. Bu sonraki adımları atmak için çok güç gerektirmez.
Makine çalıştıktan sonra, ilk adımdan not aldığınız anlık görüntüyü ekleyin. Benim durumumda / dev / sdf dosyasına ekledim
Ardından, istediğiniz boyuta sahip yeni bir cilt oluşturun. Benim durumumda, 5 GB'lık bir cilt oluşturdum çünkü küçültmek istediğim boyut buydu. Anlık görüntüden bu yeni birimi oluşturmayın. Yeni bir boş birime ihtiyacımız var. Sonra, çalışan örneğe ekleyin, benim durumumda / dev / sdg olarak ekledim
Daha sonra, makineye ssh ekleyin ancak ekli birimleri monte etmeyin.
Bu noktada paranoya tarafında hata yaptım ve dosya sisteminde büyük hacme bakmayı seçtim, hata olmadığından emin olmak için. Hiç olmadığına eminseniz, bu adımı atlayabilirsiniz:
$ sudo e2fsck -f /dev/sdf
Daha sonra, büyük diskteki dosya sistemini, sadece diskteki veriler kadar büyük olacak şekilde yeniden boyutlandırdım:
$ sudo resize2fs -M -p /dev/sdf
-M onu küçültür ve -p ilerlemeyi yazdırır.
Resize2fs size shrunkin dosya sisteminin ne kadar büyük olduğunu söylemelidir. Benim durumumda bana 4K'lık bloklar halinde verdi.
Artık shrunkin dosya sistemini yeni diske kopyalıyoruz. Verileri 16 MB boyutunda kopyalayacağız, bu yüzden kaç adet 16 MB boyutunda kopyalamamız gerektiğini bulmamız gerekir. Burası küçültülmüş dosya sistemi boyutunun kullanışlı olduğu yerdir.
Benim durumumda, shrunk dosya sistemi 1 GB'ın üzerindeydi, çünkü anlık görüntü almadan önce temel Ubuntu sistemine bir sürü başka program yükledim. Muhtemelen en yakın 16 MB'a yuvarlanmış dosya sisteminin boyutunu kopyalamakla kurtulabilirdim, ancak güvenli bir şekilde oynamak istedim.
Yani, 128 kez 16 MB'lık parçalar = 2GB:
$ sudo dd if=/dev/sdf ibs=16M of=/dev/sdg obs=16M count=128
16 MB'lık bloklar halinde kopyaladım çünkü EBS ile her okuma ve yazma için para ödüyorsunuz, bu yüzden mümkün olduğunca en aza indirmek istedim. Bu şekilde yapıp yapmadığımı bilmiyorum, ama muhtemelen zarar vermedi.
Daha sonra yeni birime kopyaladığımız dosya sistemini yeniden boyutlandırmamız gerekiyor, böylece birimdeki kullanılabilir tüm alanı kullanır.
$ sudo resize2fs -p /dev/sdg
Son olarak, her şeyin yolunda olduğundan emin olmak için kontrol edin:
$ sudo e2fsck -f /dev/sdg
Bu makinede yapmamız gereken tek şey bu, ancak yeni sesi bir test olarak monte etmek zarar veremedi. Ancak, bu adım neredeyse kesinlikle isteğe bağlıdır, çünkü e2fsck herhangi bir sorunla karşı karşıya kalmalıydı.
Şimdi yeni birimi yakalamamız ve ona göre bir AMI oluşturmamız gerekiyor. Makineyle işimiz bitti, eğer istersen feshedebilirsin.
Taktıysanız küçük birimin çıkarıldığından emin olun ve ardından bir anlık görüntüsünü alın. Yine, bunu yönetim konsolunda yapabilirsiniz.
Son adım, komut satırı ec2 araçlarını gerektirir.
DÜZENLE:
Bu cevap gönderildiğinden bu yana AWS konsolu, bir anlık görüntüye sağ tıklamanızı ve Anlık Görüntüden Resim Oluştur'u seçmenizi sağlar. Uygun Çekirdek Kimliğini seçmeniz gerekir. Listede görünmüyorsa, uygun mimariyi seçtiğinizden emin olun.
Ec2-register uygulamasını kullanarak çektiğiniz anlık görüntüye dayanan bir AMI kaydedebiliriz, bu yüzden yeni çekmiş olduğunuz anlık görüntüden snap-xxxxxxxx değerini not alın.
Daha sonra şöyle bir komut kullanmalısınız:
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
Elbette, çekirdek kimliğini başlangıçta yazdığınızla ve anlık görüntü kimliğini önceki adımda oluşturduğunuzla değiştirmelisiniz. Ayrıca, yukarıdaki gizli anahtarınıza (sk.pem) ve x509 sertifikanıza (cert.pem) işaret etmeniz gerekir. Elbette isim ve açıklama için ne istersen onu seçebilirsin.
Bu yardımcı olur umarım.