我怎样才能创build和启用永久1GB的交换文件盐堆栈将重新启动后工作? salt.states.mount.swap不允许定义交换大小。 此外,我需要定义swappiness。 目前我用echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf来做 echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
这是我在基于debian的系统上使用的。 这是丹的答案的改进版本。 它从grain中获取可用内存,将其乘以2,以创build具有适当大小的交换文件。 如果不存在,它也会在/ etc / fstab中input。
coreutils: pkg.installed /swapfile: cmd.run: - name: | [ -f /swapfile ] || dd if=/dev/zero of=/swapfile bs=1M count={{ grains["mem_total"] * 2 }} chmod 0600 /swapfile mkswap /swapfile swapon -a - unless: - file /swapfile 2>&1 | grep -q "Linux/i386 swap" mount.swap: - persist: true
我目前在生产中使用这个,为我工作。
community_swap_file: cmd.run: - name: | [ -f /.swapfile ] || dd if=/dev/zero of=/.swapfile bs=1M count=2048 chmod 0600 /.swapfile mkswap /.swapfile echo '/.swapfile none swap sw 0 0' >> /etc/fstab swapon -a - unless: file /.swapfile 2>&1 | grep -q "Linux/i386 swap"
与dd相比,使用fallocate是瞬间的。 此外,如果您在支柱中更改其大小,下面的状态将重新生成交换文件。 这个版本也省略了多余的swapon -a , mount.swap为你处理。
{% set swapfile = salt['pillar.get']('swapfile', {}) %} {% set size = swapfile.get('size', grains["mem_total"]) %} {% set path = swapfile.get('path', '/var/swapfile0') %} {{ path }}: cmd.run: - name: | swapon --show=NAME --noheadings | grep -q "^{{ path }}$" && swapoff {{ path }} rm -f {{ path }} fallocate -l {{ size }}M {{ path }} chmod 0600 {{ path }} mkswap {{ path }} - unless: bash -c '[[ $(($(stat -c %s {{ path }}) / 1024**2)) = {{ size }} ]]' mount.swap: - persist: true
我正在和丹的回答做类似的事情:
configuring_swap: cmd.run: - name: | [ -f /var/swap.1 ] && swapoff /var/swap.1 dd if=/dev/zero of=/var/swap.1 bs=1M count=3072 chmod 0600 /var/swap.1 mkswap /var/swap.1 swapon /var/swap.1 - unless: - "[ `free -b | awk '/Swap/{print $2}'` -ge 3221225472 ]" file.append: - name: /etc/fstab - text: /var/swap.1 swap swap defaults 0 0 - onlyif: - file /var/swap.1 2>&1 | grep -q "Linux/i386 swap"
这看看系统有多less交换总量,如果小于3GB,创build一个3GB交换文件,并确保通过/etc/fstab在重新启动之间持续存在。 如果你想确保你的swappinessconfiguration到位,你可以做如下的事情:
configure_swappiness: file.append: - name: /etc/sysctl.conf - text: vm.swappiness = 10