web-dev-qa-db-ja.com

どのようにしてスワップをEC2インスタンスに追加しますか?

私は現在ec2マイクロインスタンスを実行しています、そして、私はインスタンスが時折メモリを使い果たしているのを発見しました。

より大きいインスタンスサイズを使用する以外に、他に何ができるでしょうか。

272
ajtrichards

この問題を解決するには、インスタンスにswap(つまりpaging)スペースを追加します。

ページングは​​、ハードドライブ上に領域を作成し、それを追加のメモリとして使用することで機能します。このメモリは通常のメモリよりはるかに低速ですが、もっと多くのメモリを使用できます。

このスペースをインスタンスに追加するには、次のように入力します。

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以上を必要とするならば、それからそれをより高い何かに変更してください。

再起動後にデフォルトで有効にするには、この行を/ etc/fstabに追加します。

/var/swap.1   swap    swap    defaults        0   0
539
ajtrichards

スワップは、EBSデバイスではなく、Instance Storage(ephemeral)ディスク上で行う必要があります。交換するとIOが多く発生し、EBSのコストが増加します。 EBSはInstance Storeよりも遅く、Instance Storeには 特定のタイプのEC2インスタンス が付いてきます。

通常/ mntにマウントされますが、実行されない場合

Sudo mount /dev/xvda2 /mnt

その後、このデバイス上にスワップファイルを作成するには、4GBのスワップファイルに対して以下の手順を実行します。

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

他のユーザーがスワップファイルを閲覧できないようにする

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

スワップとしてメークアンドフラッグ

Sudo mkswap /mnt/swapfile
Sudo swapon /mnt/swapfile

以下を/ etc/fstabに追加/確認します。

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

最後にスワップを有効にする

Sudo swapon -a
207
David

Ajtrichardsによって言及されたステップを適用した後、あなたはあなたのAmazonフリーティアインスタンスがこのコマンドを使ってスワップを使っているかどうかをチェックすることができます

cat /proc/meminfo

結果:

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

SwapTotal: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
41
HimalayanCoder

これらのコマンドを使用して、インスタンスに1 GBのスワップを追加できます。

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

再起動後にデフォルトで有効にするには、この行を/etc/fstabに追加します。

/swapfile swap swap defaults 0 0
37
David Levesque

t2インスタンス(t2.microt2.mediumt2.small)を使用している場合は、使用可能な一時記憶域またはインスタンス記憶域はありません。そのため、あなたはあなたのスワップをEBSに作成する必要があります。それ以外の場合は、@ Davidの回答に従い、EBSコストの支払いを回避するために一時ストレージにスワップを作成します。

より多くの情報: http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html いくらかを示す表があります各インスタンスタイプの一時ストレージ。

14
Ali

以下の手順でスワップスペースを作成できます。ここでは/home/にスワップを作成します。

  1. dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
    ここでのカウントはスワップスペースのキロバイト数です

  2. mkswap /home/swapfile1

  3. vi /etc/fstab
    入力してください:
    /home/swapfile1 swap swap defaults 0 0

  4. 実行します。
    swapon -a

7
minhas23

どのサーバーにもスワップスペースを追加できます

ddコマンドを使ってファイルを作成する

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

bsはブロックサイズで、countサイズをMBまたはGBで表したものです

その逆も使えます

作成後にファイルの権限を変更します。

 #chmod 600 /swapfile 

それからファイルを交換します。

 #mkswap /swapfile 

次にswaponコマンドでスワップファイルを有効にします。

 #swapon  /swapfile 

スワップが有効かどうかをfreeコマンドで確認します。

 #free -h
 #swapon -s
3
Javeed Shakeel

スワップスペースhttp://pqxx.org/development/swapspace/ を試してください。

ほとんどのディストリビューションはそれをパッケージ化しています。

EC2では、 "swappath"を/ mntまたはhigh-iopsディスクに変更することをお勧めします。

1
rdoroshenko

DavidのInstance Storageを使っても(m5d.2xlargeで)最初はうまくいきましたが、EC2インスタンスを停止して再びオンにした後、インスタンスに再びsshすることができませんでした。

インスタンスログに、「緊急モードに入っています。ログイン後、システムログを表示するには「journalctl -xb」、再起動するには「systemctl reboot」、デフォルトモードに起動するには「systemctl default」または「exit」と入力します。メンテナンスのために"

代わりにこのリンクのAWSの指示に従ったところ、インスタンスの電源を入れ直した後も含め、すべてが完璧に機能しました。

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
0
DaveJay