伙计们,我需要在我的 ubuntu 系统上启用交换,并且我想避免在 SSD 上进行交换或格式化不包含交换分区的硬盘。因此,我尝试创建一个文件交换并使用它,但按照 ubuntu 指南: https://help.ubuntu.com/community/SwapFaq 我无法找出问题所在。首先,我无法使用 fallocate 分配文件,因为它说不允许操作,然后我用 dd 创建了一个全为零的文件,但在设置正确的权限并调用 mkswap 后,命令 swapon 失败,提示:kipping - 它似乎有漏洞。我想使用文件交换来避免在已经有完整分区的磁盘上创建分区,并且我希望它在硬盘上而不是 SSD 上。你能帮帮我吗? 这些是我所做的步骤
问题在于 swapon 被中断,因为文件似乎有漏洞。该文件是使用 dd 创建的。
继续说问题是什么:我的系统根本没有交换。我想在辅助硬盘上添加一个新的,而不是主 SSD,但我想避免格式化它并创建分区。这就是我创建交换文件的原因。但是当我尝试使用命令“swapon”激活它时,我收到错误:它似乎有漏洞。
答案1
要在 20.04 中使用交换文件启用休眠功能:
我昨天用这种方法增加了我的交换文件大小并启用休眠(可选)。最后一段是我如何寻找漏洞的。
增加swapfile
尺寸以匹配高达 8GB 的 RAM 大小。
检查正在使用的交换:
sudo swapon -s
如果找到交换分区:
sudo swapoff -a sudo nano -Bw /etc/fstab
在交换分区
#
之前添加:UUID
# UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none swap sw 0 0
swapfile
如果不存在,请添加一行:swapfile none swap sw 0 0
创建
swapfile
:sudo fallocate -l XG /swapfile*
X
其中的大小(以 GB 为单位swapfile
):sudo mkswap /swapfile sudo chmod 0600 /swapfile sudo swapon /swapfile
重启:
sudo reboot
添加resume
位置和偏移量至grub.cfg
:
编辑
/etc/default/grub
:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX resume_offset=XXXXX"
从 root 端使用
UUID
。使用偏移量:
sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'
更新 GRUB:
sudo update-grub
测试休眠:
sudo systemctl hibernate
可以使用 GNOME 扩展添加休眠按钮。
swapfile
请注意,使用 创建时,可能会出现漏洞fallocate
。/var/log/syslog
可以搜索短语swapon: swapfile has holes
以确保不会丢失数据。