Como alocar mais espaço para trocar e aumentar seu tamanho maior que o Ram?

8

Situação: aumente o tamanho do swap ( /dev/sda3) maior que Ram (8 GB) quando HD 128 GB
Motivação: 8 GB RAM é muito pouco; 30 GB de espaço livre no meu SSD; Quero transformar 20 GB em SSD swap
Características do sistema

  • Troque não imutável / mutável. Não consigo encontrar nenhuma evidência de por que /mnt/.swapfiledeveria ser imutável, para que você não precise alterar os atributos do arquivo swapfile

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • Comando sudo fdisk -lu /dev/sda

    Disk /dev/sda: 113 GiB, 121332826112 bytes, 236978176 sectors 
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: 082F85CA-EE3E-479C-8244-858B196FA5BA
    
    Device         Start       End   Sectors   Size Type
    /dev/sda1       2048      4095      2048     1M BIOS boot
    /dev/sda2       4096 220323839 220319744 105.1G Linux filesystem
    /dev/sda3  220323840 236976127  16652288     8G Linux swap
    
  • Comando df -h

    Filesystem      Size  Used Avail Use% Mounted on
    udev            3.9G     0  3.9G   0% /dev
    tmpfs           793M  9.4M  784M   2% /run
    /dev/sda2       104G   74G   25G  75% /
    tmpfs           3.9G   54M  3.9G   2% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
    tmpfs           793M   64K  793M   1% /run/user/1000
    
  • Aloque mais espaço em disco para Trocar /dev/sda3.

Meu fluxo de trabalho sem êxito para a tarefa quando HD e Swap na mesma partição, /dev/sda3

masi@masi:~$ sudo -i

root@masi:~# swapoff /dev/sda3

root@masi:~# swapon
[blank]    

root@masi:~# dd if=/dev/zero of=/dev/sda3 bs=20480 count=1M
dd: error writing '/dev/sda3': No space left on device
416308+0 records in
416307+0 records out
8525971456 bytes (8.5 GB, 7.9 GiB) copied, 18.7633 s, 454 MB/s

root@masi:~# mkswap /dev/sda3
Setting up swapspace version 1, size = 8 GiB (8525967360 bytes)
no label, UUID=245cb42c-1d4e-4e21-b544-16b64af962d6

root@masi:~# swapon -p 99 /dev/sda3

root@masi:~# swapon
NAME       TYPE      SIZE USED PRIO
/dev/sda3  partition   8G   0B   99

root@masi:~# vi /etc/fstab 
...

HD e swap na mesma partição - fluxo de trabalho atual [Ijaz, cas, FarazX]

Mesclando. Use fallocateno início ddporque não é necessário colocar zeros

masi@masi:~$ sudo fallocate -l 20G /mnt/.swapfile

masi@masi:~$ sudo mkswap /mnt/.swapfile 
Setting up swapspace version 1, size = 20 GiB (21474832384 bytes)
no label, UUID=45df9e48-1760-47e8-84d7-7a14f56bbd72

masi@masi:~$ sudo swapon /mnt/.swapfile
swapon: /mnt/.swapfile: insecure permissions 0644, 0600 suggested.

masi@masi:~$ sudo chmod 600 /mnt/.swapfile

masi@masi:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7925        1494         175         196        6255        5892
Swap:         28610           0       28610

Adicione a seguinte linha no seu /etc/fstabque é melhor do que adicionar a coisa aos seus runlevels ( /etc/rc.local), onde eu coloquei o swapfile no /mnt/.swapfilepara manter a filosofia Linux / Unix e manter a integridade dos meus scripts de backup do sistema; Se estiver trocando para um SSD, use a discardopção para que os blocos sejam cortados a cada reinicialização, para que nãosw

# http://unix.stackexchange.com/a/298212/16920
# http://unix.stackexchange.com/a/298543/16920

# If swap is on SSD, trim blocks each time at startup.
/mnt/.swapfile  none    swap    defaults,discard      0        0

# If swap on External HDD, just use sw.
#/media/masi/SamiWeek/.swapfile  none    swap    sw      0        0

Fontes

  1. Como aumentar o espaço de troca? https://askubuntu.com/a/178726/25388 Discussão geral sobre como aumentar o espaço de troca para iniciantes.
  2. HOWTO de partição Linux para HDDs, não SSDs: 4. Requisitos de particionamento. http://www.tldp.org/HOWTO/Partition/requirements.html Portanto, não faça trocas para faixas externas em SSDs, mas use defaults,discardopções para aparar seus blocos conforme proposto por @cas.

Sistema: Linux Ubuntu 16.04
Kernel do Linux de 64 bits : 4.6
Módulos Linux: wl
Hardware: Macbook Air 2013 meados de
Ram: 8 GB
SSD: 128 GB

Léo Léopold Hertz 준영
fonte
Saída de fdisk -lu /dev/sda?
Stéphane Chazelas
As opções estão diminuindo os fs em / dev / sda2 e reparticionam (mas isso não pode ser feito no sistema ativo, pois você não pode desmontar / dev / sda2, pois esse é o sistema de arquivos raiz: inicializar em algum livecd é o mais fácil) ou use um arquivo de swap em oposição ao dispositivo de bloco, ou o uso de swap comprimido ou carneiro comprimido
Stéphane Chazelas
1
Poucas considerações sobre o posicionamento se aplicam aos SSD: s, pois eles não têm cabeças ou faixas como discos giratórios. A distribuição em várias unidades pode ser aplicada, se você tiver uma carga de E / S enorme.
22416 ilkkachu
1
@Masi Ei, cara, eu estava trabalhando com o meu sistema FreeBSD e algo me veio à cabeça: temos um comando chamado chflagsBSD e OS X, e um comando no linux chamado chattr, você pode tornar seus arquivos e diretórios cada vez mais seguros e imutável definindo alguns atributos, aqui está um guia no tecmint.com , espero que isso possa ajudar.
FarazX 28/07

Respostas:

3

Você só quer aumentar o tamanho da troca no seu sistema usando o espaço de sda2. Seusda2

/dev/sda2       104G   74G   25G  75%  / 

Você pode adicionar espaço de troca adicional ao seu sistema usando o arquivo de troca criado /que utilizará o seu sda2. Apenas faça:

dd if=/dev/zero of=/swapfile bs=20480 count=1M

e então faça:

sudo mkswap /swapfile  
sudo swapon /swapfile 

e verifique, você troca de espaço aumentará nessa quantidade usando free -m

e sim, para habilitá-lo no momento da inicialização, adicione a entrada em /etc/fstab

 /swapfile     none     swap     sw     0     0
Ijaz Ahmad Khan
fonte
3
Sim, você deve poder calcular. O Swapper deve ver uma grande memória virtual.
Lmwangi
3
@masi Se você adicionar uma entrada, /etc/fstabpoderá evitar as entradas rc.local. Coloque a algum lugar arquivo de troca como /mnt/.swape você não vai precisar se preocupar com isso muito mais
roaima
4
  1. Gerenciamento de memória

    • Para exibir o resumo do uso de swap pelo seu dispositivo:

      $ swapon -s
      
    • Para exibe a quantidade de memória física e de troca livre e usada:

      $ free -h
      
    • Para pré-alocar espaço para / swapfile, você pode usar a linha abaixo:

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. Alterar permissão e criar / ativar swap

    $ chmod 600 /swapfile
    
    $ mkswap /swapfile
    
    $ swapon /swapfile
    

    Você também pode melhorar a segurança do arquivo alterando os atributos do arquivo usando chattr. Eu recomendo que você leia sua página de manual ou leia este guia no site do Tecmint .

  3. Verifique se está ativado, visualizando a saída do comando cat /proc/swaps, use freecommand ou

    $ swapon -s
    
  4. Para habilitá-lo no momento da inicialização , editar /etc/fstab(informações estáticas sobre o sistema de arquivos) para incluir a seguinte onde os campos são fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freqe fs_passno, sobre o qual você pode ler por man 5 fstab:

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • No parâmetro fourt fs_mntops , não use apenas swao trocar para um SSD, mas para defaults,discardque os blocos de memória sejam aparados toda vez na inicialização, consulte a resposta aqui sobre Como fazer interceptação e troca de erros se erro / aviso? A discardopção definitivamente funciona em partições.
FarazX
fonte
2
@ Masi não, fallocate é apenas easire, não há necessidade de colocar zeros e definir a contagem via, ddpois você pode fazer errado se não souber o que está fazendo, ddé um comando super poderoso. E o espaço de troca do AFAIK no Linux é usado quando a quantidade de memória física (RAM) está cheia e lembre-se de que não há ponto de montagem. Então eu acho que não importa onde ele está, apenas chmod-lo para 600.
FarazX
1
@ Masi meu prazer. BTW, você pode ler sobre os campos fstabexecutando man 5 fstab. Boa sorte, meu caro.
FarazX
@ Masi sim, é claro. Você pode listar os atributos de arquivo lsattre, como mencionei, pode defini-los chattr. Por exemplo, se você quiser torná-lo imutável, você pode usar chattr +i /mnt/.swapfileou no BSD ou OS X você pode usar chflags uchg yourFile. Você tem muitas opções de atributos, por exemplo, quando um arquivo com sconjunto de atributos é excluído, seus blocos serão zerados e gravados de volta no disco. Mas eu recomendo que você leia a página de manual e navegue na Internet. Não é tão fácil quanto parece chattr, e você deve estar ciente do que realmente fará!
FarazX 29/07
1
O atributo de configuração @Aasi AFAIK é de acordo com as suas necessidades, portanto a resposta é não para os sistemas majoritários. Mas você pode encontrar alguns sistemas operacionais Unix-como ter alguns arquivos ou diretórios com atributos imutáveis ou restritos definidos por padrão, por exemplo, MacOS X.
FarazX
1
@ Na verdade, não há necessidade de fazê-lo por padrão, então acho que a resposta é não, pois os Swapfiles provavelmente são usados ​​temporariamente e não permanentemente. Se você estiver usando partições LVM, é melhor aumentar sua partição de troca, em vez de criar um arquivo de troca. Mas se você não pode fazer isso e swapfiles é a única opção, não há problema, mas isso afetará seu sistema e diminuirá seu desempenho. Não existe um livro de regras, tudo depende de suas necessidades e do que você pode fazer por isso e de quão seguro você deseja que seu sistema seja.
FarazX
2

Você pergunta: " Como alocar mais espaço para trocar e aumentar seu tamanho maior que o Ram? ", Não diz nada sobre mudar a maneira como o sistema é configurado.

Seu fdisk e saída gratuita nos dizem:

  • Você possui uma partição (/ dev / sda3) dedicada à troca. Se você acabou de redimensionar essa partição, não precisará alterar nada no seu sistema para usar o espaço extra. (/ etc / fstab).
  • Você tem uma partição (/ dev / sda2) que possui o sistema operacional. Esta partição possui 26G de espaço livre. Se você reduzir esta partição em 20G, o sistema operacional terá 5G restantes para crescer e usar.

A partição de troca não é uma partição estendida, isso facilita um pouco o aumento do tamanho.

Ferramentas necessárias:

  • SO inicializável com gparted

Procure aqui um local da última versão gratuita do Parted Magic

Instruções para redimensionar partições com gparted

  1. inicialize em outro sistema operacional que tenha dividido a ferramenta
  2. Em gparted; redimensione a partição do sistema operacional (/ dev / sda2). Encolher por quantia para doar para trocar espaço. Isso pode levar muito tempo, porque todos os dados que estão no espaço sendo liberado precisarão ser movidos por gparted.
  3. Em gparted; redimensionar partição swap (/ dev / sda3). Mova e estenda para incluir todo o espaço livre.
  4. reinicie no sda2 OS.
  5. verifique se a partição de troca (/ dev / sda3) está sendo usada.

Lembre-se de que você está alterando seu disco e partições em um nível baixo e que quaisquer erros ou falhas podem danificar seus dados.

Faça backup dos seus dados primeiro.

jc__
fonte
Eu acho que você não precisa gpartedaqui, porque você pode colocar o cotonete no mesmo disco onde está o seu sistema operacional.
Léo Léopold Hertz #
É verdade, mas você teria 2 swap. Arquive em / sda2 e particione em / sda3. Isso responde à parte da pergunta que perguntou "Aloque mais espaço em disco para Trocar em / dev / sda3. Como retirá-lo de / dev / sda2?".
jc__
Em referência à declaração: "No entanto, não tenho certeza porque acho que / dev / sda2 e / dev / sad3 estão na mesma partição de disco". /dev/sda2 e /dev/sda3 são partições separadas.
precisa saber é
Então você está adicionando outro dispositivo que possui espaço que você deseja usar para troca? Se sim. Você pode criar uma nova partição do tipo swap nela e, quando conectado e pronto para usar, faça um swaponou similar. Na remoção do dispositivo, faça um swapoffou semelhante. O status de troca de dispositivo não será lembrado na reinicialização do sistema operacional.
Jc__ 28/07
1
O mkfs formatará uma partição com um sistema de arquivos. (vfat, ext2, ext4, NTFS). O chattr alterará os atributos de um arquivo em um sistema de arquivos ext.
jc__