Linux 上的 swap 文件系统是什么

Linux 上的 swap 文件系统是什么

在 Linux 中,您可以选择 ext3 和 reiserfs 等分区。对于交换分区,您只需选择“swap”。这到底是什么文件系统?您可以创建一个 ext3 分区并将其设为交换分区吗?那会有什么不同?

答案1

交换不是实际的文件系统。它只是磁盘的保留部分,是没有特殊结构的原始可寻址内存。

mkswap 为交换区创建一个标头,其中包含一些附加信息。来自 util-linux-ng 包的 swapheader.h:

struct swap_header_v1 {
    char         bootbits[1024];    /* Space for disklabel etc. */
    unsigned int version;
    unsigned int last_page;
    unsigned int nr_badpages;
    unsigned int padding[125];
    unsigned int badpages[1];
};

当前使用的标头版本为 1。这就是 swap 原始结构背后的所有魔力。

答案2

我认为交换分区不需要文件系统,因为其中没有文件和目录。交换分区是虚拟 RAM 的位置。

答案3

Linux 有两种形式的交换空间:交换分区和交换文件。交换分区是硬盘上一个独立的部分,仅用于交换;其他文件不能驻留在那里。交换文件是文件系统中的一个特殊文件,位于系统和数据文件之间。

出于两个重要原因,交换是必要的。首先,当系统需要的内存多于物理可用内存时,内核会换出较少使用的页面,并将内存提供给立即需要内存的当前应用程序(进程)。其次,应用程序在启动阶段使用的大量页面可能仅用于初始化,之后再也不会使用。系统可以换出这些页面,并将内存释放给其他应用程序,甚至用于磁盘缓存。

答案4

有两种方法可以创建交换空间:文件系统交换和设备(或原始)交换。使用文件系统交换,您可以在文件系统上创建一个文件并将其用作交换空间(就像您在 Windows 上使用 pagefile.sys 看到的一样)。使用设备交换,您可以交换到专门为交换创建的分区。

哪个更好:

这种辩论在“过去”曾经更加有趣,因为:

为什么设备交换“更好”:由于您交换到原始分区,因此速度更快,因为您不必处理带有 inode 和其他文件系统开销的文件系统的所有额外开销

然而今天这个论点并不成立。随着当今磁盘访问速度的不断提高,设备交换不会比文件系统交换为您节省更多时间。

为什么文件系统交换“更好”:更改大小更容易。更改分区大小比创建新文件要困难得多。

然而,如今许多人使用 LVM 而不是原始分区,因此很容易缩小或增加交换空间

如今,这个问题更加没有意义了:如今大多数服务器出于性能原因,花大价钱装上内存都是值得的。(当 RAM 更难获得,而且通常一台服务器只装 4GB 到 8GB 的​​ RAM 时,这种争论曾经非常普遍)

为什么我使用文件系统交换(以及一般的交换)

这些天我指示我们的员工只使用 4gig 交换空间进行安装,并且我们对所有 Linux 安装使用相同的配置/映像。Oracle 安装需要更高的交换空间使用率,因此对于将安装 Oracle 的系统,我将使用文件系统交换空间创建其余部分。您的应用程序可能有交换需求,在这种情况下,您可以稍后使用文件系统交换空间添加它。

这有帮助吗?

我在这里提供了有关如何在 Linux 中执行此操作的详细说明: http://geekswing.com/geek/how-to-add-filesystem-swap-on-linux-and-unix-systems/

相关内容