Comment allouer plus d'espace pour permuter et augmenter sa taille plus que Ram?

8

Situation: augmentation de la taille du swap ( /dev/sda3) supérieure à Ram (8 Go) lorsque HD 128 Go
Motivation: 8 Go de RAM est trop peu; 30 Go d'espace libre sur mon SSD; Je veux transformer 20 Go en swap SSD
Caractéristiques du système

  • Échange non immuable / modifiable. Je ne trouve aucune preuve pourquoi /mnt/.swapfiledevrait être immuable, vous n'avez donc pas besoin de modifier les attributs de fichier du fichier d'échange

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • La commande sudo fdisk -lu /dev/sdadonne

    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
    
  • La commande df -hdonne

    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
    
  • Allouez plus d'espace disque pour Swap in /dev/sda3.

Mon flux de travail infructueux pour la tâche lorsque HD et Swap sur la même partition, /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 et échange sur la même partition - Workflow actuel [Ijaz, cas, FarazX]

Fusion. Utilisez fallocateau début à la place ddcar pas besoin de mettre des zéros

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

Ajoutez la ligne suivante dans votre /etc/fstabqui est mieux que d'ajouter la chose à vos runlevels ( /etc/rc.local), où je mets le fichier d'échange /mnt/.swapfilepour maintenir la philosophie Linux / Unix et maintenir l'intégrité de mes scripts de sauvegarde système; Si vous passez à un SSD, utilisez l' discardoption pour que les blocs soient coupés à chaque redémarrage, donc passw

# 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

Sources

  1. Comment augmenter l'espace de swap? https://askubuntu.com/a/178726/25388 Discussion générale sur l'augmentation de l'espace de swap pour les débutants.
  2. Linux Partition HOWTO for HDDs, not SSDs: 4. Partitioning requirements. http://www.tldp.org/HOWTO/Partition/requirements.html Ne mettez donc pas votre swap sur les pistes externes des SSD mais utilisez des defaults,discardoptions pour découper vos blocs comme proposé par @cas.

Système: Linux Ubuntu 16.04
Noyau Linux 64 bits : 4,6
modules Linux: wl
Matériel: Macbook Air 2013-mid
Ram: 8 Go
SSD: 128 Go

Léo Léopold Hertz 준영
la source
Sortie de fdisk -lu /dev/sda?
Stéphane Chazelas
Les options réduisent fs sur / dev / sda2 et la répartition (mais cela ne peut pas être fait à partir du système en direct car vous ne pouvez pas démonter / dev / sda2 car c'est le système de fichiers racine: le démarrage sur un livecd est le plus simple), ou utilisez un fichier d'échange par opposition à un périphérique bloc, ou utilisez un échange compressé ou un ram compressé
Stéphane Chazelas
1
Peu de ces considérations de placement s'appliquent aux SSD: s, car ils n'ont pas de têtes ou de pistes comme des disques en rotation. La répartition sur plusieurs disques peut s'appliquer si vous avez une énorme charge d'E / S.
ilkkachu
1
@Masi Hey mate, je travaillais avec mon système FreeBSD et quelque chose m'est venu à l'esprit, nous avons une commande appelée chflagssur BSD et OS X, et nous avons une commande sur linux appelée chattr, vous pouvez rendre vos fichiers et répertoires de plus en plus sécurisés et immuable en définissant certains attributs, voici un guide sur tecmint.com , j'espère que cela peut vous aider.
FarazX

Réponses:

3

Vous voulez simplement augmenter la taille du swap sur votre système en utilisant l'espace de sda2. Votresda2

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

Vous pouvez ajouter un espace d'échange supplémentaire à votre système en utilisant un fichier d'échange créé sur /celui-ci qui utilisera votre sda2. Faites juste:

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

puis faites:

sudo mkswap /swapfile  
sudo swapon /swapfile 

et vérifiez, vous échangez l'espace augmentera de ce montant en utilisant free -m

et oui, pour l'activer au démarrage, ajoutez l'entrée dans /etc/fstab

 /swapfile     none     swap     sw     0     0
Ijaz Ahmad Khan
la source
3
Oui, vous devriez pouvoir calculer. Swapper devrait voir une grande mémoire virtuelle.
Lmwangi
3
@masi si vous ajoutez une entrée dans, /etc/fstabvous pouvez éviter les entrées dans rc.local. Mettez le fichier d'échange quelque part comme /mnt/.swapet vous n'aurez plus à vous en soucier
roaima
4
  1. Gestion de la mémoire

    • Pour afficher le résumé d'utilisation du swap par votre appareil:

      $ swapon -s
      
    • Pour afficher la quantité de mémoire physique et d'échange libre et utilisée:

      $ free -h
      
    • Pour préallouer de l'espace à / swapfile, vous pouvez utiliser la ligne ci-dessous:

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. Modifier l'autorisation et créer / activer l'échange

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

    Vous pouvez également améliorer la sécurité de vos fichiers en modifiant vos attributs de fichier à l' aide de chattr. Je vous recommande de lire sa page de manuel ou de lire ce guide sur le site Web de Tecmint .

  3. Vérifiez qu'il est activé en affichant la sortie de la commande cat /proc/swaps, utilisez la freecommande ou

    $ swapon -s
    
  4. Pour lui permettre au démarrage , modifier /etc/fstab(informations statiques sur le système de fichiers) pour inclure les éléments suivants où les champs sont fs_spec, fs_file, fs_vfstype, fs_mntops, fs_freqet fs_passno, dont vous pouvez lire par man 5 fstab:

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • Dans le paramètre fourt fs_mntops , n'utilisez pas uniquement swlors de l'échange vers un SSD, mais de manière à defaults,discardce que les blocs de mémoire soient tronqués à chaque démarrage, voir la réponse ici sur la façon de procéder au recouvrement des erreurs et au swapoff en cas d'erreur / d'avertissement? L' discardoption fonctionne définitivement sur les partitions.
FarazX
la source
2
@Masi non, fallocate est juste facile, pas besoin de mettre des zéros et de définir le nombre via, ddcar vous pourriez le faire mal si vous ne savez pas ce que vous faites, ddest une commande super puissante. Et l'espace d'échange AFAIK sous Linux est utilisé lorsque la quantité de mémoire physique (RAM) est pleine, et sachez qu'elle n'a pas de point de montage. Je pense donc que peu importe où il se trouve,
modifiez-le
1
@Masi mon plaisir. BTW, vous pouvez lire sur les champs en fstabexécutant man 5 fstab. Bonne chance mec.
FarazX
@Masi oui bien sûr. Vous pouvez répertorier les attributs de fichier par lsattr, et comme je l'ai mentionné, vous pouvez les définir par chattr. Par exemple, si vous voulez le rendre immuable, vous pouvez utiliser chattr +i /mnt/.swapfile, ou dans BSD ou OS X, vous pouvez utiliser chflags uchg yourFile. Vous disposez de nombreuses options d'attribut, par exemple, lorsqu'un fichier avec un sensemble d'attributs est supprimé, ses blocs seront mis à zéro et réécrits sur le disque. Mais je vous recommande de lire sa page de manuel et de surfer sur le net. Ce n'est pas aussi simple qu'il y paraît chattr, et vous devez savoir ce que vous allez vraiment faire!
FarazX
1
L'attribut @Masi AFAIK est à la hauteur de vos besoins, donc la réponse est non pour les systèmes majoritaires. Mais vous pouvez trouver certains systèmes d'exploitation de type Unix ayant certains fichiers ou répertoires avec des attributs immuables ou restreints définis par défaut, pour Instance, MacOS X.
FarazX
1
@Masi en fait, il n'est pas nécessaire de le faire par défaut, donc je pense que la réponse est non, car les fichiers d'échange sont très probablement utilisés temporairement et non de manière permanente. Si vous utilisez des partitions LVM, il est préférable d'augmenter votre partition d'échange au lieu de créer un fichier d'échange. Mais si vous ne pouvez pas le faire et que les fichiers d'échange sont la seule option, il n'y a pas de problème, mais cela affectera votre système et ralentira ses performances. Il n'y a pas de règles, tout dépend de vos besoins, de ce que vous pouvez en faire et de la sécurité que vous souhaitez pour votre système.
FarazX
2

Vous vous demandez: « Comment allouer plus d'espace pour permuter et augmenter sa taille plus que Ram? », Ne dit rien sur la modification de la configuration de votre système.

Votre fdisk et votre sortie gratuite nous disent:

  • Vous avez une partition (/ dev / sda3) dédiée au swap. Si vous redimensionnez simplement cette partition, vous ne devriez pas avoir besoin de changer quoi que ce soit dans votre système pour utiliser l'espace supplémentaire. (/ etc / fstab).
  • Vous avez une partition (/ dev / sda2) sur laquelle se trouve le système d'exploitation. Cette partition a 26G d'espace libre. Si vous réduisez cette partition de 20G, le système d'exploitation aura 5G pour grandir et utiliser.

La partition de swap n'est pas une partition étendue, ce qui facilite un peu l'augmentation de la taille.

Outils nécessaires:

  • Système d'exploitation amorçable avec gparted

Recherchez ici un emplacement de la dernière version gratuite de Parted Magic

Instruction pour redimensionner les partitions avec gparted

  1. démarrer dans un autre système d'exploitation doté d'un outil gparted
  2. En part; redimensionner la partition du système d'exploitation (/ dev / sda2). Rétrécissez en montant pour faire un don pour échanger de l'espace. Cela pourrait prendre beaucoup de temps car toutes les données qui se trouvent dans l'espace libéré devront être déplacées par gparted.
  3. En part; redimensionner la partition de swap (/ dev / sda3). Déplacer et étendre pour inclure tout l'espace libre.
  4. redémarrer dans sda2 OS.
  5. vérifiez que la partition de swap (/ dev / sda3) est utilisée.

N'oubliez pas que vous modifiez votre disque et vos partitions à un faible niveau et que toute erreur ou plantage pourrait endommager vos données.

Sauvegardez vos données en premier.

jc__
la source
Je pense que vous n'en avez pas besoin gpartedici car vous pouvez mettre un tampon sur le même disque que celui où se trouve votre système d'exploitation.
Léo Léopold Hertz
C'est vrai, mais alors vous auriez 2 swap. Fichier sur / sda2 et partition sur / sda3. Cela répond à la partie de la question qui demandait "Allouer plus d'espace disque pour Swap dans / dev / sda3. Comment le retirer de / dev / sda2?".
jc__
En référence à la déclaration: "Cependant, je ne suis pas sûr car je pense que / dev / sda2 et / dev / sad3 sont sur la même partition de disque". /dev/sda2 et /dev/sda3 sont des partitions séparées.
jc__
Donc, vous ajoutez un autre appareil qui a de l'espace que vous souhaitez utiliser pour l'échange? Si oui. Vous pouvez créer une nouvelle partition de type swap dessus et une fois branché et prêt à l'emploi, faites-en un swaponou similaire. Lors du retrait de l'appareil, effectuez une opération swapoffsimilaire. L'état d'échange de l'appareil ne sera pas mémorisé lors du redémarrage du système d'exploitation.
jc__
1
mkfs formatera une partition avec un système de fichiers. (vfat, ext2, ext4, ntfs). chattr changera les attributs de fichier d'un fichier sur un système de fichiers ext.
jc__