系统未挂载交换分区

cae*_*say 13 fstab mount swap

即使交换分区存在,并设置为 load in fstab,它仍然没有被挂载。

fdisk 为交换分区返回这个:

file system: /dev/sda5
      start: 1
        end: 244
     blocks: 1951744
         id: 82
     system: Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)

在我fstab里面说

file system: /dev/sda5
mount point: none
       type: swap
    options: sw
       dump: 0
       pass: 0
Run Code Online (Sandbox Code Playgroud)

我可以很好地加载它,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
Run Code Online (Sandbox Code Playgroud)

我正在查看系统日志,我看到了这一点,不确定这是什么意思,或者是否正常,但是:

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
Run Code Online (Sandbox Code Playgroud)

输出 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
Run Code Online (Sandbox Code Playgroud)

输出 mountall -v

http://pastie.org/private/ras9mc7mf66yudnjoem4w

swap finished
...
local 4/4 remote 0/0 virtual 12/12 swap 0/0
Run Code Online (Sandbox Code Playgroud)

不确定,仍然没有加载交换...仍然可以在命令行中添加,并且我的 Windows 分区正在启动时安装,这也在 fstab 中。

小智 8

谢谢你的问题。当我查看它时,我发现昨天升级到 Natty 后,我的系统与您的系统存在相同的问题。我认为问题在于升级过程中交换分区的 UUID 发生了变化。这是我修复它的方法。

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

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

  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
    
    Run Code Online (Sandbox Code Playgroud)


kru*_*ubo 8

这听起来很愚蠢,但请尝试一下:重新排序/etc/fstab以将交换分区放在最后。

mountall -v以非 root 用户身份运行时似乎无害地失败,其输出可用于诊断为什么 mountall 在启动时无法正常工作。您的最后一行输出mountall -v包含关键线索:

local 4/4 remote 0/0 virtual 12/12 swap 0/0
Run Code Online (Sandbox Code Playgroud)

换句话说,挂载了 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

  • 我在 Launchpad 上提交了一个错误:https://bugs.launchpad.net/ubuntu/+source/mountall/+bug/839118 (2认同)