Ubuntu 上 修改swap交换空间

增加交换空间

  1. 关闭交换空间。
sudo swapoff -a
  1. 查看是否有 swap或swapfile文件(在根目录下)。
sudo dd if=/dev/zero of=/swapfile bs=1G count=16
命令 解释
sudo 执行命令需要超级用户前缀
dd 用于复制和转换文件的命令
if=/dev/zero if指定输入文件。/dev/zero是一个特殊文件,读取会返回null字节(‘\0’)
of=/swapfile of指定输出文件
bs=1G 设置块大小为1G。表示dd命令每次从输入文件读取1G的数据,然后写入到输出文件。
count=16 指定要复制块的数量。
此命令将创建一个大小为16GB的 /swapfile 文件。

成功输出为

记录了16+0 的读入
记录了16+0 的写出
17179869184字节(17 GB,16 GiB)已复制,32.1801 s,534 MB/s
  1. 设置文件交换权限
sudo chmod 600 /swapfile
  1. 将文件设置为交换空间
sudo mkswap /swapfile

打开交换空间

sudo swapon -a
  1. 使交换空间 在系统重启后依旧生效
    /etc/fstab 中添加一个条目。
/swapfile none swap sw 0 0

表明 /swapfile 是一个交换文件,类型为none,使用sw作为交换分区类型,并且没有特定的挂在选项(使用默认值)。

打开交换空间

sudo swapon --show

如果一切正常,你应该能够在输出中看到你的交换文件。

最后,确保交换空间的大小不会超过物理内存的大小,否则可能会导致系统性能问题。

确定物理内存

free -g

减小交换空间

  1. 关闭交换空间
sudo swapoff -a
  1. 使用 fallocatetruncate 命令来减小交换文件大小
    如要将交换文件减小为8GB,可以使用
    fallocate 命令
sudo fallocate -l 8G /swapfile

truncate 命令

sudo truncate -s 8G /swapfile
  1. 重启交换空间
sudo swapon --show

如果无效,可能是因为文件系统或文件系统的限制。在某些文件系统上,例如ext4,直接缩小已分配的文件大小可能有限制或不可行。

可以考虑使用dd命令覆盖文件的一部分,使其变成未分配的空间,然后再重新创建交换空间。


fallocatetruncate 的区别

fallocate和truncate都是用于处理文件大小的命令,但它们在处理方式和结果上有一些区别。

  1. fallocate:这个命令用于预先分配文件所需的物理空间。这意味着它会确保文件在磁盘上的扇区上是连续的,从而减少了后续写入和读取文件时的磁盘寻道时间。然而,这个过程并不创建空洞文件,即占用实际的磁盘空间。
  2. truncate:这个命令会生成空洞文件。也就是说,虽然文件在逻辑上看起来大小很大,但实际上它并不占用任何磁盘空间。

综上,fallocate主要用于预先分配物理空间,而truncate主要用于生成空洞文件。

你可能感兴趣的:(Linux学习,ubuntu,linux,运维)