为什么 Linux 使用交换分区而不是文件?

为什么 Linux 使用交换分区而不是文件?

在我看来,交换文件更灵活。

答案1

交换文件比交换分区更灵活,但也更容易出错。文件系统错误可能会损坏交换文件。交换文件对于管理员来说可能是一件痛苦的事情,因为该文件无法移动或删除。交换文件不能用于休眠。过去交换文件的速度稍慢,但现在差异可以忽略不计。

交换文件的优点是不必提前决定大小。然而,在 Linux 下,您仍然无法在线调整交换文件的大小:您必须取消注册它,调整大小,然后重新注册(或创建一个不同的文件并删除旧的文件)。因此,与交换分区相比,Linux 下的交换文件并没有多大好处。当您暂时需要更多虚拟内存而不是作为永久固定装置时,它主要有用。

答案2

交换分区可能是首选,因为当您只需要一个可寻址内存池时,它可以避免对文件系统的依赖。

但没有什么可以阻止您使用交换文件来代替交换分区,或者除了交换分区之外还使用交换文件。

  • 创建文件:

    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

答案3

也许主要原因是主内核挂起到磁盘不适用于交换文件。例如Debian 维基uswsusp如果您需要的话,请按照说明进行安装。

最近,如果文件系统是 ,则交换文件不起作用btrfs,因此对于发行版来说,始终将交换创建为分区是最简单的。

有人含糊地提到,在内核版本 2.6 之前,使用文件进行交换的性能可能低于分区。 https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15

答案4

我认为这主要是因为位于分区上的数据的访问时间较短。交换文件的目的更多的是帮助系统管理员,当他真的没有内存并且需要执行可能会导致系统崩溃的大量操作时。在这种情况下,他会在需要时偶尔创建交换文件。

但无论如何,你可以同时拥有它们。

相关内容