Neden EC2 ubuntu görüntüleri takas edilmiyor?


82

EC2'de birkaç sunucu başlattım ve takasları yok.

Yanlış bir şey mi yapıyorum yoksa makinelerde hiç yok mu?


Ben de merak ettim, ama sadece bir EBS örneği kurdum, takas olarak biçimlendirdim ve swapon / dev / sdg olarak değiştirdim ...
Tom O'Connor,

Aynı zamanda, tipik olarak, SSD sürücüsünü takas etmemek için bir Linux sisteminde SSD sürücülerini kullanmak durumundadır. Çoğunlukla, bazı insanlar paranoyak olduğu için, her zaman aynı sektörler kümesini açarak bir SSD'nin depolama ömrü üzerinde olumsuz bir etkisi olacaktır.
djangofan

1
Hangi AMI ve hangi EC2 örneği boyutu. AMI'nin bir takas bölümü kullanmak üzere yapılandırılması ve örneğin başlatıldığında eklenmesi gerekir.
Jeremy Bouse

Mümkünse,% 99'u kullanmak zorunda kalmayacağınızdan emin olmadığınız sürece EC2'de takas kullanmamanızı tavsiye ederim (IE sadece acil durum için var). Bazı EC2 örneklerimizi takas etmeyi devre dışı bıraktığımızda aylık EBS IO maliyetlerimiz muhtemelen yarıya indi. Sadece iki kuruşum seni iki kuruş kurtarmak için - evet bu çok kötüydü, özür dilerim ve bir köşede saklanacağım;)
Leke

Ayrıca bu adımlara da bakabilirsiniz docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Artem.Borysov

Yanıtlar:


74

Haklısın, Ubuntu EC2 EBS görüntüleri değiştirilebilir alanlarla birlikte gelmiyor ( en azından 11.04 için). "Normal" örnek tipi görüntüler, test ettiğimde yalnızca 896 MB olsa da bir takas bölmesine sahiptir.

Bazı işlemler patlarsa ve takas alanınız yoksa, sunucunuz OOM katili devreye girmeden önce bir süre daha sürünen bir durma noktasına gelebilir, oysa takas ile sadece yavaşlar. Bu sebeple, her zaman yeterli RAM ile bile olsa, takas alanım olmasını seviyorum. İşte seçenekleriniz:

  • Bir EBS birimi oluşturun (RAM'inizin 2-4 katı), örneğinize ekleyin ("bellek" için / dev / xvdm'yi çağırmayı seviyorum), sudo mkswap /dev/xvdmfstab'a ekleyin sudo swapon -ave gitmeniz iyi olur . Bunu daha önce yaptım ve iyi çalışıyor, ancak örnek mağazadan biraz daha yavaştır çünkü ağ üzerinden geçmektedir.

  • Veya takas bölümü eklemek için diskinizi yeniden bölümlendirebilirsiniz, ancak bu yeni bir AMI oluşturmayı gerektirebilir. Bunu çalışan bir örnekte yapamadım, çünkü kök dosya sistemini çıkaramıyorum ve disk aygıtına (/ dev / xvda), sadece bölüme (xvda1) bile erişemiyorum.

  • Veya bir takas dosyası oluşturabilirsiniz. Bu şu anda tercih ettiğim çözüm.

    sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
    sudo chmod 600 /var/swapfile &&
    sudo mkswap /var/swapfile &&
    echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
    sudo swapon -a
    

    Bitti. :) Bir çok kişinin bölümleri yerine dosyaları kullanmak konusunda çok üzüldüğünü biliyorum, ancak bu kesinlikle acil durum takas alanı olarak yeterince iyi çalışıyor.


4
Bir EBS hacmine geçmek, diğer cevaplarda belirtildiği gibi ek maliyetlere neden olabilir. Takas kullanmamak veya bir örnek deposuna takmak daha iyi çözümler gibi görünüyor.
izuldür

7
Örnek deposunu kullanmak, EBS'den daha iyi bir seçenektir. EBS bir ağ dosya sistemidir, bu nedenle EC2 örneğine her şeyle aynı ağ bağlantısı üzerinden bağlanır. Örnek deposu, örneği barındıran donanıma eklenir (bu nedenle, örneğinizi durdurup başlattığınızda devam etmez). EBS'nin takas için bir seçenek olduğu tek zaman, örnek saklama alanı ile birlikte gelmeyen bir örnek türü kullandığınız zamandır, yani, t1.micro (yalnızca 620 MB RAM'a sahip olması durumunda, muhtemelen gerçekten acil duruma ihtiyaç duyan olanıdır) takas).
ColtonCat

Bs = 1M zaten ikili gösterimdedir, bu nedenle count = 2048 çarpanı count = 2000 olmalıdır - eğer hatalıysam.
ypocat

1
2GiB için gidiyorsanız, 1024 * 2048 doğru görünüyor.
Jo Liss,

25

IMHO takas için en iyi konum örnek deposudur. Neden? AWS, örnek mağazasındaki g / ç için sizden ücret almaz. Ayrıca, örnek mağazası çoğu durumda EBS'den daha başarılı. Örneği durdurmanız durumunda takas dosyasını yeniden oluşturan bir komut dosyanız olduğundan emin olun. Yeniden başlatmalar iyi. Neden ah varsayılan olarak orada değil?

Örnek mağazasını bulalım.

root@domU-**-**-**-**-**-**:/var/log# fdisk -l

[...]

Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda2 doesn't contain a valid partition table

Yaşasın, 160.1GB bedava! Takas alanınızı oraya koyun ve EBS tabanlı takas uygulamanız yanlışlıkla yutulduğunda, sunucu başına 100 dolar kazanmayı unutmayın. Talihsiz deneyim burada konuşuyor.

Anlaşılan bazı durumlarda örnek mağazasını görmüyorsunuz.

Örnek türüne bağlı olarak, önce blok-cihaz eşleme seçeneklerini kullanarak örnek mağaza birimlerini örneğe eklemeniz gerekir. Bunu yapmazsanız, / dev altındaki aygıtları bile göremeyebilirsiniz ( Amazon EC2'de "Örnek Depolama Birimleri" kullanımı nasıldır? )


1
sadece, serbest katmandaki t1.micro kullanıcılarının bu seçeneği kullanamayacağını belirtmek isteriz.
Reuben L.

20

Not : Amazon fiyat politikasını değiştirmiştir ve 2016 ortasından itibaren G / Ç talepleri için ücret talep etmemektedir. Bu sorunun cevabı tarihsel nedenlerle burada tutulur, ancak EC2 EBS destekli örneklerde takas kullanımının (kullanmanın ya da kullanmamanın) hiçbir maliyeti yoktur.


Bu, tasarım gereğidir. Öngörülemeyen maliyetlerden kaçınmak için EC2 EBS destekli durumlarda varsayılan olarak değiştirme işlemi kapatılır.

Kötü niyetli bir hafıza aç uygulamanız varsa (örneğin küçük veya küçük bir durumda), EBS biriminizde oldukça fazla miktarda G / Ç isteği oluşturabilir. Amazon, 1 milyon G / Ç isteğinde 0,10 ABD doları tutarında ücret alıyor (bkz. Http://aws.amazon.com/pricing/ebs/ ) .

Normal şartlar altında endişelenmemelisiniz; genellikle G / Ç'nin maliyeti, küçük durumlarda bile, birkaç dolar ister. Bu nedenle, uygun boyutta bir örneğiniz olduğunu ve takas işleminin yalnızca nadiren kullanılacağını biliyorsanız , devam edin ve etkinleştirin. Ancak küçük örneklere dikkat edin.

Takas özelliğini etkinleştirirseniz, Kullanım Raporlarına göz kulak olmak isteyebilirsiniz. İsteğe bağlı olarak, CloudWatch Denetim Masasına giderek ve toplam fatura tutarı için yeni bir Alarm oluşturarak bir Fatura Uyarısı ayarlayabilirsiniz . Bu şekilde derhal haberdar edileceksiniz, örneklerinizle ilgili garip bir şeyler oluyor.


En yaygın örnek tipleri SSD hacimlerini kullandığından, bu cevap biraz yanıltıcı veya kafa karıştırıcı. aws.amazon.com/ec2/instance-types
Taylor Edmiston

2
@tedmiston: gerçekten, bu cevap artık geçerli değil. Yeni gerçeği yansıtacak şekilde ayarlamıştım, ancak temelde G / Ç istekleri için ücret alınmıyor, bu nedenle takasın etkinleştirilmesi (veya edilmemesi) şimdi saf teknik olarak yapılabilir.
Gui Ambros

1

/etc/fstabDosyayı kontrol edin, muhtemelen kullanmakta olduğunuz görüntüyü takas etmeden kuruldu. Sanırım bazı insanlar hiçbir zaman toplam bellekten daha fazlasını kullanmamalarını bekledikleri için sunucuları takas etmeden çalıştırıyor - takas işlemi her şeyi çok yavaşlatıyor.

Ancak, her zaman hafızada yapılan bazı işlemlerden ötürü paranoyaklık duyuyorum, bu yüzden bir takas sürücüsü kurmanın ve çalışan ec2 örneğinden bir görüntüyü yeniden yaratmanın sizin için mantıklı olacağını düşünüyorum.


2
Zaman zaman yer değiştirme, sistemi yavaşlatmaz.
laebshade

0

Çalışan için basit bir çözüm swapde EC2görüntülere çalıştırmaktır swapile sıkıştırılmış lz4içinde rambirlikte zram-init.

Bu çözüm yok değil almak ramuzakta host:

görüntü tanımını buraya girin


1
Çok yaratıcı, ancak RAM'inizi gerçek RAM olarak kullanmak, takas için hafıza içi bir dosya sistemi olarak kullanmaktan daha anlamlı değil mi? (bellek bittiğinde hangi öncelikle kullanılan alır) takas oluşturmak için uygulamalar için kullanılabilir bellek miktarını azaltmak ... aksine olduğunu düşündüğü
HBruijn

İlginç bir cevap, ancak EBS / örnek deposunu kullanmak muhtemelen daha iyi bir genel amaçlı çözümdür. Ben 512 MB RAM ve iyi çalışıyor EBS üzerinde 512 MB takas ile bir t2.nano var.
Tim

Bu açıkça RAM'i ana bilgisayardan alır (EC2 örneği) - RAM başka nereden geliyor? Bu yaklaşımın tek yararı, toplam RAM'inizin bazılarını sıkıştırmaktır, ancak SSD'yi takas olarak kullanma olanağı sağlamaz. Bunun yerine zswapnormal bir takas dosyası / diskin üzerine sıkıştırılmış RAM önbellek sağlayan kullanabilirsiniz : wiki.archlinux.org/index.php/zswap . Zram hakkında daha fazla bilgi için cnx-software.com/2018/05/14/… adresine bakın.
RichVel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.