系统安装后如何添加交换?


153

我在Ubuntu安装过程中没有创建交换分区。后来,我释放了一些空间并创建了交换分区。现在,每次启动后,我将手动打开gparted以右键单击交换分区以打开“ swapon”选项。

如何在启动时自动启用交换分区?

另外,如果我还没有创建交换分区,我还有其他选择吗?


Answers:


132

您需要编辑/etc/fstab并添加新的交换分区。

sudo nano /etc/fstab

您需要添加一条看起来像

UUID=735b3be3-779c-4d21-a944-b033225f3ab4 none   swap    sw      0       0

然后使用以下命令获取UUID

sudo blkid /dev/sda3

/dev/sda3用适当的设备名称代替)。

有关:


我需要/ etc / fstan的帮助才能获得输出:-bash:/ etc / fstab:权限被拒绝
Ashu_FalcoN 2014年

使用sudo gedit / etc / fstab

3
要找到适当的设备名称:(sudo fdisk -l来自:askubuntu.com/questions/182446/…),然后查找Type:Linux swap。
NumesSanguis '16

1
sudo blkid /dev/sda4不为我打印任何内容(sda4是代码为82h的新创建分区,fdisk说它是“ Linux swap / Solaris”分区)。
Egor Skriptunoff

1
@ elvis.dukaj也可以使用设备名称。他们基本上表达了两种不同的东西。一个说使用与UUID完全相同的卷(某些情况会随着另一次mkswap运行而改变),另一个说使用3号主分区磁盘/dev/sda。有些人更喜欢UUID,因为即使设备名称的分配发生了变化,UUID也会保持不变。这就是差异如此重要的原因。但是,如果您确定不会对驱动器进行分区,/dev/sda3则使用时也应同样安全。
0xC0000022L18年

106

要在安装后创建交换分区,请创建一个空分区。它应该没有孔。然后可以使用以下命令格式化该分区:

sudo mkswap /dev/sdX

更换/dev/sdX你的分区。挂载此分区作为交换

sudo swapon -U UUID

/dev/sdX从这里读取的UUID是您的UUID :

blkid /dev/sdX

/etc/fstab通过添加以下行来绑定新的交换:

UUID=xxx    none    swap    sw      0   0

如果要使用交换进行休眠,则需要/etc/initramfs-tools/conf.d/resume使用此内容更新UUID RESUME=UUID=xxx。别忘了$ sudo update-initramfs -u

完成任务:如果没有备用分区,也可以创建交换文件。该答案为您提供了有关如何创建交换文件并在启动时启用它的想法。


截至目前,我有一个带有两个分区的SSD,但是我想制作第三个分区。如果我有一个主要的ext4分区来保存操作系统和文件,我可以用它把2GB的分区剥离成一个新分区吗?该主分区具有足够的可用空间,因此这不是问题。
沙尘暴

2
查看以gparted调整分区大小。
NumesSanguis '16

54

如果您不希望或不确定如何创建交换分区,则可以创建一个交换文件,该文件的工作方式与分区相同。以下是步骤(使用终端):

  1. 创建一个空文件(1K * 4M = 4 GiB)。

    sudo mkdir -v /var/cache/swap
    cd /var/cache/swap
    sudo dd if=/dev/zero of=swapfile bs=1K count=4M
    sudo chmod 600 swapfile
    
  2. 将新创建的文件转换为交换空间文件。

    sudo mkswap swapfile
    
  3. 启用文件以进行分页和交换。

    sudo swapon swapfile
    

    通过以下方式验证:swapon -stop

    top -bn1 | grep -i swap
    

    应该显示如下行: KiB Swap: 4194300 total, 4194300 free

    要禁用,请使用sudo swapoff swapfile命令。

  4. 将其添加到fstab文件中以使其在下次系统引导时持久存在。

    echo "/var/cache/swap/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
    
  5. 在启动时通过以下方法重新测试交换文件:

    sudo swapoff swapfile
    sudo swapon -va
    

    注意:上面的命令重新检查fstab文件的语法,否则您的Linux无法正常启动。


13
感谢您提供使用交换文件而非交换分区的唯一答案。在这种情况下,我无法创建分区。命令效果很好。
Sarel Botha

2
对于需要更大交换空间的用户,对于X GiB交换空间,将count = 4M增加到XM。如果有人错过了。
saurabheights

我不确定第5步。为什么我要关闭掉交换进行测试?
拉菲·哈查杜安

@RaffiKhatchadourian最后重新测试有助于仔细检查fstab文件的语法(针对任何拼写错误),否则Linux可能无法正确启动,从而导致严重的启动问题,尤其是在远程服务器上。
kenorb

1
啊,我现在明白了。您需要在重新启动之前执行此操作。我在启动时就被甩了。
拉菲·哈查杜杜安

13

有一种使用gparted的图形方式来做到这一点。

运行Gparted:

sudo gparted

如果没有安装,可以使用

sudo apt-get install gparted

gparted运行后:

  1. 右键单击任何未分配的块,然后单击以分配分区 new
  2. 将分区格式化为 linux-swap
  3. 右键单击该分区,然后单击swapon

完成后,分区名称旁边应有一个钥匙图标


到目前为止,最简单的答案是
Shobi,2017年

1
要使其永久不变,您仍然必须按照@ user4124的回答编辑fstab文件
Madura Pradeep

1
问题已经表明他们这样做。
Chai T. Rex

1
这根本无法回答问题。
mook765 '18 -10-17

@ mook765,问题是“如何在系统安装后添加交换?”。这完全可以回答这个问题。
泰勒

3

linux.com刚刚创建的交换文件,因为这是更灵活,可以动态调整多少和交换多大储存有。这也使您可以将交换分区从系统磁盘上移开,从而使系统更快。另外,如果使用多个交换空间,请将其使用优先级调整为相同的值,因此使用循环写入它们,从而可以进一步提高速度。

ps我将使用UUID而不是设备名称,因为如果您偶然将USB存储设备留在USB插槽中并只需拔下并重新插入sata电缆,就很可能更改设备顺序-您无需担心连接的是什么驱动器哪里。


这是最有用的响应,因为它不需要重新分区驱动器。太糟糕了,当您在新计算机上安装Ubuntu时,默认情况下它不会创建交换!
厄尼2015年

2

您必须在/ etc / fstab中定义一个交换文件系统。它应该包含类似于

UUID=67682d1b-a1d8-4377-a3dd-67340c141619 none            swap    sw              0       0

当然,您需要将UUID的值替换为设备的标识符。


我怎么才能得到它?

3
您可以改用设备名称,例如/ dev / sda1(不带UUID)。
2011年

2

(用交换分区号替换sdax中的“ x”,例如:sda5)

用UUID号替换“ xxx”,例如:67682d1b-a1d8-4377-a3dd-67340c141619)


su(提供密码以获取root权限)

blkid / dev / sdax(获取UUID)mkswap / dev / sdax(格式交换分区)swapon -U xxx

nano / etc / fstab(编辑fstab)UUID = xxx无swap sw 0 0(输入并保存此文本以使交换永久生效)(然后关闭fsantab)


nano /etc/initramfs-tools/conf.d/resume(创建“恢复”文件并保存此文本以使用休眠/恢复)RESUME = UUID = xxx(按Ctrl + x关闭nano)->(y保存)

重新启动机器

登录,现在您可以测试休眠/恢复


2

这是有关如何为Ubuntu创建Ram Drive的综合教程。不幸的是..屏幕快照不会通过剪切和粘贴显示在其中。.稍后我将添加它们,但是不需要它们。

您需要做的第一件事是为ram驱动器创建空间。我有一个只有32GB硬盘的双启动系统。我的Ubuntu实际上安装在SD卡上(是的,是实际安装,而不是Live Casper)。我的交换也位于SD上,可能很快就会用完。我查找了如何更改交换的内容,找到了这篇文章,但不喜欢答案,因此在进行更改时写了一个教程。

如果您只是希望增加或减少交换分区,则只需通过您喜欢的分区管理器来增加或减少分区。Ubuntu已经知道去哪儿了,它与大小无关。如果要更改位置或进行新的交换,请继续阅读。您需要做的第一件事是收缩硬盘驱动器以提供交换空间。如果要收缩装有Windows系统的磁盘,则最好使用Windows收缩磁盘(它知道它自己的东西)。如果您使用的是纯Ubuntu,请尝试使用实时Ubuntu USB调整大小。

Windows调整大小说明:

  1. 备份系统,并整理驱动器碎片。
  2. 右键单击开始栏。
  3. 选择磁盘管理
  4. 右键单击正确的驱动器
  5. 选择收缩。
  6. 输入正确的金额。

如果您在Ubuntu中。确保使用Ubuntu工具。为了完成分配,我将使用Ubuntu的可引导Live USB,其中包括GParted。无论出于任何原因,Live USB都是使用Gparted的最佳方式,并且您应该在首次安装时就拥有USB或随身携带以方便使用。

不允许在2000年键入内容,因为即使“对”驱动器进行了碎片整理,也没有足够的空间进行操作(我不相信Windows会对它进行了碎片整理)。经过一些试验,我被允许1000。然后我又尝试了1000,它成功了。我应该感谢我的小学数学老师比MS Windows程序员更多的感谢。那给了我1.95GB的内存,这对于我的小学数学来说已经足够了。

格式化分区

现在,我准备让gparted将该空间格式化为适当的交换驱动器。如果您使用的是Windows,并且在Ubuntu和Windows之间来回切换,请确保在单击“电源”和“关闭”时按住SHIFT键。这是非常重要的,尤其是当您弄混另一个操作系统中的“ C”驱动器详细信息时。如果您是双重引导,则应该已经知道Windows在正常情况下会进行伪关闭。有些人禁用了“快速启动”。我的系统(Windows 10)上没有该选择,必须使用Shift键,这要感谢我的朋友Google。如果您使用活动USB启动,并且无法安装“ C”驱动器(单击该驱动器),则说明未完全完全关闭。重新加载窗口,然后使用Shift键再次关闭。

现在您处于Ubuntu Live模式,请阅读以下内容:

如果您是纯Ubuntu,并且在Windows中没有收缩。您将在gParted中使用“调整大小”选项。如果已经收缩驱动器,请不要执行调整大小步骤。您可以在Dash栏中键入GParted并快速获取应用程序。右键单击要调整大小的驱动器。

现在,我们将未分配的空间格式化为分区驱动器:

之前:

我不知道该怎么办,所以我看了我以前在SD上的Ram Drive。它的格式为Linux交换。因此,我格式化了新的分配格式,最近也将其缩小为Linux Swap。
我对主分区和警告通知说“确定”,它奏效了!

格式化分区

格式和新分区之后

这是一个巧合,在旧的交换分区sd被称为mmblk1p5和新的也p5mmblk0在前面。您的可能是p6或p7。不用担心

mmblk0是物理磁盘和p是该物理磁盘上的分区。并且mmblk01是另一个物理磁盘,等等。(这就是我的SD)在进行更多工作之前,我再次打开Windows以确保Windows仍然可以启动。如果您懒惰或在纯ubuntu机器上,则无需执行此步骤。如果它破坏了Windows,我可能会擦拭Windows在该磁盘上重新安装Ubuntu(也要进行交换)。如果我破坏了系统,则无需执行任何其他步骤,因为我可以在新安装中分配交换空间。一切顺利,Windows启动。现在,您可以在Windows磁盘管理器中看到新分区:(右键单击开始栏上的进行磁盘管理)

现在将交换插入到启动例程

先前对该问题的回答实际上具有交换/关闭命令,这些命令不是必需的,并且可能很复杂。所有需要做的就是找到正确的文件,然后将交换指向新分区。同样,如果仅调整分区的大小,则无需执行任何操作。已经设置找到分区。大小自动完成。

如果您更改了分区或正在进行首次交换,请阅读以下内容:

我告诉你,这是我第一次这样做。我不是UNIX极客,而是更喜欢GUI工具。在编写本教程时,我正在学习并且用手指交叉。到目前为止一切进展顺利。在系统的根目录下有一个名为etc的目录。在该目录内有一个名为fstab(无扩展名)的文件。您将需要使用超级用户“ su”权限编辑该文件。在此之前,我们需要使用Live USB创建的新交换分区的UUID。键入sudo su现在您处于超级用户模式。您可以做任何事情(包括擦除自己的存在)。

输入blkid并查找新交换分区的uuid。我在下面看到了我的并突出显示了它:

不要注意PartUID。

现在,其他人会说:

sudo gedit /etc/fstab

但是,我尝试过,但找不到正确的文件(请发表评论)。

因此,我只是键入gedit并以一种奇妙的GUI方式打开它(成功!)。从那时起,我已经处于超级用户模式(sudo su),我具有root权限,可以在Gedit中执行任何操作,包括在更改文件后保存文件。精彩!在更改或破坏任何内容之前,请将fstab保存为名为...的备份fstab.bak

使用简洁的GUI方式进行备份,然后选择熟悉的“另存为”并将“ bak”添加到文件中fstab.bak。检查它是否以.bak扩展名存在。极客会告诉您使用terminal cp命令,但是我们新手无法在terminal中找到该文件,因此无法做到这一点。就像任何文字处理程序一样,在“另存为”命令之后,当前文件现在是fstab.bak。打开您以前使用过的真实文件,然后关闭备份文件。仔细检查,看看您正在编辑fstab没有扩展名的实数。如果编辑备份文件,则在重新启动时将不会发生任何事情,而且备份副本将不是原始副本的真实备份。

我的原始fstab文件如下所示:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/mmcblk1p6 during installation
UUID=a611601a-6ea8-4e34-9859-42a2470cac29 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/mmcblk0p1 during installation
UUID=00F2-C0CE  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/mmcblk1p5 during installation
UUID=8fb20159-62e4-41a3-8550-791c7a66c328 none            swap    sw              0       0

最后一行(我为您准备了红色)具有原始交换信息,该交换信息可能在启动时使用。从上一个blkid命令中,我可以看到我的新驱动器UUID。通过突出显示终端中的文本,然后右键单击并选择复制来复制该短语。将该短语粘贴到另一个没有su权限的单独编辑器中作为便笺簿(您可以使用Libre Office,而极客可以使用nano)。此步骤可帮助您轻松获得正确的文本而无需加上引号,因此可以轻松地将其粘贴到fstab文件中。您希望尽可能少地更改此文件。

New UUID
UUID="709ea197-e6fb-428b-9c1f-4b258452b10c"

因此,我的新UUID在上方以红色列出。我需要做的就是更改交换的uuid。如果没有交换驱动器,请在上面的fstab文件中复制我的行,然后从前面的blkid命令添加适当的uuid。(请选择正确的uuid!)
如果这是您的第一条Swap行,请确保包括完整行以及其他内容

none            swap    sw              0       0

不必担心确切的间距。

我的新文件如下所示:请注意,我也在更改上方添加了注释。该#字符表示这是注释。

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/mmcblk1p6 during installation
UUID=a611601a-6ea8-4e34-9859-42a2470cac29 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/mmcblk0p1 during installation
UUID=00F2-C0CE  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/mmcblk1p5 during installation  NOW changed to mmcblk0p5
UUID= 709ea197-e6fb-428b-9c1f-4b258452b10c  none            swap    sw              0       0

不要粘贴引号。=标志后没有空格。

保存文件。

再次打开它,以确保您的更改已保存。用危险的su权限关闭该gedit和终端,这是极客会责骂您执行的操作(因为操作起来很容易...而且也很容易破坏东西)。

重新启动,然后用手指交叉!

我重新启动,然后通过查看系统性能应用程序来检查交换是否正常。我还有交换驱动器!但这是新旧的吗?我无法验证我的新驱动器是否已实际加载,因为新驱动器的大小与旧驱动器的大小相同。因此,我输入:(swapon不要输入任何超过交换的内容,它只会为您列出交换内容:安全)。现在,我看到新的驱动器mmblk0p5与我所做的UUID工作相匹配fstab。我超薄的32GB主驱动器生效了:


这篇教程是从一个以前从未做过的新手开始的。我制作本教程的一半原因是,帮助我们(并感谢您)的极客可以看到如何帮助新手用户。我怀疑以前的答案会引起误解,并决定在我工作时进行教程...通过从其他有用的答案中猜测,我得出的结论是,我所要做的就是编辑fstab文件并重新启动。一切正常,我仍然有Windows 10,尚未擦除我的系统。如果有人知道如何将Windows共享pagefile.sys为Linux交换文件,我会很感兴趣,因为Windows占用了2 GB内存,而32 GB的计算机上hd空间非常昂贵。

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.