土小帽 发表于 2023-11-3 23:28:48

Linux 上创建或扩展交换分区的方法

用户可以在安装Linux操作系统时或其他必要时创建交换空间。如果在安装Linux时忘记创建交换空间,或者想要增加交换分区的空间,随时都可以再创建或增加。



有时候,在升级RAM的过程中,需要增加一些交换分区空间。例如,如果将系统的RAM从1GB升级到2GB,就需要将交换分区空间从2GB增加到4GB,因为它的容量应是物理RAM容量的两倍。

交换空间用作虚拟内存,在物理内存(RAM)使用满时保留在磁盘上。如果系统在RAM已满时需要更多内存资源,非活动页面将被移到交换空间,从而帮助系统执行应用程序更长时间,但不应将其作为RAM的扩展。

建议创建一个专用的交换分区,但如果没有可用的分区,则可以使用交换文件或交换分区与交换文件的组合。通常建议交换空间至少为4GB,用户可以根据自己的需求和环境创建交换空间。

我注意到大多数虚拟机和云服务器都没有交换分区,因此在这种情况下,我们可以使用以下三种方法来创建、扩展或增加交换空间。

如何检测当前交换分区大小
通过 free & swapon 命令来检测当前的交换分区空间的大小。

$ free -h
total used free shared buff/cache available
Mem: 2.0G 1.3G 139M 45M 483M 426M
Swap: 2.0G 655M 1.4G
$ swapon --show
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2G 655.2M -1
上面的输出显示了当前的交换分区空间是 2GB 。

方法 1 : 通过 fallocate 命令创建交换文件
fallocate 程序是立即创建预分配大小的文件的最佳方法。

下面这个命令会创建一个 1GB 大小 的 /swapfile。

$ sudo fallocate -l 1G /swapfile
检查一下创建的文件的大小是否正确。

$ ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Jun 7 09:49 /swapfile
将该文件的权限设置为 600 这样只有 root 用户可以访问这个文件。

$ sudo chmod 600 /swapfile
通过运行以下的命令来将此文件转换为交换文件。

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=cda50e0e-41f3-49c7-af61-b8cb4a33a464
通过运行以下的命令来使交换文件生效。

$ sudo swapon /swapfile
将新创建的交换文件添加到 fstab 文件中,这样交换分区空间的修改即使在重启后也可以生效。

$ vi /etc/fstab
/swapfile swap swap defaults 0 0
检查一下新创建的交换文件。

$ swapon --show
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2G 657.8M -1
/swapfile file 1024M 0B -2
现在我可以看到一个新的 1GB 的 /swapfile1 文件了。重启系统以使新的交换文件生效。

方法 2 : 通过 dd 命令来创建交换文件
dd 命令是另一个实用程序,可以帮助我们立即创建预分配大小的文件。

以下 dd 命令将创建 1GB 的 /swapfile1。

$ sudo dd if=/dev/zero of=/swapfile1 bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 16.6154 s, 64.6 MB/s
详解:

if=/dev/zero 是输入文件,/dev/zero 是类 Unix 操作系统中的一个特殊文件,它提供从它读取的尽可能多的空字符(ASCII NUL,0x00)。
of=/swapfile1 设置输出文件。
bs=1G 一次性读写的大小为 1GB
count=1 仅复制一个输入块
检查一下创建的文件的大小是否正确。

$ ls -lh /swapfile1
-rw-r--r-- 1 root root 1.0G Jun 7 09:58 /swapfile1
将该文件的权限设置为 600 这样只有 root 用户可以访问这个文件。

$ sudo chmod 600 /swapfile1
通过运行以下的命令来将此文件转换为交换文件。

$ sudo mkswap /swapfile1
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=96def6d7-b2da-4954-aa72-aa32316ec993
通过运行以下的命令来使交换文件生效。

$ sudo swapon /swapfile1
将新创建的交换文件添加到 fstab 文件中,这样交换分区空间的修改即使在重启后也可以生效。

$ vi /etc/fstab
/swapfile1 swap swap defaults 0 0
检查新创建的交换文件。

$ swapon --show
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2G 1.3G -1
/swapfile file 1024M 0B -2
/swapfile1 file 1024M 0B -3
现在我可以看到一个新的 1GB 的 /swapfile1 了。重启系统以使新的交换文件生效。

方法 3 : 通过硬盘分区来创建交换文件
我们也推荐使用通过硬盘分区的方式来创建交换分区。

如果你已经在你的另一个硬盘上通过 fdisk 命令创建了一个新的分区,假设我们已经创建了一个叫做 /dev/sda4 的分区。

使用 mkswap 命令来将这个分区转换成交换分区。

$ sudo mkswap /dev/sda4
通过运行以下命令来使交换文件生效。

$ sudo swapon /dev/sda4
把新增的交换文件添加到 fstab 文件中,这样即使是重启了系统交换分区的修改也能生效。

$ vi /etc/fstab
/dev/sda4 swap swap defaults 0 0
检查新创建的交换文件。
$ swapon --show
NAME TYPE SIZE USED PRIO
/dev/sda5 partition 2G 1.3G -1
/swapfile file 1024M 0B -2
/swapfile1 file 1024M 0B -3
/dev/sda4 partition 1G 0B -4
我可以看到新的交换分区 1GB 的 /dev/sda4。重启系统就可以使用新的交换分区了。
页: [1]
查看完整版本: Linux 上创建或扩展交换分区的方法