Ubuntu下配置Swap分区作为虚拟内存空间
虚拟内存是操作系统使用硬盘空间模拟内存的技术,当物理内存(RAM)不足时,系统会将不常用的数据暂时存入虚拟内存(即Swap空间),避免程序卡顿或系统崩溃,本文将详细介绍在Ubuntu系统中如何创建、启用和管理Swap虚拟内存,包括Swap文件和Swap分区两种常见方式。
在Linux系统中,Swap空间分为两种:
- Swap分区:独立的磁盘分区,性能较高,但需要提前预留分区空间。
- Swap文件:位于普通文件系统中的文件,创建灵活,适合云服务器或无法调整分区的情况。
对于大多数用户,Swap文件是更便捷的选择,本文以Swap文件为例讲解设置流程。
在设置Swap前,先通过命令查看当前系统的物理内存和Swap使用情况:
free -h
输出示例:
total used free shared buff/cache available Mem: 7.7Gi 3.1Gi 2.2Gi 256Mi 2.4Gi 4.2Gi Swap: 2.0Gi 0.0Bi 2.0Gi
Mem行显示物理内存(total为总量,used已使用,available可用)。Swap行显示Swap空间(若total为0,说明当前未启用Swap)。
Swap大小的建议值:
- 一般场景:物理内存的1-2倍(例如8GB内存可设置8-16GB Swap)。
- 大型应用/服务器:物理内存的2-3倍(例如虚拟机、数据库服务器)。
- 注意:Swap并非越大越好,过大的Swap可能导致硬盘IO压力增加。
假设我们要创建一个8GB的Swap文件,路径为/swapfile。
使用fallocate命令快速分配文件空间(fallocate支持即时分配,无需实际写入数据,速度快):
sudo fallocate -l 8G /swapfile
若fallocate不可用(如某些精简版系统),可用dd命令(较慢,但兼容性更好):
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
bs=1M:块大小为1MB;count=8192:8192个块,共8192MB=8GB。
Swap文件包含敏感数据,需限制访问权限(仅root可读写,避免其他用户访问):
sudo chmod 600 /swapfile
使用mkswap命令将文件格式化为Swap格式:
sudo mkswap /swapfile
输出示例:
Setting up swapspace version 1, size = 8 GiB ( bytes) no label, UUID=-abcd-1234-abcd-abc
记录输出的UUID(后续配置/etc/fstab时可能需要)。
通过swapon命令启用Swap文件:
sudo swapon /swapfile
再次运行free -h,查看Swap的total是否已更新为8GB:
free -h
输出示例:
total used free shared buff/cache available Mem: 7.7Gi 3.1Gi 2.2Gi 256Mi 2.4Gi 4.2Gi Swap: 8.0Gi 0.0Bi 8.0Gi
若Swap总量正确,说明Swap已启用。
当前Swap文件仅在本次开机有效,重启后会失效,需编辑/etc/fstab文件实现开机自动挂载:
方法1:直接使用文件路径(推荐)
echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
/swapfile:Swap文件路径;none:表示文件系统类型为Swap;sw:挂载参数,表示启用Swap;0 0:dump和fsck参数,Swap无需检查,设为0 0。
方法2:使用UUID(避免文件路径变更)
若担心文件路径修改(如文件被移动),可通过UUID挂载:
- 查看Swap文件的UUID: 输出示例:
/dev/sda1: UUID=“-abcd-1234-abcd-abc” TYPE=“swap”sudo blkid /swapfile
- 将UUID写入
/etc/fstab:echo ‘UUID=-abcd-1234-abcd-abc none swap sw 0 0’ | sudo tee -a /etc/fstab
若需要增加或减少Swap大小,需先禁用现有Swap,再重新创建:
# 1. 禁用Swap sudo swapoff /swapfile
2. 删除旧Swap文件(可选)
sudo rm /swapfile
3. 创建新大小的Swap文件(例如16GB)
sudo fallocate -l 16G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile
4. 重新启用并配置fstab
sudo swapon /swapfile echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab
若不再需要Swap(例如内存充足的服务器),可禁用并删除:
1. 禁用Swap
sudo swapoff /swapfile
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/259591.html