1.什么是交换空间

1.什么是交换空间
  1. 什么是交换空间?

  2. 有推荐的吗尺寸用于交换空间?

  3. 在那儿优点使用文件作为交换空间而不是磁盘分区?

  4. 我怎样才能得到信息关于我的电脑的内存使用情况?

  5. 哪个工具我应该为此目的创建文件吗?

  6. 我如何创造交换文件?

  7. 我如何删除交换文件?

  8. 我该如何设置优先事项如果我有多个交换空间?

  9. 如何让系统使用更多或更少的交换空间(交换性),与主存储器(RAM)相比?

答案1

1.什么是交换空间

交换意味着改变、通勤、交换、转移、替代、转换、交易。 (来源:韦氏词典)

交换空间(文件或分区)是虚拟内存的一种,是真实内存 (RAM) 的扩展。它位于计算机的存储设备(HD 或 SSD)上。由于 HD 和 SSD 上的数据传输速度比 RAM 上慢,因此操作系统 (OS) 仅在 RAM 不足时才使用它。内存不足会导致计算机死机和崩溃。

2. 交换规模

分配(保留)作为交换区的大小基本上取决于 4 个方面:

  • 计算机有多少内存。
  • 操作系统和运行的应用程序需要多少 RAM。
  • 计算机的 HD 或 SSD 有多少空间。
  • 如果您使计算机休眠。

一般建议将 RAM 大小设置为两倍。

3. 文件相对于分区的优点

文件更适合维护目的。它们可以轻松调整大小和重新分配。另一方面,分区可能很难甚至不可能做到这一点。

4.信息检索

以人类可读的格式显示总内存信息(-h):

free -h

显示交换文件/分区信息:

sudo swapon

交换分区通常是/dev/sda3;而交换文件通常放置在根目录(/)并命名为“swapfile”(/swapfile)。

5.文件创建工具

  • DD:用于复制和转换文件的实用程序。它用空块填充分配的空间。创建连续的文件。

  • 错误定位:“用于操作文件分配的磁盘空间”(联机帮助页)。为文件分配空间,但不使用块填充该空间。创建不连续(稀疏)文件。

内核中的交换文件实现期望能够直接写入文件,而不需要文件系统的帮助。这是有漏洞的文件或 Btrfs 等文件系统上的写时复制文件的问题。 cp(1) 或 truncate(1) 等命令会创建有漏洞的文件。这些文件将被 swapon 拒绝。由fallocate 创建的预分配文件也可能被解释为有漏洞的文件,具体取决于文件系统。自 Linux 4.18 起,XFS 支持预分配的交换文件。创建交换文件的最便携的解决方案是使用 dd 和 /dev/zero。

(来源:swapon 联机帮助页)

DD是最推荐的创建交换文件的方法,因为这种特殊类型的文件不能包含漏洞。

参考:

6.创建交换文件的过程

a) 创建文件 (8GB)。

sudo dd if=/dev/zero of=/swapfile bs=1MiB count=$((8*1024))

参数:

  • if = 输入文件(标准输入)
  • of=输出文件
  • bs = 块大小
  • 计数 = 块数

b) 限制访问权限

仅向 root 用户(文件所有者)授予读写权限。

sudo chmod 600 /swapfile

c) 使文件可交换

sudo mkswap /swapfile

d) 打开系统的交换文件

sudo swapon /swapfile

e) 使改变永久化

将以下行添加到文件系统表的末尾(系统表): /swapfile none swap sw 0 0

sudo nano /etc/fstab

参数:

  • 文件系统 = 交换文件的路径和名称 ( /swapfile)
  • 挂载点 = 挂载在文件系统内部 ( none)
  • Type = 表明这是一个交换文件 ( swap)
  • 选项 = 交换文件选项 ( sw)
  • 转储 = 与本例无关 ( 0)
  • 通过 = 与本例无关 ( 0)

7. 删除交换文件

a) 关闭交换文件

sudo swapoff /swapfile

b) 删除交换文件

sudo rm /swapfile

c) 使改变永久化

注释或删除文件中的相应条目fstab

sudo nano /etc/fstab
  • 如果你想删除交换分区,按照删除交换文件的说明进行操作,但删除步骤除外,该步骤需要使用 fdisk、parted、gparted、gnome disks 或类似工具来实现。

  • 如果你想更改交换文件大小,将其关闭 ( swapoff),通过创建一个具有相同名称和新大小的新文件来覆盖它,使其可交换 ( mkswap),然后将其打开 ( swapon)。如果使用相同的名称,则fstab不需要更新。

8. 交换空间的优先级

(如果您只有一个交换空间,请忽略此部分。)

  • 如果您有多个交换空间(分区或文件),您可能需要向内核指示哪一个交换空间具有更高的优先级,因此应该提前使用。

  • 优先级范围从0到32767。数字越大,优先级越高。

  • 默认优先级为-2。如果您未指定,则会自动设置。

  • 如果多个交换空间具有相同的优先级,则它们将交替使用。

  • 优先级应设置为fstab文件上的相应行

/swapfile    none    swap    sw,pri=5    0    0

其中“pri”代表“优先级”,“5”是本示例中使用的级别。

9. 交换性

swappiness 参数控制内核将内容从物理内存移至交换磁盘的趋势(Ubuntu 社区帮助 Wiki:交换常见问题解答)。更具体地说,它是 Linux 内核的一个属性,它改变了换出运行时内存与从系统页面缓存中删除页面之间的平衡。 Swappiness 可设置为 0 到 100 之间的值(含 0 和 100)。较低的值意味着内核将尝试尽可能避免交换,而较高的值将使内核积极尝试使用交换空间(红帽客户门户 - 知识库)

默认交换值是 60。对于大多数桌面来说,这应该没问题。但是,服务器可能会使用较低的值,例如 10 甚至 1,具体取决于其用途。

值为 0 表示“将交换空间作为最后的手段”。

如果值为 100,交换空间将用作 RAM。

检查交换值

cat /proc/sys/vm/swappiness

进行短暂的改变

暂时将值更改为 10。它将随着会话重新启动而重置。

sudo sysctl vm.swappiness=10

做出持久的改变

要进行持久更改,请使用“vm.swappiness=10”行编辑下面的文件

sudo nano /etc/sysctl.conf

相关内容