Como ativar o swap com pilha de sal?

5

Como posso criar e ativar um arquivo de permuta permanente de 1 GB com pilha de sal que funcionará após a reinicialização? salt.states.mount.swap não permite definir o tamanho do swap. Além disso, preciso definir o swappiness. Atualmente eu faço isso com echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

    
por igo 15.09.2014 / 11:48

4 respostas

7

Isso é o que eu uso em sistemas baseados no Debian. É uma versão melhorada da resposta de Dan. Ele obtém a memória disponível de um grão, multiplica por 2, para criar o arquivo de troca com o tamanho apropriado. Também faz uma entrada em / etc / fstab, se não existir.

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
    
por 11.11.2015 / 16:39
5

Eu atualmente uso isso na produção, funciona para mim.

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"
    
por 15.09.2014 / 18:36
2

A utilização de fallocate é instantânea em comparação com dd . Além disso, o estado abaixo irá gerar o swapfile se você alterar seu tamanho no pilar. Essa versão também omite o% sup swapon -a , que mount.swap manipula para você.

{% 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
    
por 29.07.2017 / 11:58
0

Estou fazendo uma coisa semelhante à resposta de Dan:

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"

Isso analisa a quantidade total de permuta que o sistema possui, se ele tiver menos de 3 GB, criará um arquivo de swap de 3 GB e garantirá que ele seja persistente entre as reinicializações por meio de /etc/fstab . Se você quer ter certeza de que sua configuração de swappiness está em vigor, você pode fazer algo como:

configure_swappiness:
  file.append:
    - name: /etc/sysctl.conf
    - text: vm.swappiness = 10
    
por 04.11.2015 / 21:27