Come allocare più spazio per scambiare e aumentare la sua dimensione maggiore di Ram?


8

Situazione: aumentare la dimensione dello swap ( /dev/sda3) maggiore di Ram (8 GB) quando HD 128 GB
Motivazione: 8 GB RAM è troppo piccola; 30 GB di spazio libero nel mio SSD; Voglio trasformare 20 GB in scambio SSD
Caratteristiche del sistema

  • Scambia non immutabile / modificabile. Non riesco a trovare alcuna prova del motivo per cui /mnt/.swapfiledovrebbe essere immutabile, quindi non è necessario modificare gli attributi di file del file di scambio

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • Il 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
    
  • Il 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
    
  • Allocare più spazio su disco per Swap in /dev/sda3.

Il mio flusso di lavoro non riuscito per l'attività quando HD e Swap sulla stessa partizione, /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 scambio sulla stessa partizione - Flusso di lavoro corrente [Ijaz, cas, FarazX]

Fusione. Utilizzare fallocateall'inizio ddperché non è necessario inserire zeri

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

Aggiungi la seguente riga nella tua, /etc/fstabche è meglio che aggiungere la cosa ai tuoi runlevel ( /etc/rc.local), dove ho messo il file di scambio nella /mnt/.swapfilefilosofia Linux / Unix e nell'integrità degli script di backup del mio sistema; Se si passa a un SSD, utilizzare l' discardopzione in modo che i blocchi vengano tagliati ad ogni riavvio, quindi nonsw

# 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

fonti

  1. Come aumentare lo spazio di scambio? https://askubuntu.com/a/178726/25388 Discussione generale sull'aumento dello spazio di swap per i principianti.
  2. Linux Partition HOWTO per HDD, non SSD: 4. Requisiti di partizionamento. http://www.tldp.org/HOWTO/Partition/requirements.html Quindi non collocare lo swap su tracce esterne su SSD ma utilizzare le defaults,discardopzioni per tagliare i blocchi come proposto da @cas.

Sistema: Linux Ubuntu 16.04 64 bit
kernel Linux: 4.6
Moduli Linux: wl
Hardware: Macbook Air 2013-metà
RAM: 8 GB
SSD: 128 GB


Uscita di fdisk -lu /dev/sda?
Stéphane Chazelas,

Le opzioni stanno riducendo fs su / dev / sda2 e ripartizione (ma ciò non può essere fatto dal sistema live poiché non è possibile smontare / dev / sda2 in quanto è il filesystem di root: l'avvio su alcuni livecd è il più semplice), oppure usare un file di scambio invece di bloccare il dispositivo, o utilizzare lo scambio compresso o ram compresso
Stéphane Chazelas

1
Poche di queste considerazioni sul posizionamento si applicano a SSD: s, poiché non hanno teste o tracce come i dischi rotanti. È possibile applicare lo striping su più unità se si dispone di un carico I / O enorme.
ilkkachu,

1
@Masi Ehi amico, stavo lavorando con il mio sistema FreeBSD e mi è venuto in mente qualcosa, abbiamo un comando chiamato chflagssu BSD e OS X, e abbiamo un comando su Linux chiamato chattr, puoi rendere i tuoi file e directory sempre più sicuri e immutabile impostando alcuni attributi, ecco una guida su tecmint.com , spero che questo possa aiutare.
FarazX,

Risposte:


3

Volete solo aumentare le dimensioni dello swap sul vostro sistema usando lo spazio da sda2. Il tuosda2

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

È possibile aggiungere ulteriore spazio di swap al proprio sistema utilizzando il file di swap creato su /che utilizzerà il proprio sda2. Basta fare:

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

e poi fai:

sudo mkswap /swapfile  
sudo swapon /swapfile 

e controlla, lo spazio di swap aumenterà di tale importo usando free -m

e sì, per abilitarlo all'avvio aggiungere la voce /etc/fstab

 /swapfile     none     swap     sw     0     0

3
Sì, dovresti essere in grado di calcolare. Swapper dovrebbe vedere una grande memoria virtuale.
Lmwangi,

3
@masi se aggiungi una voce /etc/fstabpuoi evitarla rc.local. Metti il ​​file di scambio da qualche parte /mnt/.swape non dovrai più preoccupartene troppo
roaima

4
  1. Gestione della memoria

    • Per visualizzare il riepilogo dell'utilizzo dello scambio dal dispositivo:

      $ swapon -s
      
    • Per visualizzare la quantità di memoria fisica e di swap gratuita e utilizzata:

      $ free -h
      
    • Per preallocare lo spazio su / swapfile, è possibile utilizzare la riga seguente:

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. Modifica l'autorizzazione e crea / attiva lo scambio

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

    È inoltre possibile migliorare la sicurezza dei file modificando gli attributi dei file mediante chattr. Ti consiglio di leggere la sua pagina di manuale o di leggere questa guida sul sito Web di Tecmint .

  3. Verificare che sia abilitato visualizzando l'output del comando cat /proc/swaps, utilizzare freecommand o

    $ swapon -s
    
  4. Per abilitarlo in fase di avvio , modificare /etc/fstab(informazioni statiche sul file system) per includere la seguente dove i campi sono fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freqe fs_passno, su cui si può leggere da man 5 fstab:

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • Nel parametro fourt fs_mntops , non utilizzare solo swquando si scambia su un SSD ma in modo defaults,discardtale che i blocchi di memoria vengano tagliati ogni volta all'avvio, vedere la risposta qui su Come eseguire il trapping degli errori e Swapoff se Errore / Avviso? L' discardopzione funziona sicuramente su partizioni.

2
@Masi no, fallocate è semplicemente facile, non c'è bisogno di mettere zeri e impostare il conteggio ddpoiché potresti sbagliare se non sai cosa stai facendo, ddè un comando super potente. E lo spazio AFAIK Swap in Linux viene utilizzato quando la quantità di memoria fisica (RAM) è piena ed essere consapevoli del fatto che non ha alcun punto di montaggio. Quindi penso che non importa dove sia, basta
cambiarlo

1
@Masi piacere. A proposito, puoi leggere i campi fstabeseguendo man 5 fstab. Buona fortuna amico.
FarazX,

@Masi sì, certo. Puoi elencare gli attributi dei file per lsattr, e come ho già detto, puoi impostarli per chattr. Ad esempio, se si desidera renderlo immutabile, è possibile utilizzare chattr +i /mnt/.swapfileo in BSD o OS X è possibile utilizzare chflags uchg yourFile. Esistono molte opzioni di attributo, ad esempio quando un file con sset di attributi viene eliminato, i suoi blocchi verranno azzerati e riscritti sul disco. Ma ti consiglio di leggere la sua pagina di manuale e navigare in rete. Non è così facile come sembra usare chattre dovresti essere consapevole di ciò che davvero farai!
FarazX,

1
L'attributo di impostazione AFAIK di @Masi dipende dalle tue esigenze, quindi la risposta è no per i sistemi di maggioranza. Ma puoi trovare alcuni sistemi operativi Unix-Like con alcuni file o directory con attributi immutabili o limitati impostati di default, per esempio, MacOS X.
FarazX

1
@Masi infatti, non è necessario farlo per impostazione predefinita, quindi penso che la risposta sia no, poiché gli Swapfile sono probabilmente usati temporaneamente non permanentemente. Se si utilizzano partizioni LVM è meglio aumentare la partizione di swap, anziché creare un file di swap. Ma se non puoi farlo e gli swapfile sono l'unica opzione, non ci sono problemi, ma influenzerà il tuo sistema e ne rallenterà le prestazioni. Non esiste un libro delle regole, tutto dipende dalle tue esigenze, da cosa puoi fare e dalla sicurezza che vuoi che il tuo sistema sia.
FarazX,

2

La tua domanda " Come allocare più spazio per scambiare e aumentare le sue dimensioni più grande di Ram? ", Non dice nulla sulla modifica del modo in cui il sistema è configurato.

Il tuo fdisk e l'output gratuito ci dicono:

  • Hai una partizione (/ dev / sda3) dedicata allo scambio. Se si ridimensiona semplicemente quella partizione, non è necessario modificare nulla nel sistema per utilizzare lo spazio aggiuntivo. (/ Etc / fstab).
  • Hai una partizione (/ dev / sda2) che contiene il sistema operativo. Questa partizione ha 26G di spazio libero. Se riduci questa partizione di 20G, al sistema operativo rimarranno 5G da espandere e utilizzare.

La partizione di swap non è una partizione estesa, questo rende un po 'più facile aumentare le dimensioni.

Strumenti richiesti:

  • Sistema operativo avviabile con gparted

Cerca qui una posizione dell'ultima versione gratuita di Parted Magic

Istruzioni per il ridimensionamento delle partizioni con gparted

  1. avviare in un altro sistema operativo che ha lo strumento gparted
  2. In gparted; ridimensionare la partizione del sistema operativo (/ dev / sda2). Riduci per importo da donare per scambiare spazio. Ciò potrebbe richiedere molto tempo, poiché tutti i dati presenti nello spazio da liberare dovranno essere spostati da gparted.
  3. In gparted; ridimensionare la partizione di swap (/ dev / sda3). Sposta ed estendi per includere tutto lo spazio libero.
  4. riavviare nel sistema operativo sda2.
  5. verificare che venga utilizzata la partizione di swap (/ dev / sda3).

Ricorda che stai modificando il disco e le partizioni a un livello basso e che eventuali errori o arresti anomali potrebbero danneggiare i dati.

Prima fai il backup dei dati.


Penso che non sia necessario gpartedqui perché è possibile inserire il tampone nello stesso disco in cui si trova il sistema operativo.
Léo Léopold Hertz

Vero, ma poi avresti 2 swap. File su / sda2 e partizione su / sda3. Questo risponde alla parte della domanda che ha posto "Allocare più spazio su disco per Swap in / dev / sda3. Come prenderlo da / dev / sda2?".
jc__

In riferimento alla frase: "Tuttavia, non sono sicuro perché penso che / dev / sda2 e / dev / sad3 siano sulla stessa partizione del disco". /dev/sda2 e /dev/sda3 sono partizioni separate.
jc__

Quindi stai aggiungendo un altro dispositivo che ha spazio su di esso che desideri utilizzare per lo scambio? Se si. È possibile creare una nuova partizione di tipo swap su di essa e quando collegata e pronta per l'uso fare una swapono simile. Alla rimozione del dispositivo, eseguire una swapoffo simile. Lo stato di scambio del dispositivo non verrà ricordato al riavvio del sistema operativo.
jc__

1
mkfs formatterà una partizione con un file system. (vfat, ext2, ext4, ntfs). chattr cambierà gli attributi di un file su un file system ext.
jc__
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.