更新 3:
我决定从头开始重新安装系统以删除周围的任何旧问题,因为升级后我也遇到了一些其他问题。但是,此问题仍然存在。
在全新安装中,选择使用“加密主页”进行安装会导致损坏的加密交换配置。
更新 2:
我修复了 cfdisk 抱怨的分区顺序,但他的问题仍然存在。交换现在位于 /dev/sda6 上,我可以按如下方式启动并运行它:
~$ sudo mkswap /dev/sda6
Setting up swapspace version 1, size = 7998460 KiB
no label, UUID=18881d0f-d9ec-43be-a23f-0cbd78ea6d22
$sudo nano /etc/crypttab # Update crypttad with new UUID
$ sudo /etc/init.d/cryptdisks reload
* Stopping remaining crypto disks...
* cryptswap1 (stopped)... [ OK ]
* Starting remaining crypto disks...
* cryptswap1 (starting)..
* cryptswap1 (started)... [ OK ]
$ sudo swapon -a
$ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:04 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:08 18881d0f-d9ec-43be-a23f-0cbd78ea6d22 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 11 09:04 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:04 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:04 D28230E68230D129 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 11 09:08 fcc8c419-8fec-4d4d-b55e-9e4c3b04d21d -> ../../dm-0
但是在重启后交换无法激活,它再次看起来像这样:
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:12 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:12 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:12 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:12 D28230E68230D129 -> ../../sda2
我目前的猜测是,当将磁盘设置为加密时,linux 不再识别分区类型,因此无法正确加载它,导致它无法注册它的 UUID,因此 cryptswap 找不到它导致失败。但我不知道如何解决它..
更新的问题:
进一步的测试表明,我可以通过运行 $ mkswap /dev/sda5 来启动和运行交换
然后使用正确的 UUID 更新 /etc/crypttab 并按照此处概述的步骤操作: How do I setup an encrypted swap file?
然而,当我重新启动计算机时问题仍然存在,/dev/sda5 在我运行时没有出现
$ ls -l /dev/disk/by-uuid/
如果我做:
$ cfdisk /dev/sda
我收到以下错误:
FATAL ERROR: Bad logical partition 6: enlarged logical partitions overlap
Press any key to exit cfdisk
图形“磁盘”实用程序在使用它打开磁盘时不会抱怨任何错误。
$ sudo fdisk -l
Disk /dev/sda: 256.1 GB, 256060514304 bytes
255 heads, 63 sectors/track, 31130 cylinders, total 500118192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x619aebf1
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sda2 206848 100870143 50331648 7 HPFS/NTFS/exFAT
/dev/sda3 191397888 192397311 499712 83 Linux
/dev/sda4 192399358 500117503 153859073 5 Extended
/dev/sda5 484118528 500117503 7999488 82 Linux swap / Solaris
/dev/sda6 192399360 484118527 145859584 83 Linux
Partition table entries are not in disk order
原问题:
升级到 14.04(从 13.04)后,我的电脑一直在经历严重的减速,当运行 top 时,我注意到 kswap0 占用了大量的 cpu 时间。我还注意到我没有任何交换空间!
$ sudo swapon -a
swapon: /dev/mapper/cryptswap1: stat failed: No such file or directory
我的加密交换设置似乎有一些问题(我什至不知道我有一个)
$ cat /etc/crypttab
cryptswap1 UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 /dev/urandom swap,cipher=aes-cbc-essiv:sha256
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 6 11:00 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 6 11:00 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 6 11:00 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 6 11:00 D28230E68230D129 -> ../../sda2
看着我的 fstab
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda6 during installation
UUID=19aa372c-05c8-4226-8f09-c54e5566e816 / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda3 during installation
UUID=08b07f88-6da5-4b40-b062-42b3bb1c5f00 /boot ext2 defaults 0 2
# swap was on /dev/sda5 during installation
#UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 none swap sw 0 0
/dev/mapper/cryptswap1 none swap sw 0 0
我的猜测是 sda5 的设置有问题,但我不知道如何修复它,因为它被设置为加密。对于如何进行,将不胜感激。
已知错误
有一个错误(见下文)会在
UUID
数据写入分区后立即覆盖分区。因此,您不能使用UUID
来引用要用于加密交换的分区。如今,交换空间几乎从未被使用过。在我的机器上,仅当我打开第 40 个选项卡时才使用交换。当我没有交换时,突然我的电脑开始滞后并且浏览器自行关闭。或者在
Chromium
浏览器的情况下,很多选项卡会突然“死掉”。出于这个原因,
/dev/disk/by-uuid/
在您的引用中/etc/crypttab
可能看起来工作了一段时间,但是一旦您的交换空间被实际使用,它就会覆盖,UUID
因为整个分区都用于加密数据存储。轻松修复
简单的解决方法是在您的 中按设备引用交换分区
/etc/crypttab
,例如:警告:这在笔记本电脑上可能是安全的(我是这样使用的),但是如果您使用的是带有可交换驱动器的台式机或出于其他原因需要更改驱动器/分区布局,则您不想这样做,因为普通存储分区可能突然被用于交换。
注意:您需要重新启动才能使此更改生效,因为只有在启动时才会
/dev/mapper/cryptswap1
创建。适当修复
解决此问题的正确方法是确保原始分区中存储 的
UUID
部分未被加密的交换数据覆盖,因此它在重新启动时仍会存在。但是,我不确定UUID
写在哪里以及它占用了多少字节。您可以自行承担风险,像这样测试它:注意
offset=36
.如果您有Ubuntu One帐户,请登录并转到Launchpad 上的 Bug #1310058并选择(或单击此处):“This bug affects me too”这样该 bug 将获得“流行”并且更容易得到修复。
更新时间 2014-10-27
我也偶然发现了这一点。未经本人验证。它看起来像是
offset
关于重建损坏交换的更多冗长和注释的技巧。https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1310058/comments/22
我在 Ubuntu 14.04 中遇到了同样的问题并遇到了这个线程;变种人提供的这个链接对我来说效果很好。我使用了
/dev/disk/by-id
引用而不是 /dev/sdXY,因为该引用并不总是指向同一个物理分区。我的/etc/crypttab
结局是:只需使用未加密的交换
...并保持 /home 加密
我尝试了这里建议的其他几个解决方案。尽管它们在热重启后继续工作,但最终它们在关机和冷重启后都失败了。
这告诉我们我们实际上正在处理一个双重错误:
这些想法也反映在对Launchpad 上提交的相关错误的评论中。然而,随着从 Upstart 到 systemd 的悬而未决的转变,几乎没有解决当前 LTS 系统上的错误。
在这一点上,以下想法掠过我的脑海:
\home
分区,没有别的。所以,这是我的解决方案,可以将交换恢复为正常的、未加密的交换,而无需重新安装整个操作系统。
blkid
:$ sudo apt-get install blkid
/etc/crypttab
并删除整cryptswap1
行:$ sudo nano /etc/crypttab
linux-swap
分区。应用此操作后,您会收到有关恢复的正常交换分区的新 UUID 的通知。您有机会保存此信息。如果不这样做,请知道您始终可以从命令行检索新的 UUIDblkid
:$ sudo blkid
现在,是时候恢复
/etc/fstab
昔日的荣耀了:$ sudo nano /etc/fstab
/dev/mapper/cryptswap1
。swap
的散列取消注释旧行。#
UUID=...
nano
CtrlX$ sudo swapon -a
看看这个。我通过简单地将 /etc/crypttab 中的 UUID=... 替换为 /dev/sda3 来解决这个问题。
我有这个问题,问题 332625的人也是如此。suspend 和 reboot 的某种组合会丢失交换分区的 UUID(如/etc/fstab中的注释所说,用 确认
sudo blkd
),因此/etc/crypttab中使用该 UUID 作为加密交换的行失败。我没有运气切换/etc/crypttab以使用分区的
/dev
名称(在您的情况下为/dev/sda6)或dev/disk/by-id/
名称而不是消失的 UUID。遗憾的是,放弃加密交换是迄今为止最简单也是最好的解决方案。