Linux上的交换文件系统是什么

ton*_*sid 16 linux filesystems swap partitioning ubuntu

在 Linux 中,您可以为分区选择 ext3 和 reiserfs 之类的东西。对于交换分区,您只需选择“交换”。这实际上是什么文件系统?您可以创建一个 ext3 分区并将其设为交换分区吗?那会有什么不同呢?

mat*_*ull 27

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

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];
};
Run Code Online (Sandbox Code Playgroud)

标题版本 1 是当前使用的版本。这就是交换原始结构背后的所有魔法。

  • 不,你只需要处理内存块。这正是页面。那是因为您不会像在真实文件系统中那样存储具有复杂结构或附加信息的数据,其中权限和日期与数据一起存储。 (6认同)
  • 如果您没有文件系统,您仍然可以寻址块。 (6认同)

小智 8

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

  • 它不是虚拟内存的地方。它是(如 ram)内存,可以映射到进程的虚拟内存。 (2认同)

Am1*_*3zA 4

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

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

  • 答案非常好,解释了问题的核心,但它是对“什么是 GNU/Linux 上的交换?”问题的答案。那么它在这里做什么呢?另外,链接相关http://www.linux.com/news/software/applications/8208-all-about-linux-swap-space (2认同)