Linux如何创建swap文件?

使用 dd 命令创建指定大小的空文件,用 mkswap 将其格式化为 swap 空间,然后使用 swapon 命令启用它,最后将 swap 文件信息添加到 /etc/fstab 以实现开机自动挂载。

在Linux系统中,Swap(交换空间)是当物理内存(RAM)不足时,将部分内存数据临时存储到磁盘的虚拟内存机制,它能防止系统因内存耗尽而崩溃,尤其对内存有限的服务器或老旧设备至关重要,以下是创建Swap的详细步骤(以Swap文件方式为例,适用于大多数发行版):

Linux如何创建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文件:

Linux如何创建swap文件?

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

添加:

Linux如何创建swap文件?

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        # 移除对应行

注意事项

  1. SSD寿命:频繁读写Swap可能影响SSD寿命,建议在机械硬盘或大内存环境中使用。
  2. 性能瓶颈:Swap速度远低于RAM,仅作为应急方案,升级内存是根本解决之道。
  3. 云服务器:部分云平台(如AWS)需先分配Swap分区权限。
  4. ZRAM:内存紧张设备可考虑ZRAM(压缩内存技术),减少磁盘I/O压力。

引用说明:本文步骤基于Linux内核官方文档及社区最佳实践,参考资源包括Linux Kernel DocumentationUbuntu SwapFaq,命令测试于Ubuntu 22.04/CentOS 9,兼容主流发行版。

通过以上操作,Swap将成为系统内存的可靠后备,定期监控free -hswapon -s可确保其按预期工作。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/33993.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月21日 17:36
下一篇 2025年6月21日 17:45

相关推荐

  • Linux服务器如何发送数据包?

    在Linux服务器上发送网络数据包可使用多种工具:通过ping命令发送ICMP探测包测试连通性;用tcpdump捕获或构造特定流量;借助hping3、nc(netcat)或socat等工具实现TCP/UDP层自定义发包,满足测试或调试需求。

    2025年6月9日
    100
  • Linux输入命令后怎么保存?

    Linux中保存文件的方法: ,1. **命令行编辑器(如vi/vim)**:按Esc键退出编辑模式,输入:wq保存并退出; ,2. **图形界面编辑器**:点击菜单栏”文件”→”保存”,或使用快捷键Ctrl+S。

    2025年6月19日
    100
  • Linux普通用户怎样定期轻松备份?

    Linux普通用户可通过crontab设置定时任务,使用tar命令压缩归档重要文件,或通过rsync同步到本地/远程目录,实现自动化定期备份。

    2025年6月15日
    000
  • 如何快速查看Linux服务器时间同步?

    使用timedatectl status查看时间同步状态,或通过ntpq -p检查NTP服务器连接,chronyc sources -v适用于Chrony服务,确认时间源同步情况。

    2025年6月11日
    000
  • Linux防火墙状态怎么查?

    在Linux中查看防火墙状态: ,- **firewalld** 系统使用 sudo firewall-cmd –state ,- **iptables** 系统使用 sudo iptables -L -n -v ,- **UFW** 防火墙使用 sudo ufw status ,直接运行对应命令即可显示当前状态(需root权限)。

    2025年6月15日
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN