Lin*_*eak 70 linux filesystems partition debian swap
我在我的 SSD 驱动器上安装了带有默认分区的 Debian Jessie。我当前的磁盘分区如下所示:
由于我有 16GB 的 RAM,我假设我不需要swap。但是由于我有其他磁盘驱动器,因此我可能会在其他驱动器之一上创建交换文件。
你能告诉我我应该采取什么步骤来正确和永久地删除交换分区以使其不占用磁盘空间吗?我希望删除交换分区,因为我目前只有 128GB SSD。
这是我每次尝试并重新启动的内容;这些步骤中的每一个都不是永久性的,或者没有做任何事情:
使用该swapoff
实用程序:
swapoff --all
Run Code Online (Sandbox Code Playgroud)使用GParted实用程序:
右键单击交换分区并单击交换。
/etc/fstab
Run Code Online (Sandbox Code Playgroud)/etc/initramfs-tools/conf.d/resume
Run Code Online (Sandbox Code Playgroud)最后运行这些命令(按此顺序和相反顺序):
update-grub
update-initramfs -u
Run Code Online (Sandbox Code Playgroud)Lin*_*eak 64
如果您已打开GParted,请将其关闭。它的掉期功能似乎不是永久性的。
打开终端,变成root
( su
); 如果您已sudo
启用,您也可以这样做sudo -i
;查看man sudo
所有选项):
sudo -i
Run Code Online (Sandbox Code Playgroud)
swapoff --all
Run Code Online (Sandbox Code Playgroud)
确保 100% 确定特定交换分区已关闭:
cat /proc/swaps
Run Code Online (Sandbox Code Playgroud)
打开您熟悉此文件的文本编辑器,例如,nano
如果不确定:
nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)
# UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
打开您熟悉此文件的文本编辑器,例如,nano
如果不确定:
nano /etc/initramfs-tools/conf.d/resume
Run Code Online (Sandbox Code Playgroud)
# RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
Run Code Online (Sandbox Code Playgroud)
不要关闭终端,因为你以后会需要它。
从菜单中打开GParted,或者从我们打开的终端中更方便地打开:
gparted
Run Code Online (Sandbox Code Playgroud)
如果你没有安装它,你可以这样做;然后再次运行前面的命令:
apt-get install gparted
Run Code Online (Sandbox Code Playgroud)
从右上角的菜单中选择您的驱动器。
删除掉与右击分区- >删除。您必须立即应用更改。
右键单击 -> 调整大小/移动来调整主/其他分区的大小。您必须立即应用更改。
回到终端,让我们重新创建启动映像:
update-initramfs -u -k all
Run Code Online (Sandbox Code Playgroud)
更新GRUB:
update-grub
Run Code Online (Sandbox Code Playgroud)
如果您想测试机器是否启动,您现在可以重新启动。
加密注意:如果你的swap分区是加密的,那么你还需要注释掉里面的相关行/etc/crypttab
,否则CryptSetup会让你在启动时等待90秒。感谢弗兰克的补充。
命令行:
如果我的解决方案有效,我会检查VM,然后我会分享它。同时,请参阅此答案。
max*_*zig 56
以 root 身份执行:
# swapoff -a
Run Code Online (Sandbox Code Playgroud)
并且要使更改永久化,请编辑/etc/fstab
并删除或注释掉交换条目。
And*_*rie 21
注释/删除 中的相关条目/etc/fstab
以防止它在下次启动时重新启用,然后重新启动或运行swapoff -a
以禁用当前运行系统的交换分区的使用。
现在删除交换分区,将系统分区扩展到未使用的空间并扩展实际的文件系统。我不知道您的图形分区管理器是否可以完成所有这些,但如果不能,这里是使用fdisk
and执行此操作的一种与发行版无关的方式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.
Run Code Online (Sandbox Code Playgroud)
最后,我们扩展当前文件系统以使用新的可用空间(直到现在实际的文件系统不知道我们为其底层分区添加了更多空间)。默认情况下,resize2fs
除非给出固定大小,否则使用整个分区,因此我们不必指定除分区块设备以外的任何内容。可以在挂载分区的情况下在线完成文件系统的增长(而不是缩小):
# resize2fs /dev/sda2
Run Code Online (Sandbox Code Playgroud)
现在您已成功禁用交换并回收未使用的空间,甚至无需重新启动。
请注意,Debian 的过程略有不同,需要编辑更多文件。查看此答案以获取更多信息。