如何安全地删除第二个交换分区?

首先,我尝试安装Ubuntu,但是出现了一些问题导致安装中断。 然后我再次尝试安装,这次成功了。
还有一个约600Mb的分区,我使用“磁盘工具”将其删除。然后我需要使用Live CD恢复grub引导程序。
但是为什么/dev/sda4现在扩展了,并且包含了2个Linux交换空间?我该如何删除另一个Linux交换空间?如何将其变成一个Linux分区和一个交换空间?

enter image description here

enter image description here


当我尝试移除/dev/sda5时,请卸载任何逻辑分区编号大于5的分区。
3个回答

我不确定为什么你的系统最终有了2个交换分区,但这很容易修复。
  • 我建议使用gparted而不是fdiskDisk Utility。您可以删除“额外”的交换分区并调整其他分区的大小以获取释放的磁盘空间。它还会告诉您是否实际使用了任何交换分区。非常有帮助。gparted默认未安装,但可以在软件源中安装。它也预装在从Ubuntu安装CD / USB启动的Live会话中。

  • 关于扩展分区:使用传统的分区表,您只能拥有4个主要(“非扩展”)分区。由于您已经有3个NTFS / Windows分区,并且您需要2个用于Ubuntu(操作系统和交换分区),因此只能使用扩展分区来完成此操作。因此,您的4个主要分区是3个NTFS分区+扩展分区(扩展分区本身占用1个“插槽”),而其他分区位于扩展分区内。

  • 使用gparted检查交换分区的状态。如果它们被锁定,则表示系统当前正在使用它们。注意它们的状态,并决定要保留哪个分区和要删除哪个分区。此外,右键单击它们,转到信息,并记下它们的UUID(sudo blkid也可以使用)。

可能的情况有:
1 - 你想要删除的那个没有被系统使用:很好,直接删除该分区。
2 - 两个交换分区都被系统使用:右键点击你想要删除的那个,选择“Swapoff”。为了使其永久生效,从“/etc/fstab”和“/etc/initramfs-tools/conf.d/resume”中删除相关条目(删除与其UUID匹配的行)。现在你可以安全地删除该分区。
3 - 只有你想要删除的那个被使用,而你想要保留的那个没有被使用:右键点击你想要删除的那个,选择“Swapoff”。右键点击另一个,选择“Swapon”。编辑“/etc/fstab”和“/etc/initramfs-tools/conf.d/resume”,将UUID从一个替换为另一个。删除不需要的分区。
如果对“/etc/initramfs-tools/conf.d/resume”进行了任何更改,请使用以下命令应用更改:
sudo update-initramfs -u

如果你对答案有任何问题,请随时提问!

曾经有类似经历,我敢猜测你之所以有两个分区,是因为在安装Ubuntu时它会自动设置驱动器(没有选择更高级的设置)- 它会创建一个主分区和一个交换分区。如果第一次安装失败,并且你选择了第一次安装时的主分区,它将再次将其分割成一个主分区和一个交换分区。 - thomasmichaelwallace
这非常有帮助,但是系统没有使用的那个我无法删除它,请参考上面的图片。 - Binarylife
@thomas:是的,我也怀疑这就是他有两个交换分区的原因。可惜Ubuntu安装程序不够智能,无法检测到已经存在一个交换分区,并设置它,而是创建一个全新的分区。 - MestreLion
@binarylife:这可能与分区表的顺序不正确有关。关闭gparted,执行sudo fdisk /dev/sda并使用x(额外功能),然后选择f(修复分区顺序),最后选择w(将表写入磁盘并退出)。然后在gparted中重试。 - MestreLion
2最好在Live CD会话中进行重新排序,这样您的所有硬盘分区都不会被挂载,更加安全。 - MestreLion
@MestreLion:非常感谢!我编辑了/etc/fstab/etc/initramfs-tools/conf.d/resume,现在一切都正常工作。 - Binarylife

使用以下命令标识您的分区:

sudo blkid

查看 /etc/fstab 文件,以确定使用了哪个交换分区。
grep swap /etc/fstab

然后使用gparted图形界面或者使用fdisk命令行删除旧的交换分区。
如果您希望调整分区大小,我建议您使用gparted从一个live CD进行操作。

感谢每一个浏览并回答问题的人,你们的帮助真的很大。 - coder

从屏幕截图中可以看到,确实有两个分区被指定为交换分区。是否都在使用可以通过运行free命令来确定。
例如,free命令的输出会显示以下行:
Swap:      4200000          0    4200000

这意味着有一个或多个交换分区,总共约为4.2GB的交换空间。
您可以使用“free”命令来确定这两个分区是否都被用作交换空间,还是只有其中一个。
然后,您可以选择要停用哪个分区,通过运行以下命令(对于第二个交换分区):
sudo swapoff /dev/sda7

一旦停用,您可以使用“磁盘工具”来擦除分区。
当您的计算机启动时,它会运行命令“sudo swapon -a”,该命令会激活所有可用的交换分区。因此,只需删除其中一个交换分区即可完成工作。无需进一步操作/配置。

仅仅禁用交换空间还不足以安全删除分区:还必须编辑/etc/fstab以删除其条目(否则在启动时swapon -a会报错),以及编辑/etc/initramfs-tools/conf.d/resume,用于恢复/休眠功能(使用交换空间)。 - MestreLion
我运行了代码 sudo swapoff /dev/sda7,然后使用 gparted 工具将 /dev/sda5 设置为 swapon,所以这个操作很顺利。 - Binarylife
1它运行良好... 直到您重新启动。您需要编辑fstab和恢复,否则在启动时和尝试使用休眠时会看到错误。 - MestreLion