FreeBSD系统使用 ZFS 添加交换空间swap
编译VSCode的时候,报错9
> code-oss-dev@1.99.2 gulp
> node --max-old-space-size=8192 ./node_modules/gulp/bin/gulp.js vscode-linux-x64-min[13:03:11] Using gulpfile ~/vscode-1.99.2/gulpfile.js
[13:03:11] Starting 'vscode-linux-x64-min'...
[13:03:11] Starting clean-out-build ...
[13:03:11] Finished clean-out-build after 40 ms
[13:03:11] Starting build-date-file ...
[13:03:11] Finished build-date-file after 1 ms
[13:03:11] Starting compile-api-proposal-names ...
[13:03:11] Starting compilation api-proposal-names...
[13:03:12] Finished compilation api-proposal-names with 0 errors after 368 ms
[13:03:12] Finished compile-api-proposal-names after 392 ms
[13:03:12] Starting compile-src ...
[13:03:50] [mangler] Done collecting. Classes: 8580. Exported symbols: 10525
[13:03:53] [mangler] Done creating class replacements
[13:03:53] [mangler] Starting prepare rename edits
[13:03:55] Starting compilation...
*** Signal 9Stop.
make: stopped in /usr/ports/editors/vscode
经多方排查,可能是内存空间不够导致的。整个系统是8G空间,原来设定的swap交换空间是2G,使用htop等监控软件,可以明显看到内存爆掉的情况,于是决定两条腿走路:1 找一台内存更多的机器来编译 2 增加swap空间大小试试。
于是就有了下面的实践。
使用 ZFS 添加交换空间
-
创建 ZFS 卷:
- 如果系统使用 ZFS,可以创建一个指定大小的 ZFS 卷作为交换空间:
bashCopy Code
zfs create -V 1G -b 8K zroot/swap
- 这里
zroot/swap
是 ZFS 卷的名称,可以根据需要更改。
- 如果系统使用 ZFS,可以创建一个指定大小的 ZFS 卷作为交换空间:
-
设置交换空间大小:
- 使用
zfs set
命令设置交换空间的大小:bashCopy Code
zfs set volsize=1G zroot/swap
- 使用
-
启用交换空间:
- 使用
swapctl
命令启用新的交换空间:bashCopy Code
swapctl -a /dev/zvol/zroot/swap
- 使用
原来有2G交换空间,新加了4G,当前有6G swap交换空间。
用了6G swap空间后,还是报错,换成8G试试。
这样设定好后,是一次性的,这样重启机器后会恢复成原来的大小。为了让设定一直起作用,可以编辑 /etc/fstab
文件,添加以下行以在系统启动时自动启用交换空间:
/dev/zvol/zroot
/swap none swap sw 0 0
重启系统后,可以使用swapinfo命令来查看是否生效。也可以使用top命令来看Swap的空间大小来确认。