在 Btrfs 中使用 swap 文件,并设置休眠.
root # btrfs subvolume create /btrfs-root/@swap
root # chmod 700 /btrfs-root/@swap
root # mkdir /.swap
root # vim /etc/fstab
file /etc/fstab
UUID=xxxxxx-xxxxxx-xxxxxx /.swap btrfs defaults,noatime,nospace_cache,nodatacow,subvolid=xxx,subvol=/@swap 0 0
root # mount /.swap
root # truncate -s 0 /.swap/swapfile
root # chattr +C /.swap/swapfile
root # btrfs property set /.swap/swapfile compression none
root # fallocate -l 16G /.swap/swapfile
root # chmod 0600 /.swap/swapfile
root # mkswap -L BTRFSSWAP /.swap/swapfile
root # swapon /.swap/swapfile
root # echo "/.swap/swapfile none swap defaults 0 0" | sudo tee -a /etc/fstab
root # findmnt --verify --verbose
#修改/etc/mkinitcpio.conf ,增加 resume 钩子
root # vim /etc/mkinitcpio.conf
#重新生成initramfs
root # mkinitcpio -p linux-lts
root # mkinitcpio -p linux
file /etc/mkinitcpio.conf
HOOKS=(base udev autodetect modconf block filesystems keyboard btrfs shutdown resume)
#可用此命令获取 swap_device_uuid
root # findmnt -no UUID -T /.swap/swapfile
#可用此命令获取 swap_file_offset
root # filefrag -v /.swap/swapfile | awk '$1=="0:" {print substr($4, 1, length($4)-2)}'
#如果是btrfs的swapfile,则使用以下方式
#下载编译 btrfs_map_physical.c
root # gcc -O2 -o btrfs_map_physical btrfs_map_physical.c
root # ./btrfs_map_physical /.swap/swapfile
#用此公式计算: resume_offset = physical offset / PAGESIZE
#内核是6.1以上的,可用此命令直接获取swap_file_offset
root # btrfs inspect-internal map-swapfile -r /.swap/swapfile
#修改/etc/default/grub,添加resume=UUID=swap_device_uuid,resume_offset=swap_file_offset
#更新启动配置文件
root # grub-mkconfig -o /boot/grub/grub.cfg
file /etc/mkinitcpio.conf
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 resume=UUID=xxxxxx-xxxxxx-xxxxxx resume_offset=xxxxxx"
本文作者是一位开源理念的坚定支持者,所以本文内容遵照开源的精神发布。
无担保:本文作者不保证此文内容准确无误,亦不承担任何由于使用此文档所导致的损失。
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他作品有兴趣,可以在如下位置查看现有的作品集:
Tim 作品集 [ https://tiimmm.com/ ]
联系方式
由于作者水平有限,因此不能保证此文内容准确无误。如果你发现了此文中的错误(哪怕是错别字也好),请来信指出,任何提高此文质量的建议我都将虚心接纳。
Email: tiimmm dot chen at gmail dot com
网站制作者:Author:tiimmm dot chen at gmail dot com, Welcome to email for discussion!