Bir EC2 yönetim ortamına nasıl takas eklersiniz?


Yanıtlar:


574

Bu soruna yönelik düzeltme eklemektir swap(yani pagingörneğine) alanı.

Disk belleği, sabit sürücünüzde bir alan oluşturarak ve ek bellek için kullanarak çalışır, bu bellek normal bellekten çok daha yavaştır, ancak çok daha fazlası mevcuttur.

Bu fazladan alanı örneğinize eklemek için şunu yazın:

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

1024'ten fazlasına ihtiyacınız varsa, bunu daha yüksek bir şeye değiştirin.

Yeniden başlattıktan sonra varsayılan olarak etkinleştirmek için bu satırı / etc / fstab dosyasına ekleyin:

/var/swap.1   swap    swap    defaults        0   0

Lütfen argüman listesinde, ve = parametrelerini hiç görmedim, çünkü = ... "," if = ... "," = = ", bs = 1M ve count = 1024 ne anlama geliyor?
ス レ ッ ク

31
if'girdi dosyası', of'çıktı dosyası', bs'blok boyutu' anlamına gelir ve countayırmak istediğiniz blok sayısıdır… mandaha fazla bilgi için komutun sayfasını okuyabilirsiniz : linux.die.net/man/1/ dd
Fábio Batista

4
Bu dd komut satırı "/ dev / zero'dan /var/swap'a kopyala.1 anlamına gelir. 1 megabayt boyutunda 1024 blok okuyarak bunu yapın". Sıfırlarla dolu 1 GB'lık bir dosya oluşturmanın hızlı bir yoludur.
Nelson

3
yeterince eski, ama takas belleğim yeniden başlatıldıktan sonra bile% 0 kullanılmış, herhangi bir yardım?
Girdhari Agrawal

3
Takasın aktif olup olmadığını kontrol etmek istiyorsanız:$> free -m
herve

216

Takas, bir EBS cihazında değil, Instance Storage (geçici) diskinde gerçekleştirilmelidir. Değiştirme, çok sayıda IO'ya neden olacak ve EBS'de maliyeti artıracaktır. EBS ayrıca Instance Store'dan daha yavaştır ve Instance Store belirli EC2 Instances türleriyle birlikte ücretsiz olarak gelir .

Genellikle / mnt'ye monte edilir, ancak çalıştırılmazsa

sudo mount /dev/xvda2 /mnt

Daha sonra bu cihazda bir takas dosyası oluşturmak için 4 GB'lik bir takas dosyası için aşağıdakileri yapın

sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096

Başka hiçbir kullanıcının takas dosyasını görüntüleyemediğinden emin olun

sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile

Takas Yap ve İşaretle

sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile

Aşağıdakileri Ekle / emin olun / etc / fstab

/dev/xvda2      /mnt    auto    defaults,nobootwait,comment=cloudconfig 0   2
/mnt/swapfile swap swap defaults 0 0

son olarak değiştirmeyi etkinleştir

sudo swapon -a

6
Bu kesinlikle en kapsamlı cevap imo
Jon B

4
Bir dosya sistemini monte etmek için dosya sistemi türünü belirtmeniz gerekir. Dosya sistemini bulmak için komut şu şekildedir: $ df -T Bu size aygıtları ve dosya sistemlerini gösterecektir. Çoğunlukla ext4. Benim için / dev / xvda1, 2 değil.
user1452686

8
Docs.aws.amazon.com/AWSEC2/latest/UserGuide/… 'a göre Instance mağazalarını t1 / t2 bulut sunucularına eklemek artık mümkün değil. Ne olursa olsun denedikten sonra, doğru gibi görünüyor.
2014'te

3
@alfetopito Muhtemelen mevcut bir bölümde takas olarak başka bir bölüm eklemek yerine değişmez bir takas dosyası oluşturabilirsiniz. Centos 6 için güzel bir rehber - digitalocean.com/community/tutorials/…
muttonUp

1
Amazon'a göre, yeniden başlattıktan sonra örnek depolama alanınızı tutmanız garanti edilmez, fstab başarısız olmaz mı?
dualed

42

Ajtrichards tarafından belirtilen adımları uyguladıktan sonra amazon ücretsiz katman örneğinizin bu komutu kullanarak takas kullanıp kullanmadığını kontrol edebilirsiniz

cat /proc/meminfo

sonuç:

ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal:         604340 kB
MemFree:            8524 kB
Buffers:            3380 kB
Cached:           398316 kB
SwapCached:            0 kB
Active:           165476 kB
Inactive:         384556 kB
Active(anon):     141344 kB
Inactive(anon):     7248 kB
Active(file):      24132 kB
Inactive(file):   377308 kB
Unevictable:           0 kB
Mlocked:               0 kB

Takas Toplam: 1048572 kB

SwapFree: 1048572 kB

Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        148368 kB
Mapped:            14304 kB
Shmem:               256 kB
Slab:              26392 kB
SReclaimable:      18648 kB
SUnreclaim:         7744 kB
KernelStack:         736 kB
PageTables:         5060 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1350740 kB
Committed_AS:     623908 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7420 kB
VmallocChunk:   34359728748 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      637952 kB
DirectMap2M:           0 kB

40

Şu komutlarla örneğinize 1 GB takas ekleyebilirsiniz:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile

Yeniden başlattıktan sonra varsayılan olarak etkinleştirmek için bu satırı şuraya ekleyin /etc/fstab:

/swapfile swap swap defaults 0 0

Ama dosya sistemimden hangisi Swap oluşturmak için yer alacak?
Hussain

@Hussain Yol olduğu için kök dosya sisteminde takas oluşturur /swapfile. Ancak başka bir dosya sistemini de bağlayabilir ve takas dosyasını orada oluşturabilirsiniz, örn /mnt/blah/swapfile.
David Levesque

Bunun bir t2.micro örneğinde çalıştığını doğrulayabilir. Temiz bir kök gibi ben de @ / mnt / takas mayın yaptı.
Mike Purcell

1
Bu cevabı iptal etti çünkü en kısa ve işi yapıyor. Ancak, swapfile chmod 600 komutu eklenmelidir.
Sõber

15

Eğer biri t2durumlarda ( t2.micro, t2.medium, t2.small), sizin için kullanılabilir hiçbir geçici veya örnek deposu yok. Bu nedenle EBS, kullanım durumunuza bağlı olarak iyi bir fikir olabileceği veya olmayabileceği takasınızı oluşturmanız gerekir . Aksi takdirde, @David'in cevabını takip edin ve EBS maliyetlerini ödememek için geçici depolama alanında takasınızı oluşturun.

Daha fazla bilgi: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html Her örnek türü için ne kadar geçici depolama alanı aldığınızı gösteren bir tablo var.


1
Bunun genellikle kötü bir fikir olduğunu teyit edebilir. Küfür eden bir işleminiz varsa (bunu yapan bir düğüm sunucum ve bir python / kereviz kurulumum vardı), bilmeden tüm hafta EBS bloğunuza okuyup yazdığında bir ton ücrete tabi olacaksınız: -)
ZachM

3
Aws.amazon.com/ebs/pricing'e göre IO, Sağlanan IPOS SSD (io1) dışındaki tüm EBS birimlerine dahil edilmiştir. Sadece GB başına. Bu, fiyatlandırma modelinde yeni bir değişiklik olabilir - ancak bu, EBS'nin gerçek Örnek Storace'ten çok daha yavaş olmasına rağmen, okuma ve yazma için ek ücret alınmadığı anlamına gelir.
bobsoap

@bobsoap Bunu açıklığa kavuşturmak ister misiniz? Bağlantınızı kontrol ettim ve buldum For example, if you provision a volume with 1000 IOPS, and keep this volume for 15 days in a 30 day month, then in a Region that charges $0.10 per provisioned IOPS-month, you would be charged $50 for the IOPS that you provision ($0.10 per provisioned IOPS-month * 1000 IOPS provisioned * 15 days/30). You will be charged for the IOPS provisioned on a volume even when the volume is detached from an instance.. Bu AWS okuma ve yazma işlemleri için ücret alacak gibi görünüyor.
Valter Silva

2
@ValterHenrique Alıntıladığınız metin yalnızca sağlanan IOPS içeren ciltler için geçerlidir, ancak birkaç farklı cilt türü arasında seçim yapabilirsiniz. Sağlanan IOPS olmadan "normal" bir birim kullanıyorsanız ("gp2" adı verilen genel amaçlı SSD birim türü gibi), okuma ve yazma işlemleri fazladan ücretlendirilmez. Belki karşılaştırmak için daha iyi bir bağlantı: aws.amazon.com/ebs/details
bobsoap

8

Aşağıdaki adımları kullanarak takas alanı oluşturabilirsiniz. /home/

  1. dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
    Burada sayım, kilobayt takas alanı sayısıdır

  2. mkswap /home/swapfile1

  3. vi /etc/fstab
    giriş yapın:
    /home/swapfile1 swap swap defaults 0 0

  4. Çalıştırmak:
    swapon -a


4

Herhangi bir sunucuya takas alanı ekleyebiliriz

dd komutunu kullanarak dosya oluşturma

 #dd if=/dev/zero of=/swapfile bs=1M count=2048
                    or
 #dd if=/dev/zero of=/swapfile bs=1024M count=2

bs blok boyutu ve sayı MB veya GB cinsinden boyut anlamına gelir

tam tersini kullanabiliriz

Oluşturulduktan sonra dosyanın iznini değiştirin:

 #chmod 600 /swapfile 

Sonra dosyayı wap yapar:

 #mkswap /swapfile 

Sonra takas dosyasını takas komutuyla etkinleştirin:

 #swapon  /swapfile 

Takasın etkin olup olmadığını ücretsiz komutla kontrol edin:

 #free -h
 #swapon -s

3

David'in Instance Storage yanıtını kullanarak başlangıçta benim için çalıştı (m5d.2xlarge üzerinde), ancak EC2 örneğini durdurduktan ve tekrar açtıktan sonra örneğe tekrar giremedim.

Örnek günlükleri bildirildi: "Acil durum modundasınız. Oturum açtıktan sonra, sistem günlüklerini görüntülemek için" journalctl -xb "yazın, yeniden başlatmak için" systemctl reboot ", varsayılan moda önyüklemek için" systemctl default "veya" exit "yazın. bakım için"

Bunun yerine bu bağlantıdaki AWS talimatlarını izledim ve örneği kapatıp tekrar açtıktan sonra her şey mükemmel çalıştı.

https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/

sudo dd if=/dev/zero of=/swapfile bs=1G count=4

sudo chmod 600 /swapfile

sudo mkswap /swapfile

sudo swapon /swapfile

sudo swapon -s

sudo vi /etc/fstab
/swapfile swap swap defaults 0 0

1

Değiştirmeyi deneyin http://pqxx.org/development/swapspace/

Çoğu dağıtım paketlenir.

EC2'de "swappath" ı / mnt veya high-iops disk olarak değiştirmek isteyebilirsiniz.


1
Dokümanlardan: "Mevcut haliyle, Swapspace muhtemelen her zaman duyarlı kalması gereken sistemler için iyi bir seçim değildir;"
Dave Albert

-3

Amazon Linux'ta takas eklemek için aşağıdaki komut dosyasını kullanabilirsiniz.

https://github.com/chetankapoor/swap

Komut dosyasını wget kullanarak indirin:

wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh

Sonra komut dosyasını aşağıdaki biçimde çalıştırın:

sh swap.sh 2G

Tam bir eğitim için şu adresi ziyaret edebilirsiniz:

https://installvirtual.com/shell-script-to-create-swap/


Bu cevabın ne katkıda bulunduğunu görmüyorum, sadece kabul edilen cevabın açıkladığı şeyi yapan bir kabuk betiği olmanın yanı sıra.
Nils Werner

Ben sadece 5 komut çalıştırmak yerine takas oluşturmak için 2 adım olacak ve böylece zaten zaten takas olduğunu gösterecektir bir kabuk komut dosyası oluşturdu.
Chetan kapoor

3
Kesinlikle. Kök olarak çalıştırmam gereken bir shellscript. Bir yerde, herhangi bir bildirimde bulunulmadan değişebilecek veya kaybolabilecek biri tarafından yapılmıştır. Hepsi, 5 yıl önce gönderilen ve kabul edilen 4-5 komut satırını kurtarmak için.
Nils Werner
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.