在安装Ubuntu 14.04 LTS之后分配交换空间

我大约一个月前安装了Ubuntu 14.04 LTS,现在我正在双启动Ubuntu 14.04 LTS和Windows 8.1。
在安装过程中,我没有创建任何交换空间,但现在我真的需要为Ubuntu添加这个。我尝试使用"sudo swapon -s"命令来检查是否有分配的交换空间,但是结果显示为空。
ahsan@ahsan-Inspiron-N5110:~$ sudo swapon -s
Filename                Type        Size    Used    Priority

然后我尝试使用dd of=output.dat bs=1 seek=390143672 count=0来分配一些交换空间,输出结果是:
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000170607 s, 0.0 kB/s

我也尝试了命令sudo dd if=/dev/zero of=/swapfile bs=1G count=4,输出结果如下:
dd: memory exhausted by input buffer of size 1073741824 bytes (1.0 GiB)

然后我尝试了sudo fallocate -l 4G /swapfile,但输出结果是:
fallocate: /swapfile: fallocate failed: Operation not supported

我还检查了我的硬盘,以下是我的硬盘结构:
ahsan@ahsan-Inspiron-N5110:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        99G   18G   77G  19% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            1.4G  4.0K  1.4G   1% /dev
tmpfs           286M  1.2M  284M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            1.4G   24M  1.4G   2% /run/shm
none            100M   56K  100M   1% /run/user

free -m的输出结果是:

ahsan@ahsan-Inspiron-N5110:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2850       2665        184        421         25        846
-/+ buffers/cache:       1794       1055
Swap:            0          0          0

请告诉我如何在不影响我的任何数据的情况下添加交换空间。我已经安装了64位的Ubuntu LTS,并且拥有3GB的RAM和500GB的硬盘。
我已经访问了this Ask Ubuntu的问题,并尝试了命令,输出结果如下:
ahsan@ahsan-Inspiron-N5110:~$ sudo dd if=/dev/zero of=/swapspace bs=1G count=4
4+0 records in
4+0 records out
4294967296 bytes (4.3 GB) copied, 47.1951 s, 91.0 MB/s
ahsan@ahsan-Inspiron-N5110:~$ sudo dd if=/dev/zero of=/swapspace bs=1G count=4sudo mkswap /swapspace
dd: invalid number ‘4sudo’
ahsan@ahsan-Inspiron-N5110:~$ 

你想要修复什么问题?是指“输入缓冲区内存耗尽”吗?需要使用fallocate吗? - Braiam
1线索就在错误信息dd: invalid number '4sudo'里面,对吧?我猜你可能是复制粘贴出了问题。很高兴你解决了你的问题!将来要仔细阅读这些错误信息,并试着弄清楚为什么会收到这个消息!;-) 祝你好运。 - shellter
3个回答

首先,为了创建4,000 MB的交换空间:
$ sudo dd if=/dev/zero of=/swapspace bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB) copied, 5.92647 s, 708 MB/s

或者
$ sudo fallocate -l 4000M /swapspace 

下一步将其转换为可用的交换文件:
$ sudo mkswap /swapspace
Setting up swapspace version 1, size = 4095996 KiB
no label, UUID=7d1895e4-7ccf-42c6-979a-51ebddb49e91

激活它:
$ sudo swapon /swapspace 

确认活动交换空间:
$ cat /proc/swaps
Filename                Type        Size    Used    Priority
/swapspace              file        4095996 0       -1

接下来,在 /etc/fstab 中添加以下行以在启动时激活新的交换空间:
/swapspace none swap defaults 0 0

查看此维基页面:https://help.ubuntu.com/community/SwapFaq

编辑了一下问题,请您看一下。 - Ahsan Hussain
抱歉,我不小心尝试运行了两次命令,我觉得它对我起作用了 :) 现在系统监视器中也显示了交换空间。非常感谢! - Ahsan Hussain
我重新启动了机器,交换空间消失了,它再次不可用。 - Ahsan Hussain
1“内存不足”部分应该添加到答案中。评论是暂时的,它们可能会被删除。 - alexia
1sudo apt-get install swapspace 是比起像这样分配的最佳选择吗? - LOG_TAG

回答你的问题,你不需要自己管理交换文件。有一个叫做swapspace的软件包会根据需要动态地添加交换文件。
1. sudo apt-get install swapspace 然后就完成了。你的系统会根据需要增加或减少交换空间。

按照以下步骤操作:
1. 在终端中输入命令:sudo dd if=/dev/zero of=/mnt/{filename}.swap bs=1M count={swap_size} 2. 输入命令:sudo mkswap /mnt/{filename}.swap 3. 输入命令:sudo swapon /mnt/{filename}.swap 4. 输入命令:sudo gedit /etc/fstab 5. 在文件末尾添加以下文本:/mnt/{filename}.swap none swap sw 0 0 注意:将{filename}替换为您想要设置的任何名称,并将{swap_size}替换为您想要分配给交换文件的大小。请确保文件的大小是内存大小的两倍。

2现在这个建议已经不再适用了,除非你的内存非常低(比如1GB或更少)。如果你想使用休眠功能,你至少需要与物理内存相同大小的交换空间,但如果你有4GB的RAM,就没有理由拥有8GB的交换空间。 - alexia
我们已经考虑了您的建议。 - Wolverine