即使交换分区存在,并设置为加载fstab
,但它仍然不会被挂载。
fdisk
返回交换分区的内容:
file system: /dev/sda5
start: 1
end: 244
blocks: 1951744
id: 82
system: Linux swap / Solaris
在我的fstab
里面
file system: /dev/sda5
mount point: none
type: swap
options: sw
dump: 0
pass: 0
我可以正常加载它swapon /dev/sda5
但它无法在启动时加载。
我可以提供更多信息来帮助解决问题吗?我不知道还有哪些信息有用
根据要求,完整fstab
文件:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
/dev/sda6 / ext4 errors=remount-ro 0 1
/dev/sda5 none swap sw 0 0
/dev/sr1 none udf rw,noauto 0 0
我正在查看系统日志,看到了这个,不确定它意味着什么或者是否正常,但是:
Apr 29 17:57:24 caelan-ubuntu os-prober: debug: running /usr/lib/os-probes/50mounted-tests on /dev/sda5
Apr 29 17:57:24 caelan-ubuntu 50mounted-tests: debug: /dev/sda5 is a swap partition; skipping
输出mountall
mountall: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
mountall: Connection is closed
输出mountall -v
http://pastie.org/private/ras9mc7mf66yudnjoem4w
swap finished
...
local 4/4 remote 0/0 virtual 12/12 swap 0/0
不确定,仍然没有加载交换...仍然可以在命令行中添加,并且我的 Windows 分区正在启动时安装,这也是在 fstab 中。
答案1
这听起来可能很愚蠢,但是尝试一下:重新排序/etc/fstab
以将交换分区放在最后。
当以非 root 用户身份运行时,它似乎会mountall -v
无害地失败,并且其输出可用于诊断为什么 mountall 在启动时无法正常工作。 你的最后一行输出mountall -v
包含关键线索:
local 4/4 remote 0/0 virtual 12/12 swap 0/0
换句话说,安装了 0 个交换驱动器,在 /etc/fstab 中找到 0 个交换驱动器。
现在,为什么 mountall 没有在 /etc/fstab 中找到您的交换驱动器?好问题。这可能是 的一个错误mountall
。为了诊断它,我复制了您的 /etc/fstab 并mountall -v
以非 root 用户身份运行。通过随机编辑 /etc/fstab 并继续测试mountall -v
,我发现了如何更改 mountall 报告的“swap 0/0”。只需重新排序 /etc/fstab 的行就足以使其更改为“swap 0/1”,换句话说,在 /etc/fstab 中找到 1 个交换驱动器。这样,它可能足以正常启动。如果没有,请发布 的新结果mountall -v
。
答案2
感谢您的提问。当我查看它时,我发现我的系统在昨天升级到 Natty 后出现了与您的系统相同的问题。我认为问题是交换分区的 UUID 在升级过程中发生了变化。以下是我修复它的方法。
运行
sudo blkid
。这将显示磁盘上所有分区的当前 UUID。我怀疑您会看到交换分区的 UUID 现在与 /etc/fstab 中的值不同。如果不同,请在 sudo 下运行一些文本编辑器来编辑 /etc/fstab。将 UUID 的值替换为当前实际值,如
blkid
上面的命令所示。不要包含引号。保存文件并重新启动系统。运行
free -m
以确保更改解决了问题:$ free -m total used free shared buffers cached Mem: 1001 604 396 0 123 199 -/+ buffers/cache: 281 719 Swap: 1953 0 1953
答案3
我在 Ubuntu 12.04 (Precise) 上也遇到过类似的问题,但我的/etc/fstab
已经正确了。结果发现我的交换分区格式有问题,导致无法blkid
检测mountall
到交换分区。
细节:
- 我的交换分区是
/dev/mapper/foo-swap_1
——加密(LUKS)分区上的 LVM 逻辑卷。 - 交换分区在启动时永远不会处于活动状态。
- 手动运行
swapon -a
有效。 lsblk
显示交换分区blkid
没有显示交换分区blkid -p /dev/mapper/foo-swap_1
打印了以下消息:/dev/mapper/foo-swap_1: ambivalent result (probably more filesystems on the device, use wipefs(8) to see more details)
wipefs -n /dev/mapper/foo-swap_1
显示两个不同的文件系统签名!
删除两个签名 ( wipefs -a
) 并重新格式化交换 ( mkswap
) 为我解决了这个问题。
这是一个自动修复的脚本:
#!/bin/sh
# helper functions
log() { printf %s\\n "$*"; }
error() { log "ERROR: $*" >&2; }
fatal() { error "$*"; exit 1; }
try() { "$@" || fatal "'$*' failed"; }
# path to the swap partition
SWAP=/dev/mapper/foo-swap_1
# remember the UUID of the swap partition
UUID=$(try sed -e 's/RESUME=UUID=//' /etc/initramfs-tools/conf.d/resume) || exit 1
[ -n "${UUID}" ] || fatal "couldn't read UUID"
# delete filesystem/raid signatures from the swap partition
try wipefs -a "${SWAP}"
# format the swap partition
try mkswap -f -U "${UUID}" "${SWAP}"
答案4
升级到 12.04 后,出现了一些小异常,但没什么大不了的。直到我尝试从我的 Olympus e330 中 Gimp 一张 14 兆像素的 jpg 时,我才意识到我的交换分区无法正常工作。哎呀。
论坛来帮忙。线索:
blkid
节目
/dev/sdb6: UUID="3e0550cf-4a55-4aa8-80fa-24103c1b25a7" TYPE="swap"
但根据系统监视器,它并未处于活动状态,好吧。
UUID 绝对正确,但是不行...不确定我如何得到这个命令:
# blkid -p /dev/mapper/foo-swap_1
error: /dev/mapper/foo-swap_1: No such file or directory
文件管理器向我展示了一个 0 字节图标,文件名控制,——那么应该在那里写些什么呢?写什么呢?
$ sudo swapon --all --verbose yielded
swapon: cannot find the device for UUID=3e0550cf-4a55-4aa80fa-24103c1b25a7
我编辑了 /etc/fstab 文件并添加
/dev/sdb6 none swap sw 0 0
重新启动并且系统监视器显示它处于活动状态,是的。
好的,我一定是来过这里并找到了命令
blkid -p /dev/mapper/foo-swap_1
所以这对比我聪明的人来说是一个线索。希望它能有所帮助。