Comment changer la partition de swap sous Linux?

12

Comment changer la partition de swap sous Linux? Si j'utilise actuellement / dev / hda3 pour l'échange et que je préfère utiliser / dev / hda4, quelles étapes dois-je suivre?

Martin Bøgelund
la source
1
il vaut probablement la peine de créer une partition logique / dev / hda5 dans la partition principale / dev / hda4 et de l'utiliser pour le swap. De cette façon, vous n'avez pas à dépenser l'intégralité de / dev / hda4 pour le swap et pouvez y créer d'autres partitions logiques
dmityugov

Réponses:

25

Faites-le en tant que root:

swapoff /dev/hda3
mkswap /dev/hda4
swapon /dev/hda4

et modifier l'entrée de swap dans / etc / fstab

mateusza
la source
13

Si vous avez une quantité décente de RAM et que vos applications ne consomment pas beaucoup de mémoire, vous pouvez envisager d'utiliser un fichier distinct comme échange au lieu de la partition entière. De cette façon, vous pouvez facilement sélectionner la quantité d'espace de swap que vous utilisez, soit en ajoutant plus de fichiers de swap, soit en redimensionnant les fichiers existants.

Disons que votre fichier d'échange résidera dans le répertoire racine en tant que /swapfile, et aura une taille de 512 Mo. Pour le créer, émettez des commandes en tant que root:

$ dd if=/dev/zero of=/swapfile bs=1M count=512
$ mkswap /swapfile
$ swapon /swapfile

Pour l'utiliser automatiquement après le redémarrage, insérez-le dans /etc/fstab:

/swapfile    none    swap    defaults    0 0

Ajouter plus de fichiers d'échange est aussi simple que de créer plus de fichiers ( /swapfile1, /swapfileX), de les formater en utilisant mkswapet d'activer en utilisant swapon. Si vous souhaitez désactiver un fichier d'échange, vous pouvez utiliser la commande swapoff /swapfile.

Quant aux performances entre le disque et la version du fichier, ce n'est pas si différent. Vous pouvez même utiliser le fichier d'échange comme disque d'hibernation dans les ordinateurs portables (bien que j'utilise toujours une partition séparée pour cela de toute façon).

drybjed
la source
swapfile n'est pas une bonne idée, car ext4 est super SLOW un SSD pour les procédures d'écriture fréquentes. C'est pourquoi par défaut, le swap linux a un système de fichiers différent. La bonne façon serait de redimensionner la table de partition pour agrandir la partition de swap.
Evalds Urtans
9

À la volée:

sudo swapoff /dev/hda3
sudo mkswap /dev/hda4
sudo swapon /dev/hda4

Pour le démarrage, après avoir exécuté le mkswap, modifiez le fichier / etc / fstab et modifiez la ligne / dev / hda3 en conséquence.

Kyle Brandt
la source
4

Vous devrez formater / dev / hda4 comme swap, ce qui, je pense, supprime simplement les tables du système de fichiers, puis éditez / etc / fstab et pointez swap vers / dev / hda4. Redémarrez ensuite et vous devriez être bon. Il va sans dire que vous perdrez toutes les données sur / dev / hda4. Vous pouvez utiliser gparted comme interface graphique pour le formatage.

skitzot33
la source
1
Vous n'avez pas besoin de redémarrer Linux 2.6.x après avoir formaté une partition, pas même après avoir changé la table de partition du disque.
drybjed
Bon point, mais je m'en tenais à la philosophie KISS.
skitzot33
@ skitzot33 Le démarrage n'est-il pas plus simple que le démarrage ?
glglgl
2

La solution de mateusza est correcte, mais l'état peut ne pas être rappelé lors de la récupération de l'hibernation. Quelques opérations supplémentaires sont nécessaires:

# prepare your partitions
swapoff /dev/sda2
mkswap /dev/sda3
swapon /dev/sda3

# find swap uuid
sudo blkid | grep swap
# OR
sudo echo ls -l /dev/disk/by-uuid | grep sda3 |  cut -d' '  -f8 >> /etc/fstab

# edit swap entry in /etc/fstab
gksu gedit /etc/fstab

# edit the uuid line in /etc/initramfs-tools/conf.d/resume
gksu gedit /etc/initramfs-tools/conf.d/resume

# In terminal, execute this command
sudo update-initramfs -u

vous pouvez tester votre hibernation ici, si cela ne fonctionne pas:

# check your /etc/default/grub file
gksu gedit /etc/default/grub

# Depending on your version : if a line looks like
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<old_swap_partition_uuid>"
# then modify it accordingly; otherwise that's all, you're done

# execute in terminal
sudo update-grub

extrait de askubuntu

fkk
la source