系统未安装交换分区


12

即使交换分区存在并且设置为load in 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

不确定,仍然没有加载swap ...仍然可以在命令行中添加,并且我的Windows分区正在引导安装,并且也位于fstab中。


您介意发布/ etc / fstab的内容吗?
boehj 2011年

@boehj:完成了
caesay 2011年

干杯。这里没什么让我高兴的。好像很奇怪 我唯一想到的可能是,在使用扩展分区时,应该首先出现/,即/ dev / sda5并交换为/ dev / sda6。但是,这只是凭空掌握的。我很想知道如何解决这个问题。也许您可以使用UUID代替/ dev / sdX?要找到这些值呢sudo blkid
boehj 2011年

@boehj:没有骰子...仍然没有被加载。
caesay 2011年

@Tommy-对不起,我帮不了你。我敢肯定,这里有人可以。祝你好运。:)
boehj 2011年

Answers:


8

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

mountall -v当以NON-root用户身份运行时,它似乎无害地失败了,它的输出可以用来诊断为什么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报告的“交换0/0”。只需重新排序/ etc / fstab的行就足以使其更改为“交换0/1”,换句话说,就是在/ etc / fstab中找到了1个交换驱动器。这样,足以正常启动。如果不是,请发布的新结果mountall -v


2
我在Launchpad上提交了一个错误:bugs.launchpad.net/ubuntu/+source/mountall/+bug/839118
bgvaughan 2011年

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
    

我没有使用UUID,而是使用了/ dev / sda5,正如我在问题中提到的那样。那不会影响我吗?
caesay 2011年

好。因此,您的/ etc / fstab也不使用UUID?
蒂姆,

不。它不起作用。有无uuid
caesay 2011年

1
像魅力一样工作!
ShuaibKunji '16

1

我的/etc/fstab(Debian)具有以下内容:

UUID=7b533ab9-cb87-4a30-a4d8-689788f21985 none  swap sw 0 0

您应该根据您对配置的了解告诉我们:

/dev/sda5 none swap sw 0 0

我想知道为什么作为Linux的初学者会对此感到奇怪。这些天RAM很便宜。我有4 GB,可以进行Java开发(例如,IntelliJ特别使用大量的RAM),但是我从来没有用完它。

我不得不说我很惊讶您遇到这种问题。您是否没有使用默认选项运行Ubuntu Installer?

还是由于双重引导(Win / Lin)而遇到所有这些问题?


它确实有那条线,我没有太多的内存,并且我是双重引导的,但这不应该是一个问题,因为我的Windows不会碰到我的交换分区,并且我可以用swapon很好地加载它。
caesay 2011年

1

我没有任何快速答案,但我四处摸索,发现可以检查一下以缩小问题范围的一些方法:

  • / etc / fstab(5)应该列出交换分区(您看起来还不错)
  • /etc/init/mountall.conf应该包含以下行 emits all-swaps
  • 如果您mountall以非root用户身份运行,则其回复应包括swapon: /dev/sda5: open failed: Permission denied
  • dmesg | less 应该包括类似于我的东西:

[2.272092] sda:sda1 sda2 sda3

[2.272924] sd 1:0:0:0:[sda]附加的SCSI磁盘

...(有关安装sda1,sda2的更多内容)...

[20.298550]在/ dev / sda3上添加了10239996k交换。优先级:-1范围:1跨度:10239996k

  • free 应该报告类似 Swap: 10239996 0 10239996

我在dmesg中找不到有关驱动器的任何输出。mountall返回错误,而mountall.conf确实有该行。
caesay 2011年

如果mountall从未尝试运行swapon,那似乎是您的问题。详细输出是mountall -v什么?
2011年

将其添加到问题@krubo
caesay 2011年

看到哪里mountall -v说交换0/0?那是一个完美的线索。看到我的新答案。
krubo 2011年

1

我在Ubuntu 12.04(Precise)上也遇到了类似的问题,但是我/etc/fstab已经是对的。事实证明,我的交换分区的格式有问题,无法阻止blkidmountall检测到交换分区。

细节:

  • 我的交换分区是/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}"

1

升级到12.04后,发生了一些小异常,没有大问题。在我尝试从Olympus e330中将14兆像素的jpg图像转换为Gimp之前,我一直没有意识到我的交换分区无法正常工作。kes

论坛进行救援。线索:

blkid 表演

/dev/sdb6: UUID="3e0550cf-4a55-4aa8-80fa-24103c1b25a7" TYPE="swap" 

但根据系统监控器mmm'kay,该功能无效。

该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

因此,这对比我聪明的人来说是一个线索。希望能帮助到你。


1

以上是我的情况

我调整了交换空间的大小:删除了旧的交换空间,然后将新的交换空间扩大了。之后出现错误Something X session related。我在/ etc / fstab中更改了UUID,但是它对我不起作用。已检查日记帐:... unknown filesystem "swap"

解决方案:/etc/fstab变化ext4,以swap用于/swap和重启


欢迎新用户!感谢您的贡献。您的答案还不清楚。您可以进行编辑以清除所有内容吗?我们希望确保将来有此问题的访客能够清楚地理解它。特别是,您是否建议调整交换分区的大小或分配新的UUID?或者您是说尝试没有成功(可能希望将其遗漏掉,以免造成混淆)。 良好的格式也可以帮助澄清。
Nmath

0

在UUID之后:

# Turn off swap swapoff "${SWAP}"

在末尾:

swapon "${SWAP}"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.