dd
命令创建指定大小的空文件,用 mkswap
将其格式化为 swap 空间,然后使用 swapon
命令启用它,最后将 swap 文件信息添加到 /etc/fstab
以实现开机自动挂载。在Linux系统中,Swap(交换空间)是当物理内存(RAM)不足时,将部分内存数据临时存储到磁盘的虚拟内存机制,它能防止系统因内存耗尽而崩溃,尤其对内存有限的服务器或老旧设备至关重要,以下是创建Swap的详细步骤(以Swap文件方式为例,适用于大多数发行版):
检查现有Swap状态
在开始前,查看系统是否已配置Swap:
sudo swapon --show # 显示活动的Swap free -h # 查看内存和Swap使用情况
若返回结果无Swap或Swap
行显示0B
,则需新建。
创建Swap文件
确定Swap大小
- 建议大小:
- RAM ≤ 2GB:Swap = 2倍RAM
- RAM 2GB~8GB:Swap = 等于RAM
- RAM > 8GB:Swap ≥ 4GB(通常足够)
- 示例:为4GB内存创建4GB Swap:
sudo fallocate -l 4G /swapfile # 快速创建4G文件
若
fallocate
失败(如ext4文件系统),改用dd
:sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 # 创建4GB文件
设置文件权限
Swap文件需严格权限限制:
sudo chmod 600 /swapfile # 禁止非root用户访问 sudo ls -lh /swapfile # 验证权限(应显示 -rw-------)
格式化文件为Swap
sudo mkswap /swapfile # 输出"Setting up swapspace... done"即成功
启用并永久挂载Swap
立即激活Swap
sudo swapon /swapfile # 启用Swap sudo swapon --show # 检查是否生效(显示容量和优先级)
开机自动挂载
编辑/etc/fstab
文件:
sudo nano /etc/fstab
在末尾添加:
/swapfile none swap sw 0 0
保存后验证:
sudo swapoff /swapfile # 临时关闭 sudo swapon -a # 重新挂载所有fstab中的Swap free -h # 确认Swap已加载
优化Swap性能(可选)
调整Swappiness值
控制内存剩余多少时使用Swap(默认值60):
sudo sysctl vm.swappiness=10 # 临时改为10(更低值减少Swap使用)
永久生效:
sudo nano /etc/sysctl.conf
添加:
vm.swappiness=10
运行sudo sysctl -p
应用配置。
提升Swap优先级
若多个Swap存在,可在/etc/fstab
中追加pri=value
(值越高优先级越高):
/swapfile none swap sw,pri=100 0 0
删除Swap文件(备用步骤)
sudo swapoff /swapfile # 停用Swap sudo rm -f /swapfile # 删除文件 sudo nano /etc/fstab # 移除对应行
注意事项
- SSD寿命:频繁读写Swap可能影响SSD寿命,建议在机械硬盘或大内存环境中使用。
- 性能瓶颈:Swap速度远低于RAM,仅作为应急方案,升级内存是根本解决之道。
- 云服务器:部分云平台(如AWS)需先分配Swap分区权限。
- ZRAM:内存紧张设备可考虑ZRAM(压缩内存技术),减少磁盘I/O压力。
引用说明:本文步骤基于Linux内核官方文档及社区最佳实践,参考资源包括Linux Kernel Documentation、Ubuntu SwapFaq,命令测试于Ubuntu 22.04/CentOS 9,兼容主流发行版。
通过以上操作,Swap将成为系统内存的可靠后备,定期监控free -h
和swapon -s
可确保其按预期工作。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/33993.html