系统未安装交换分区

系统未安装交换分区

即使交换分区存在,并设置为加载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 在升级过程中发生了变化。以下是我修复它的方法。

  1. 运行sudo blkid。这将显示磁盘上所有分区的当前 UUID。我怀疑您会看到交换分区的 UUID 现在与 /etc/fstab 中的值不同。

  2. 如果不同,请在 sudo 下运行一些文本编辑器来编辑 /etc/fstab。将 UUID 的值替换为当前实际值,如blkid上面的命令所示。不要包含引号。

  3. 保存文件并重新启动系统。运行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

所以这对比我聪明的人来说是一个线索。希望它能有所帮助。

相关内容