Linux 用磁盘分区做 swap 分区 用文件做 swap 分区
购买的 1GB 内存的 Linux 小机器,在编译安装 PHP 的时候内存捉急,只好开启 swap 交换分区来增大内存。
[root@VM_139_38_centos php-7.2.12]# cat /proc/swaps
Filename Type Size Used Priority
[root@VM_139_38_centos php-7.2.12]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 51474024 5077996 44089952 11% /
devtmpfs 498688 0 498688 0% /dev
tmpfs 508188 24 508164 1% /dev/shm
tmpfs 508188 428 507760 1% /run
tmpfs 508188 0 508188 0% /sys/fs/cgroup
tmpfs 101640 0 101640 0% /run/user/0
[root@VM_139_38_centos php-7.2.12]# dd if=/dev/vda1 of=/root/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 20.5062 s, 52.4 MB/s
[root@VM_139_38_centos php-7.2.12]# mkswap /root/swapfile
mkswap: /root/swapfile: warning: wiping old ext3 signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=30d4dfc3-5511-438a-a314-15ba10930800
[root@VM_139_38_centos php-7.2.12]# swapon /root/swapfile
swapon: /root/swapfile: insecure permissions 0644, 0600 suggested.
[root@VM_139_38_centos php-7.2.12]# chmod 0600 /root/swapfile
[root@VM_139_38_centos php-7.2.12]# swapon /root/swapfile
swapon: /root/swapfile: swapon failed: Device or resource busy
[root@VM_139_38_centos php-7.2.12]# swapon -s
Filename Type Size Used Priority
/root/swapfile file 1048572 0 -1
[root@VM_139_38_centos shell]# swapon -s
Filename Type Size Used Priority
/root/swapfile file 1048572 515912 -1
有两种方式创建 swap 分区:
- 用磁盘分区,需要先通过 fdisk 命令创建分区
- 用文件系统,通过 dd 命令创建文件
注意:重新分区会导致数据丢失。
- 重新分区前,需要停止所有的 swap 分区:
# swapoff -a
- 对磁盘进行分区,在 fdisk 中用 t 命令将新添的分区设置为 swap 分区()Linux 中 swap 类型对应的分区 id 为 82),最后用 w 命令将操作写入硬盘:
# fdisk /dev/sdb
- 格式化 swap 分区(swap 分区名称要看你自己的机器):
# mkswap /dev/sdb2
- 启动 swap 分区
# swapon /dev/sdb2
- 设置系统启动时自动启用这个交换分区,编辑
/etc/fstab
,加入下面一行
/dev/sdb2 swap swap defaults 0 0
用文件做 swap 分区
- 用 dd 命令创建要作为 swap 分区的文件。count 表示块的数量,1024 块表示总共 1GB(bs*count):
# dd if=/dev/zero of=/root/swapfile bs=1M count=1024
- 用 mkswap 命令格式化 swap 分区文件:
# mkswap /root/swapfile
- 启用 swap 分区文件:
# swapon /root/swapfile
- 系统开机时自启用,在文件
/etc/fstab
中添加一行:
/root/swapfile swap swap defaults 0 0