23.5 Swap 分区
如果在安装系统时未设置 swap(交换分区),则只能通过 dd 命令创建交换分区文件或 ZFS 卷来实现。因为无论是 UFS 还是 ZFS,都不支持缩小文件系统分区。
传统的 dd 单个文件
创建一个大小为 8GB(1GB = 1024MB,如需更大容量,请读者做个简单的计算题)的交换文件 /usr/swap0:
# dd if=/dev/zero of=/usr/swap0 bs=1M count=8192 status=progress # bs=1M 表示使用 1MB 块写入零;status=progress 用于显示写入进度
8416919552 bytes (8417 MB, 8027 MiB) transferred 4.011s, 2098 MB/s # 该输出为实时刷新信息
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 4.071005 secs (2110028088 bytes/sec)设置交换分区文件权限,仅允许所有者读写:
# chmod 0600 /usr/swap0若要立即使用,可将 /usr/swap0 文件挂载为内存磁盘(memory disk)md0,并启用交换空间:
# mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0为了在重启后仍能生效,还需在 /etc/rc.conf 文件中添加下行:
swapfile="/usr/swap0"以定义交换文件路径。
使用 ZFS 卷充当 swap
警告
本节操作可能会影响系统崩溃转储(crash dump)。
上述命令中,参数 -V 用于创建 ZFS 卷(zvol)而非 ZFS 文件系统。ZFS 默认池名称为 zroot。
在 /etc/fstab 中添加 ZFS zvol 交换分区挂载项,实现开机时自动挂载:
写入后,可使用命令 mount -al 检查(-a 表示挂载 /etc/fstab 中所有条目;-l 表示仅挂载带 late 标记的分区,而不挂载普通分区),确保无错误输出。参见 man mount(8)
查看 swap 使用量
以更易读的单位显示系统交换空间信息:
选项 -h 表示以可读性较高的格式(human-readable)输出。参见 man swapinfo(8)。
可以看到,/dev/nda0p3 为交换分区,大小为 2GB,已使用 0。
最后更新于