如何在 Linux 中更改交换分区?

Mar*_*und 14 linux swap

如何在 Linux 中更改交换分区?如果我目前使用 /dev/hda3 进行交换,而我更愿意使用 /dev/hda4,我应该执行哪些步骤?

mat*_*sza 26

以 root 身份执行:

swapoff /dev/hda3
mkswap /dev/hda4
swapon /dev/hda4
Run Code Online (Sandbox Code Playgroud)

并在 /etc/fstab 中编辑交换条目


dry*_*jed 14

如果您有相当数量的 RAM 并且您的应用程序不是内存密集型的,您可以考虑使用单独的文件作为交换而不是整个分区。这样您就可以轻松选择您使用的交换空间量,方法是添加更多交换文件或调整现有文件的大小。

假设您的交换文件将作为 驻留在根目录中/swapfile,并且大小为 512 MB。要创建它,请以 root 身份发出命令:

$ dd if=/dev/zero of=/swapfile bs=1M count=512
$ mkswap /swapfile
$ swapon /swapfile
Run Code Online (Sandbox Code Playgroud)

要在重新启动后自动使用它,请插入/etc/fstab

/swapfile    none    swap    defaults    0 0
Run Code Online (Sandbox Code Playgroud)

添加更多交换文件就像创建更多文件 ( /swapfile1, /swapfileX)、mkswap使用swapon. 如果要禁用交换文件,可以使用 command swapoff /swapfile

至于磁盘和文件版本之间的性能,并没有那么大的不同。您甚至可以将交换文件用作笔记本电脑中的休眠磁盘(尽管我总是为此使用单独的分区)。


Kyl*_*ndt 9

飞行中:

sudo swapoff /dev/hda3
sudo mkswap /dev/hda4
sudo swapon /dev/hda4
Run Code Online (Sandbox Code Playgroud)

对于 boottime,在运行 mkswap 后,编辑 /etc/fstab 文件并相应地更改 /dev/hda3 行。


小智 5

您需要将/dev/hda4 格式化为swap,我认为这只会删除文件系统表,然后只需编辑/etc/fstab 并将swap 指向/dev/hda4。然后重新启动,你应该很好。不用说,您将丢失 /dev/hda4 上的任何数据。您可以使用 gparted 作为格式化的 gui。


小智 5

mateusza的解决方案是可以的,但是从休眠中恢复时可能无法调用该状态。需要一些额外的操作:

# 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
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,您可以在此处测试您的休眠状态:

# 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
Run Code Online (Sandbox Code Playgroud)

取自askubuntu