现代 Ubuntu 版本默认使用交换文件而不是交换分区。
在 5.0 Linux 内核之前,不可能在btrfs分区上放置交换文件,btrfs文件系统可能会损坏。
现在内核支持 btrfs 分区上的交换文件。我可以在安装的 Ubuntu 上使用交换文件btrfs吗?可能的问题是什么?
Pil*_*ot6 15
可以在 上使用交换文件btrfs,但需要注意一些注意事项。
btrfs如果子卷上有工作交换文件,文件系统不允许创建快照。这意味着强烈建议将交换文件放在单独的子卷上。
让我们假设当前交换已经关闭,/打开/dev/sda1并且 Ubuntu 安装/在@子卷上并且/home在@home子卷上。
安装/dev/sda1到/mnt.
sudo mount /dev/sda1 /mnt
Run Code Online (Sandbox Code Playgroud)
如果您运行ls /mnt,您将看到@,@home以及可能存在的其他子卷。
创建一个新的@swap子卷。
sudo btrfs sub create /mnt/@swap
Run Code Online (Sandbox Code Playgroud)
卸载/dev/sda1距离/mnt
sudo umount /mnt
Run Code Online (Sandbox Code Playgroud)
创建/swap我们计划挂载@swap子卷的目录。
sudo mkdir /swap
Run Code Online (Sandbox Code Playgroud)
将@swap子卷挂载到/swap.
sudo mount -o subvol=@swap /dev/sda1 /swap
Run Code Online (Sandbox Code Playgroud)
创建交换文件。
sudo touch /swap/swapfile
Run Code Online (Sandbox Code Playgroud)
为文件设置 600 权限。
sudo chmod 600 /swap/swapfile
Run Code Online (Sandbox Code Playgroud)
为此文件禁用 COW。
sudo chattr +C /swap/swapfile
Run Code Online (Sandbox Code Playgroud)
以交换文件大小为4G为例。
sudo fallocate /swap/swapfile -l4g
Run Code Online (Sandbox Code Playgroud)
格式化交换文件
sudo mkswap /swap/swapfile
Run Code Online (Sandbox Code Playgroud)
打开交换文件。
sudo swapon /swap/swapfile
Run Code Online (Sandbox Code Playgroud)
现在新的交换应该可以工作了。
您还需要更新/etc/fstab以在启动时安装所有这些。添加两行:
UUID=XXXXXXXXXXXXXXX /swap btrfs subvol=@swap 0 0
/swap/swapfile none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
这UUID是您的/dev/sda1.
欢迎提出意见和建议。