\#0 一不小心内存就不够了
当初装系统时不知道脑子抽了还是咋地,特意倒回去把Swapfile禁用掉了,然后又脑子抽了选了个Btrfs
.
今天内存意外的耗尽了,整个系统假死,键盘敲碎了都没动静,于是决定启用Swap.
以下是标准剧情:
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
$ sudo mkswap /swapfile
$ sudo chmod 600 /swapfile
$ sudo swapon /swapfile
结果万万没想到:
swapon: swapfile: swapon failed: Invalid argument
我:?
\#1 再来一次...什么不支持?
于是不信邪的我再来了一次:
$ sudo rm /swapfile
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
$ sudo mkswap /swapfile
$ sudo chmod 600 /swapfile
$ sudo swapon /swapfile
嗯...
swapon: swapfile: swapon failed: Invalid argument
于是搜索了一下.
嗯...btrfs不支持swapfile...完全明白了...
个鬼啊!给我支持啊baka!
\#2 实际上...是支持的...
感谢Arch wiki,虽然不用你家的系统,但是你家wiki是真的香
仔细翻阅Arch Wiki,从Kernel5.0+开始,内核提供了对Btrfs的Swapfile支持,Wiki内指出了一条在Btrfs启用Swapfile的指南:
首先创建一个0 byte的文件,并设置No_COW
属性,同时禁用压缩:
# truncate -s 0 /swapfile
# chattr +C /swapfile
# btrfs property set /swapfile compression none
再利用dd
将文件扩容到想要的大小:
# dd if=/dev/zero of=/swapfile bs=1M count=4096
一套带走:
# mkswap /swapfile
# swapon /swapfile
在Ubuntu 20中,swapon
貌似会自动将swapfile加入fstab
里自动挂载,因此无需手动添加.
于是,一块在Btrfs
上的swap就开好了.
\#3 记住...
以后不要乱选文件系统.
好奇坑死猫.
你以为只是加强版ext4,实际上是加墙版ext4.
其实btrfs还是挺好的吧,分区快照,可灵活扩容,mint上自带的timeshift可以使用btrfs的快照功能实现根文件系统自动备份,有时可以把搞炸的系统恢复