如何安全地永久关闭交换并回收空间? (在 Debian Jessie 上)

如何安全地永久关闭交换并回收空间? (在 Debian Jessie 上)

我在 SSD 驱动器上使用默认分区安装了 Debian Jessie。我当前的磁盘分区如下所示:

我当前的磁盘分区如下所示

由于我有 16GB RAM,我认为我不需要交换。但由于我有其他磁盘驱动器,我可能创建一个交换文件例如,在其他驱动器之一上。

你能告诉我应该采取什么步骤来删除交换正确且永久地分区以免占用磁盘空间?我想删除交换分区,因为我目前只有 128GB SSD。

这是我每次尝试并重新启动的内容;这些步骤中的每一步都是不是永久的, 或者没有做任何事:

  1. 使用swapoff公用事业:

    swapoff --all
    
  2. 使用格帕特公用事业:

    右键单击交换分区并单击“交换”。

  3. 注释掉交换分区的通用唯一标识符在以下文件中:

    /etc/fstab
    
  4. 注释掉交换分区的通用唯一标识符在以下文件中:

    /etc/initramfs-tools/conf.d/resume
    
  5. 最后运行这些命令(按此顺序和相反顺序):

    update-grub
    
    update-initramfs -u
    

答案1

  1. 如果你有格帕特打开,关闭。它的交换功能似乎并不是永久性的。

  2. 打开终端并成为root(su);如果你有sudo启用后,您还可以执行以下操作sudo -i:看man sudo对于所有选项):

     sudo -i
    
  3. 关闭特定的交换分区和/或全部交换s:

     swapoff --all
    
  4. 100% 确定特定的交换分区分区关闭:

     cat /proc/swaps
    
  5. 打开您熟悉此文件的文本编辑器,例如nano如果不确定:

     nano /etc/fstab
    
  6. 注释掉/删除交换分区的通用唯一标识符,例如:

     # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. 打开您熟悉此文件的文本编辑器,例如nano如果不确定:

     nano /etc/initramfs-tools/conf.d/resume
    
  8. 注释掉/删除之前标识的交换分区的通用唯一标识符,例如:

     # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. 如果您的交换已加密,请对 执行相同的操作/etc/crypttab

  10. 不要关闭终端,因为稍后您将需要它。

笔记:接下来的步骤会有所不同,具体取决于您是否依赖命令行界面或者图形用户界面


图形用户界面:

  1. 打开格帕特,可以从菜单中,或者更方便地从我们打开的终端中:

     gparted
    
  2. 如果您还没有安装,您可以安装;之后再次运行之前的命令:

     apt-get install gparted
    
  3. 从右上角的菜单中选择您的驱动器。

  4. 作为格帕特重新激活交换启动时分区,您必须右键单击特定分区交换分区并单击 Swapoff -> 这将立即应用。

  5. 删除交换右键单击分区 -> 删除。您必须立即应用更改。

  6. 右键单击 -> 调整大小/移动来调整主/其他分区的大小。您必须立即应用更改。

  7. 回到终端,让我们重新创建启动图像:

     update-initramfs -u -k all
    
  8. 更新GRUB:

     update-grub
    
  9. 如果您想测试机器是否启动,您现在可以重新启动。

加密注意:如果你的交换分区是加密的,那么你还需要注释掉 中的相关行/etc/crypttab,否则 CryptSetup 会让你在启动时等待 90 秒。谢谢坦率对于这个补充。


命令行界面:

我会办理入住虚拟机如果我的解决方案有效,那么我将分享它。在此期间,请参阅这个答案

答案2

以 root 身份执行:

# swapoff -a

要使该更改永久生效,请编辑/etc/fstab并删除或注释掉交换条目。

答案3

注释/删除中的相关条目/etc/fstab以防止其在下次启动时重新启用,然后重新启动或运行swapoff -a以禁用当前运行的系统使用交换分区。

现在删除交换分区,将系统分区扩展到未使用的空间并扩展实际的文件系统。我不知道你的图形分区管理器是否可以做到这一切,但如果不能,这里有一个与发行版无关的方法,使用fdisk和 来做到这一点resize2fs

# fdisk /dev/sdX

# Display current partition table, copy/paste this output somewhere to be able to go back in case you screw up

Command (m for help): p
Device       Boot  Start    End Sectors Size Id Type
/dev/sda1        2048  22527   20480  10M ef EFI (FAT-12/16/32)
/dev/sda2       22528 186367  163840  80M 83 Linux
/dev/sda3      186368 204799   18432   9M 82 Linux swap / Solaris

# Delete the swap partition

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.

# Delete the system partition

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.

# Create a new system partition starting the same as the old one but ending a bit farther, at the end of the (now deleted) swap partition

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
# Enter the same start sector as the old part.
First sector (22528-204799, default 22528): 22528
# Enter the end sector of the old swap partition
Last sector, +sectors or +size{K,M,G,T,P} (22528-204799, default 204799): 204799

Created a new partition 2 of type 'Linux' and of size 89 MiB.

# Save the changes
Command (m for help): w
The partition table has been altered.

最后,我们扩展当前的文件系统以利用新的可用空间(直到现在,实际的文件系统并不知道我们向其底层分区添加了更多空间)。默认情况下,resize2fs除非给出固定大小,否则使用整个分区,因此我们不必指定除分区块设备之外的任何内容。可以在挂载分区的情况下在线完成文件系统的增长(而不是收缩):

# resize2fs /dev/sda2

现在您已成功禁用交换并回收未使用的空间,甚至无需重新启动。

请注意,Debian 的过程有点不同,需要编辑更多文件。看看这个回答了解更多信息。

答案4

您可以右键单击 Gparted 中的交换分区并选择交换选项。这是完成您所要求的相同任务的快速方法。

相关内容