首页 文章

如何将交换添加到EC2实例?

提问于
浏览
257

我目前正在运行一个ec2微实例,我发现该实例偶尔会耗尽内存 .

除了使用更大的实例大小外,还能做些什么呢?

9 回答

  • 203

    如果您在 t2 实例( t2.microt2.mediumt2.small )上,则没有可用的临时或实例存储 . 所以你需要在 EBS 中创建你的交换,这取决于你的用例可能或者可能不是一个好主意 . 否则,请关注@David的回答,并在短暂存储上创建交换,以避免支付EBS费用 .

    更多信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html有一个表格,显示您为每种实例类型获得的短暂存储空间 .

  • 34

    我们可以在任何服务器中添加交换空间

    使用dd命令创建文件

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

    bs is blocksizecount 指的是 size in MB or GB

    we can use vice versa

    创建后更改文件的权限:

    #chmod 600 /swapfile
    

    然后makewap文件:

    #mkswap /swapfile
    

    然后使用swapon命令启用交换文件:

    #swapon  /swapfile
    

    使用free命令检查是否启用了swap:

    #free -h
     #swapon -s
    
  • 7

    您可以使用以下脚本在Amazon Linux上添加交换 .

    https://github.com/chetankapoor/swap

    使用wget下载脚本:

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

    然后使用以下格式运行脚本:

    sh swap.sh 2G
    

    有关完整的教程,您可以访问:

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

  • 509

    解决此问题的方法是向实例添加 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
    
  • 14

    交换应该在实例存储(临时)磁盘上进行,而不是在EBS设备上进行 . 交换将导致大量IO并将增加EBS的成本 . EBS也比Instance Store慢,而Instance Store随机提供certain types of EC2 Instances .

    它通常会挂载到/ 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
    

    Make和Flag作为交换

    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
    
  • -2

    应用ajtrichards提到的步骤后,您可以使用此命令检查您的amazon免费层实例是否正在使用swap

    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
    
  • 1

    试试 swapspace http://pqxx.org/development/swapspace/

    大多数发行版都包装好了 .

    在EC2上,您可能希望将“swappath”更改为/ mnt或high-iops磁盘 .

  • 3

    您可以使用以下步骤创建交换空间这里我们在 /home/ 创建交换

    • dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
      这里count是交换空间的千字节数

    • mkswap /home/swapfile1

    • vi /etc/fstab
      进入:
      /home/swapfile1 swap swap defaults 0 0

    • 运行:
      swapon -a

  • 40

    您可以使用以下命令为实例添加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
    

相关问题