当使用的内存达到最大值时,我的系统会冻结,我不知道为什么。原来交换区未被使用。这是我的分区表:
Device Boot Start End Blocks Id System
/dev/sda1 * 63 80324 40131 de Dell Utility
/dev/sda4 81918 909195263 454556673 5 Extended
/dev/sda5 512121690 909195263 198536787 83 Linux
/dev/sda6 81920 3987455 1952768 83 Linux
/dev/sda7 3989504 140705791 68358144 83 Linux
/dev/sda8 492589056 512120831 9765888 82 Linux swap / Solaris
/dev/sda9 140707840 492584959 175938560 83 Linux
交换分区未打开且未显示,df
但它在磁盘实用程序中显示:
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 4.0K 1.9G 1% /dev
tmpfs 392M 1.3M 391M 1% /run
/dev/sda7 65G 19G 43G 31% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 26M 1.9G 2% /run/shm
none 100M 48K 100M 1% /run/user
/dev/sda6 1.9G 89M 1.7G 6% /boot
/dev/sda9 166G 47G 111G 30% /home
/home/my-user-name/.Private 166G 47G 111G 30% /home/my-user-name
$ sudo swapon -s
Filename Type Size Used Priority
您可以注意到,我的主分区已加密,但我尚未加密交换分区。
交换似乎在 /etc/fstab 中声明:
# swap was on /dev/sda8 during installation
#UUID=df55bf68-b824-4f21-83f3-dfa80a0b74ab none swap sw 0 0
/dev/mapper/cryptswap1 none swap sw 0 0
我想知道为什么它不工作以及如何修复它?
更新 似乎有一个已报告错误这个问题已在多个版本中存在,但 14.04 版尚未修复。
结果如下cat /etc/crypttab
:
cryptswap1 UUID=df55bf68-b824-4f21-83f3-dfa80a0b74ab /dev/urandom swap,cipher=aes-cbc-essiv:sha256
以及AB:
$ sudo /etc/init.d/cryptdisks reload
* Stopping remaining crypto disks... [ OK ]
* cryptswap1 (stopped)...
* Starting remaining crypto disks...
* cryptswap1 (skipped, device /dev/disk/by-uuid/df55bf68-b824-4f21-83f3-dfa80a0b74ab does not exist)... [fail]
[ OK ]
$ sudo swapon -a
swapon: /dev/mapper/cryptswap1: stat failed: No such file or directory
基于大卫·福斯特的答案我照做了cat /dev/disk/by-uuid/
,得到了 6 个 uuid。blkid -U
每个的 did 和 non 是/dev/sda8
交换应该所在的。我得到了 sda 的 1、5、6、7、9 和/dev/mapper/luks-****
。我认为最后一个是我在安装过程中未动过的另一个加密分区(由 12.04 加密)。
我也尝试了以下回答. 也不起作用。
更新: 我最终重新格式化了分区并重新安装了系统。现在看起来运行正常。
答案1
cryptswap1 (skipped, device /dev/disk/by-uuid/df55bf68-b824-4f21-83f3-dfa80a0b74ab does not exist)
UUID=df55bf68-b824-4f21-83f3-dfa80a0b74ab
当该条目生成时,无论卷有什么/etc/crypttab
,都不再存在。
如何修复
运行
sudo swapoff -a
以确保所有交换空间都已释放。 的输出swapon -s
现在应为空(除了列标题行)。删除(或注释掉)有关交换
/etc/fstab
和的行/etc/crypttab
。如果不确定,请进行备份。你说你想把交换放在 上
/dev/sda8
。忽略它的当前内容,以完成本说明的其余部分;将其视为垃圾数据。在此过程中,您将丢失所有数据sda8
!如果您珍视这些数据,请进行备份!
我之前的建议(请使用上面的建议)
由于原始设备(或原始dm-crypt
设备)没有 UUID,因此您需要求助于其他设备标识符。内核名称(/dev/sd*
和相关名称)在启动过程中并不稳定,因此最好的办法是找到 中的条目/dev/disk/by-id/
,该条目链接到您想要的加密交换分区。根据我的经验,这些已经足够稳定了(除非内核或 udev 脚本发生变化)。
假设这/dev/sda8
是加密交换分区的预期位置,您可以在输出中找到其基于 ID 的路径
ls -l /dev/disk/by-id/* | grep sda8
或者更详细地使用:
find -L /dev/disk/by-id -samefile /dev/sda8
您可以将其中一个结果用作条目的第二列crypttab
。
答案2
我认为您的 /etc/fstab 文件中存在错误。您的交换区没有挂载点。
改变线路
/dev/mapper/cryptswap1 none swap sw 0 0
到
/dev/mapper/cryptswap1 swap swap defaults 0 0