在Linux上交换什么文件系统


14

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


Linux上的交换文件系统似乎被称为Linux交换文件系统。如果我设法找到有关它的真实信息,我将发布答案。到目前为止,我从en.wikipedia.org/wiki/Paging中读取到,内核绕过交换文件上的文件系统。交换分区可能也是如此。
AndrejaKo 2010年

1
Gentoo论坛上令人难以置信的人们为我提供了链接!一切似乎都很好地解释了。哦,谢谢John R. Graham
AndrejaKo 2010年

Answers:


26

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

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是当前使用的版本。那就是交换的原始结构背后的所有魔力。


不必为了读写对分区有意义的任何东西而需要某种文件系统吗?
tony_sid 2010年

5
不,您只需要解决内存块。那正是页面。那是因为您不存储具有复杂结构或其他信息的数据,例如在实际文件系统中,权限和日期与数据一起存储。
matthias krull

6
如果没有文件系统,仍然可以寻址块。
matthias krull

8

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


2
确切地说,它不是虚拟的ram场所。就像ram这样的内存可以映射到进程的虚拟内存。
matthias krull

4

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

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


2
答案确实很好,并解释了问题的核心,但这是对问题“ GNU / Linux上的交换是什么?”的回答。那么,这是在做什么呢?另外,链接相关linux.com/news/software/applications/...
AndrejaKo

我知道什么是交换。
tony_sid 2010年

...不知道交换文件选项
MrCalvin '18

-1

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

哪个更好:

在“过去”的日子里,这种辩论变得更加有趣,因为:

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

然而,今天这种说法并没有真正成立。随着近来磁盘访问速度的不断发展,设备交换所花的时间并不比文件系统交换多得多。

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

但是今天,由于很多人使用LVM代替原始分区,因此很容易缩小和增加交换空间

如今,问题甚至更加棘手:如今,出于性能原因,大多数服务器都只为插入全部内存而付出了代价。(当RAM难以获得,并且通常只在服务器中放置4GB到8GB RAM时,这种争论曾经更加流行)

为什么我使用FILESYSTEM SWAP(通常进行交换)

这些天来,我指示我们的家伙使用4gig swap onl进行安装,并且所有Linux安装都使用相同的config / image。Oracle安装要求更高的交换使用率,因此对于将具有Oracle I的系统,我将使用文件系统交换来创建其余部分。您的应用程序可能有交换要求,在这种情况下,您可以稍后通过文件系统交换添加它。

这有帮助吗?

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


1
“然而,今天这种说法并没有真正成立。随着当今磁盘访问速度的不断发展,设备交换所花的时间不会比文件系统交换所花的时间多得多。” –这不是原因。这里的想法是交换空间可能是即时需求。遍历文件系统涉及目录,块,索引节点,缓冲区高速缓存等,这些都是自身可能需要更多内存的代码路径,从而导致循环。这就是为什么最好在原始块设备上进行交换的原因。它还避免了交换文件碎片。
mirabilos 2014年

这个答案可能涉及一些有趣的问题,但是并没有回答这个问题……
Samuel Li
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.