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


12

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


1
可能值得在主分区/ dev / hda4中创建逻辑分区/ dev / hda5并将其用于交换。这样,您不必花费整个/ dev / hda4进行交换,就可以在其中创建其他逻辑分区
dmityugov,2009年

Answers:


25

以root身份执行:

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

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


13

如果您有足够的RAM且应用程序不占用大量内存,则可以考虑使用一个单独的文件作为交换而不是整个分区。这样,您可以轻松地选择要使用的交换空间量,方法是添加更多交换文件或调整现有文件的大小。

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

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

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

/swapfile    none    swap    defaults    0 0

添加更多的交换文件很简单,只要创造更多的文件(/swapfile1/swapfileX)格式化使用它们mkswap,并使用使swapon。如果要禁用交换文件,可以使用command swapoff /swapfile

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


swapfile不是一个好主意,因为ext4对于频繁的写入过程而言是超级SLOW和SSD。这就是为什么默认情况下linux swap具有不同的文件系统的原因。正确的方法是调整分区表的大小,以使交换分区更大。
Evalds Urtans

9

即时:

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

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


4

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


1
格式化分区后,甚至在更改磁盘的分区表之后,都不需要重新引导Linux2.6.x。
drybjed

很好,但我坚持使用KISS哲学。
skitzot33,2009年

@ skitzot33 引导不是比引导简单吗?
glglgl

2

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

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

# 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

取自askubuntu

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.