我读到您需要将交换分区放在HDD而不是SSD上。
我的问题如下:
- 分发(或其他方式)何时以及如何进行“检查”以找到其Swap分区?
- 它在启动期间发生吗?
- 它只是检查所有可用磁盘并搜索带有“ swap”标志的分区?
- 如果有几个这样的分区会怎样?
- 另外,如果我在同一张磁盘上运行例如两个不同的发行版,例如Fedora和Ubuntu,我需要有几个交换分区?
我读到您需要将交换分区放在HDD而不是SSD上。
我的问题如下:
Answers:
静态配置的交换空间(几乎每个发行版使用的类型)的配置/etc/fstab
就像文件系统一样。
典型的条目如下所示:
UUID=21618415-7989-46aa-8e49-881efa488132 none swap sw 0 0
您可能还会在flags字段(第四个字段)中看到discard
或nofail
指定一个。每一个这样的行对应的一个交换区域(不具备成为一个分区,可以有交换文件,甚至是整个交换磁盘)。
在某些真正特定的情况下,您可能会改为动态配置交换空间,尽管这种情况很少见,因为它可能引起与内存管理有关的问题行为。在这种情况下,配置完全由用户空间组件处理,该组件在运行时根据需要创建并启用交换文件。
至于需要多少,这是一个很复杂的问题,但是您计划运行的不同Linux发行版的数量对此没有任何影响,除非您希望能够运行一个发行版而又使另一个发行版处于休眠状态(并且可能不想这样做,因为这是破坏系统的一种非常简单的方法。
当您为几乎所有主要发行版(包括Fedora,OpenSUSE,Linux Mint,Debian和Ubuntu)运行安装程序时,它将检测系统上任何现有的交换分区,并将其添加到您要发行的配置中安装(除非您选择手动分区),在大多数情况下,这将导致以合理的方式配置系统。
除此之外,我个人建议避免使用多个交换分区,除非您要谈论的是具有大量磁盘的服务器系统,否则即使如此,您仍然确实需要知道要做什么才能进行设置,以使其运行良好。
/tmp
分区/目录)。也许在这种情况下,最好有虚拟机……
systemctl --all | grep swap
我会得到两个结果。dev-disk-by\x2duuid-1c692cc4\x2df942\x2d4478\x2dad0f\x2d266b7484273a.swap
和swap.target
这两者都是ACTIVE =无效和SUB =死亡。如何使我的系统利用交换区?
假设Fedora和Ubuntu?
…两者都是当今的系统化操作系统。
Systemd使用各种单元。 .mount
单元文件指示它安装卷。 .swap
单元文件指示它告诉内核有关交换分区的信息。(.service
单位文件指示它如何运行服务。等等。)这些是本机systemd机制。为了实现它们,systemd本身派生了进行相关系统调用的子进程。
如果在这样的systemd操作系统上使用systemctl
命令(带有--all
),它将告诉您有关已加载的.swap
单位的信息。例如:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap加载了活动活动/ dev / disk / by-partuuid / 40549710-05 dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap加载了活动活动/ dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a dev-sda5.swap已加载活动活动/ dev / sda5
它还会告诉您有关.mount
单位的信息。
系统管理员可实际上写这样.swap
通过手部的文件,就像XE可以写.service
,.socket
和手工等单位的文件。systemd本身只是在文件系统中查找单元文件。它们是其本机机制。
甚至可以让systemd向您显示这些单位文件中的内容以及在文件系统中的何处:
$ systemctl cat dev-disk-by \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\\ x2d81f4 \\\ x2dff2b339b4e2a.swap #/run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap #由systemd-fstab-generator自动生成 [单元] SourcePath = / etc / fstab Documentation = man:fstab(5)man:systemd-fstab-generator(8) [交换] 什么= / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a 选项= SW $
一个人可以手写。 一般然而,这样的.mount
和.swap
单元文件是自动由称为程序生成的发电机。两个这样的生成器是systemd-fstab-generator
和systemd-gpt-auto-generator
。它们都在引导过程的早期运行并响应systemctl daemon-reload
命令,并且(如您在上面看到的)它们将单元文件的整个负载生成到中未记录的子目录中/run/systemd/
。systemd本身仅使用那些生成的单位文件。
前一个生成器读取/etc/fstab
,识别出该文件格式的多个systemd扩展名。正如我在回答评论中指出的那样,传统上,交换分区的装载类型为sw
,这就是人们会发现其他操作系统识别此表中的交换记录的方式。但是Linux软件采取了另一种方法,即识别VFS类型,寻找swap
VFS类型。 systemd-fstab-generator
这里也不例外,这就是/etc/fstab
将其转换为本地机制时的解释方式。
后者的生成器处理保存EFI系统分区的同一张光盘上的EFI分区表,以查找具有各种众所周知的分区类型 GUID的EFI分区表条目。这些GUID之一是分配给Linux交换分区的常规GUID。如果systemd-gpt-auto-generator
找到具有该GUID的分区(满足systemd doco中给出的标准),它将为其创建一个.swap
单元;完全不/etc/fstab
参与。
当然,此过程有很多副作用。例如,由于/etc/fstab
没有表的主键,因此记录可以具有重复的“ spec”和“ file”(即“ what”和“ where”)字段。但是,在本机systemd机制中,“文件”(即“ where”)字段是.mount
单元的唯一键,嵌入到单元名称中。没有两个.mount
单位可以共享它。对于.swap
单位,“规格”(即“什么”)字段是单位的唯一键。没有两个.swap
单位可以分享。因此,并非所有记录/etc/fstab
都可以转换为本机机制并且可以正常工作,尤其是当人们出于诸如两个不同的目的列出同一安装点或以两种不同的方式列出同一交换分区之类的事情时。
同样,由于已转换/etc/fstab
为本机机制,而systemd的本机机制具有其他激活单元的方式,因此其行为与非系统操作系统的行为有细微的差别。甲.mount
单元将默认,可自动地由活化systemd-udevd
,即使自举后,响应于的外观安装存储装置。或者可以将其列为一个Wants=
或Requires=
多个.service
或一个.socket
单位,这意味着它们将被(重新激活)。甚至有RequiresMountsFor=
。
传统上,操作系统安装程序和systemd管理员随后重新配置系统时,都将sw
条目写入/etc/fstab
。这就是本机.mount
和.swap
单元最终自动生成的方式。安装/配置实用程序“知道”交换文件的放置位置,因为系统管理员在其用户界面中做出了某种选择,并编写了一个/etc/fstab
匹配项。有时,这种选择是我需要您在安装过程中使我成为交换分区。; 有时只是使用光盘上已经找到的交换分区。(安装程序也会查看分区类型)。
但是系统的人们有这样一种想法,即操作系统会从一个空/etc
树中自动配置自己,即所谓的无状态系统,这就是诸如读取EFI分区表的生成器之类的机制的全部含义。在系统化的人们的计划中,根本没有/etc/fstab
,甚至根本没有持久的配置数据/etc
,所有这些东西都是从磁盘,每个引导程序和每个磁盘上的分区表的内容推导出来的systemctl daemon-reload
。如今,他们正在提倡操作系统安装程序,而不是不编写/etc/fstab
。
当然,在传统方案中,您确实可以使每个操作系统都有其自己的专用交换分区,而不必让它们彼此接触交换分区。实际上,如果您正在使用hibernate通过交换分区进行磁盘刻录,并且希望在休眠状态下能够多次引导至另一个操作系统(这是一个非常糟糕的主意,因为这样很容易导致文件系统损坏),这将是必要。
在系统化方案中,即使操作系统尚未像系统化的人们所设想的那样并且是“无状态的”,上述生成器也会运行;因此,具有必需分区类型的所有交换分区(在ESP /根磁盘上)将被所有systemd操作系统自动采用。由于它们将共享所有自动发现的交换分区,因此实际上不需要为每个已安装的操作系统创建一个交换分区。
systemd.swap
。 系统手册页。freedesktop.org。systemd-fstab-generator
。 系统手册页。freedesktop.org。systemd-gpt-auto-generator
。 系统手册页。freedesktop.org。历史上,交换分区是使用/etc/fstab
type条目指定的swap
。在启动时,启动过程将读取该文件并将该配置推送到内核中。
输入的一个示例/etc/fstab
是:
/dev/sdb none swap sw 0 0
我不熟悉如何systemd
管理交换,但是我确实相信最终结果是相同的:用户空间进程知道分配了哪些空间用于交换,而用户空间进程则通知内核。
/etc/fstab
从sw
安装类型而不是从swap
VFS类型识别交换记录。
systemd-gpt-auto-generator
。
所有其他答案都提到了如何在启动时指向交换文件系统。
但是,有几点要补充到其他答案中:
mkswap
:swapon
;swapoff
。