Linux设置swap虚拟内存 zram内存教程

Linux上添加swap命令:cd /usrmkdir swapdd if=/dev/zero of=/usr/swap/swapfile bs=1M count=4096mkswap /usr/swap/swapfileswapon /usr/swap/swapfileecho "/usr/swap/swapfile swap swap defaults 0 0" >> /etc/fstabreboot请注意,这些命令可能需要 root 权限才能执行。若报错:swapon: command not found,则可能是无配置环境变量,可以尝试以下方法:使用 sudo 命令获取 root 权限,例如 sudo swapon /usr/swap/swapfile使用 swapon 命令的完整路径,例如 /sbin/swapon /usr/swap/swapfile可以编写成脚本,例如swap.sh#!/usr/bin/env bash#root执行记得给这个脚本chmod -R 777权限不然执行不了。#修改交换空间大小1G 500M 自行修改sudo fallocate -l 0.5G /swapfile chmod 600 /swapfilemkswap /swapfileswapon /swapfile#交换空间使用权重sysctl vm.swappiness=100#开机启用交换空间echo '/swapfile swap swap defaults 0 0' >> /etc/fstabbtrfs linux上添加swap如果系统是btrfs则需要按照以下注意事项操作:自 5.0 内核之后,Btrfs 才支持创建 Swapfile ,而且有一些特别的要求:Swapfile 不能放在 snapshotted subvolume (快照子卷)上。不支持跨多设备文件系统上的 Swapfile 。所以正确的做法是:新建一个 non-snapshotted subvolume ,然后在该子卷之下创建禁用压缩的 Swapfile 。[psiace@fedora /]$ cd /# 创建 non-snapshotted subvolume 。[psiace@fedora /]$ sudo btrfs subvolume create swapCreate subvolume './swap'# 进入子卷。[psiace@fedora /]$ cd swap# 新建长度为 0 的 Swapfile 。[psiace@fedora swap]$ sudo truncate -s 0 ./swapfile# 设置交换文件的属性,使其免于 copy-on-write 。[psiace@fedora swap]$ sudo chattr +C ./swapfile# 禁用压缩。[psiace@fedora swap]$ sudo btrfs property set ./swapfile compression none设定 Swapfile 作为 Swap 成分之一:# 将 Swapfile 填充至合适的大小,一般选择内存空间的一半或者与内存空间相当。# 这里仅仅是为了好玩,选择了巨量的 32GiB ,有浪费之嫌。[psiace@fedora swap]$ sudo dd if=/dev/zero of=./swapfile bs=1M count=32768 status=progress33980153856字节(34 GB,32 GiB)已复制,20 s,1.7 GB/s记录了32768+0 的读入记录了32768+0 的写出34359738368字节(34 GB,32 GiB)已复制,21.2624 s,1.6 GB/s# 设置正确的权限。[psiace@fedora swap]$ sudo chmod 600 ./swapfile# 格式化 Swapfile 作为交换类型。[psiace@fedora swap]$ sudo mkswap ./swapfile正在设置交换空间版本 1,大小 = 32 GiB (34359734272 个字节)无标签,UUID=2e48f371-62a9-487a-9613-382b386b2836# 激活交换文件,并设定优先级。# 由于 zram 的优先级是 100 ,所以这里设定成 50 。毕竟 zram 的性能比 swapfile 要强不少。[psiace@fedora swap]$ sudo swapon --priority 50 ./swapfile检查 Swap 空间并设置自动挂载# 使用 free 查看概览。[psiace@fedora ~]$ free -m total used free shared buff/cache availableMem: 15453 5206 290 109 9956 9808Swap: 40959 2 40957# 使用 swapon 查看详情。[psiace@fedora ~]$ swapon -sFilename Type Size Used Priority/dev/zram0 partition 8388604 2560 100/swap/swapfile file 33554428 0 50# 编辑 fstab ,添加指定条目以完成挂载。# 这里必须带上子卷名,UUID 可以不写。[psiace@fedora ~]$ sudo nano /etc/fstab/swap/swapfile none swap defaults 0 0如果设置后swap没有用开机自启,注意上述命令的swap路径是否与实际一致,本文是在根目录做的示例。以上代码改成bash脚本放文件一键执行:#!/usr/bin/env bash#root执行记得给这个脚本chmod -R 777权限不然执行不了。#修改交换空间大小1G 500M 自行修改sudo btrfs subvolume create /swapsudo truncate -s 0 /swap/swapfilesudo chattr +C /swap/swapfilesudo btrfs property set /swap/swapfile compression none# 这里设置swap大小 512M自行修改sudo dd if=/dev/zero of=/swap/swapfile bs=1M count=512 status=progresssudo chmod 600 /swap/swapfilesudo mkswap /swap/swapfilesudo swapon --priority 50 /swap/swapfileecho '/swap/swapfile none swap defaults 0 0' >> /etc/fstab新建好的文件例如命名为swap.sh,记得用chmod 777 ./swap.sh文件授权即可来源:在 Fedora 上为 Btrfs 新建 32GiB SwapfileLinux上设置zram效率比swap更高点,建议设置在终端中输入 sudo modprobe zram 来加载 zram 模块(省略)在终端中输入 sudo swapoff /dev/zram0 来关闭 zram0输入 sudo zramctl --reset /dev/zram0 来重置 zram0sudo zramctl --find创建一个新的 zram 设备,它会返回一个设备名,例如 /dev/zram0输入 sudo zramctl --size 1024M /dev/zram0 来设置该设备的大小输入 sudo mkswap /dev/zram0 来创建交换分区输入 sudo swapon /dev/zram0 来开启 zram0shell脚本,直接复制到命令行执行即可:sudo swapoff /dev/zram0;sudo zramctl --reset /dev/zram0;sudo zramctl --find;sudo zramctl --size 512M /dev/zram0;sudo mkswap /dev/zram0;sudo swapon /dev/zram0;/usr/bin/init-zram-swapping 是一个脚本文件,它用于在 Ubuntu 系统中初始化和配置 zram 交换分区12。这个脚本的内容大致如下