title: 如何在Linux中创建一个交换文件 date: 2016/9/29 1:13:35 categories: 笔记 tags: - Linux fancybox: comments: true permalink: description: --- 当程序需要的内存比电脑上拥有的物理内存还要大的时候,不管是 Windows 也好,Linux 也好,解决办法就是把存不下的东西转移到硬盘上的“虚拟内存”中去,尽管硬盘的速度比内存慢上很多,但是至少容量要大上很多。 另外,操作系统也可以把一些很久不活动的程序转移到虚拟内存中去,留出更多的主内存给需要的程序和磁盘缓冲。 Linux 在安装的时候,一般需要划出一个分区作为 Linux 的“交换分区”,作为虚拟内存内容的保存分区。 `swapon -s` 这个命令,可以查看当前系统的虚拟内存的情况,这条命令需要 root 来运行。 ``` Filename Type Size Used Priority /dev/sda3 partition 1004052 0 -1 ``` 可以看到常常看到当前的交换分区为` /dev/sda3`,第 2 栏的` Type `中显示为` partition`,说明这是个交换分区,那么,还有其他的 Type 吗? 当然,其实 Linux 也可以像 Windows 一样,用交换文件来保存虚拟内存的内容,这样即使你忘记划出交换分区也不要紧,而且灵活性上会更大一些。下面我们看看如何创建交换文件。 交换文件和交换分区一样,大小是固定的,比如你想要一个 1G 的交换文件,那么首先要创建一个 1G 的空白文件,我们用 dd 这个工具来完成这个任务: `$ cd /` `$ sudo dd if=/dev/zero of=swapfile bs=1M count=3000` 将其设置为1GB,(在上面的例子3000)改变计数值为1000,1500等1.5GB 现在更改创建与下面的命令交换文件的文件。 `$ sudo mkswap swapfile` 打开交换文件的命令, `$ sudo swapon swapfile` 为确保交换文件在系统启动时,打开fstab中自动打开。 `$ sudo nano etc/fstab` 并添加如下行。保存并关闭。 `/swapfile none swap sw 0 0` 这就对了。你可以,如果系统使用您的命令创建的交换文件检查 `$ cat /proc/meminfo`