Answers:
交换文件比交换分区更灵活,但也更容易出错。文件系统错误可能会损坏交换文件。交换文件对于管理员来说可能是一件痛苦的事,因为该文件无法移动或删除。交换文件不能用于休眠。过去,交换文件的速度稍慢一些,尽管如今这种差异可以忽略不计。
交换文件的优点是不必预先确定大小。但是,在Linux下,您仍然无法在线调整交换文件的大小:您必须先取消注册交换文件,调整大小然后重新注册(或创建其他文件并删除旧文件)。因此,与交换分区相比,Linux下的交换文件没有太多好处。当您暂时需要更多虚拟内存而不是永久固定设备时,它主要有用。
首选交换分区,因为当您需要的只是一个可寻址的内存池时,它避免了对文件系统的依赖。
但是,没有什么阻止您使用交换文件而不是交换分区或交换分区。
创建文件:
dd if=/dev/zero of=/extraswap bs=1M count=512
初始化文件内容:
mkswap /extraswap
用它:
swapon /extraswap
看看是否有效:
free -m
为了始终在启动时开始使用交换文件,请编辑/ etc / fstab并添加
/extraswap swap swap defaults 0 0
[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html
moreswap
如果我突然需要额外的交换空间,我会一直使用它来输入终端:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
可能的主要原因是主内核暂挂到磁盘不适用于交换文件。例如,如果需要,可以安装Debian Wiki说明uswsusp
。
最近,如果文件系统为btrfs
,则交换文件不起作用,因此对于发行版而言,始终将交换创建为分区是最简单的。
隐约地提到在内核版本2.6之前,使用文件进行交换可能会比分区具有更低的性能。 https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15
为了完整起见,我将添加自己的答案:
正如@Gilles所说,交换文件不能用于休眠。使用交换文件时,系统必须找到交换文件的标头,但要执行此操作,必须挂载包含交换文件的文件系统,并记录日志文件系统-例如ext3,ext4以及Linux使用的基本上所有现代文件系统-从磁盘恢复期间无法安装。(实际上,有很多方法可以做到,但是非常麻烦。)
资料来源:https : //www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt
我认为这主要是因为对位于分区上的数据的访问时间较短。交换文件的重点是在系统管理员真正用尽内存并且需要进行可能会使其系统崩溃的大型操作时,进一步帮助系统管理员。在这种情况下,他将在需要时偶尔创建交换文件。
但是无论如何,您都可以拥有它们。