[Tutorials] 关于btrfs子卷的用法
Tofloor
poster avatar
璀璨星空
deepin
2024-08-27 18:10
Author

前言

之前见别人说不btrfs是如何如何的好,就萌生出了试试的念头,然后看了看论坛上相关教程,自己开始尝试折腾一开始也看不懂感觉好复杂啊,折腾了几次感觉还行,其实自己做一遍后感觉还蛮简单的。注意先看完教程再决定是否操作

正篇

前期准备

首先准备部署btrfs所需的环境与物品,一个安装好的系统,一个带有live功能的启动U盘(用deepin23做的就行)

注意:我这里是在一个btrfs分区上安装的deepin23,所以都是在本分区内进行操作

开搞

第一步进入live环境:

先进入live环境这样才好操作,我这里用的是ventoy创建的启动盘所以找到deepin23镜像即可,进入镜像后选择第一个就能进入live环境

(图先欠着后期补)

第二步修改密码:

进入系统后第一步先更改密码,因为有些操作是需要密码才行的,打开终端输入 sudo passwd deepin 后点击回车设置一个简单的密码即可,毕竟只是一个live的密码下次进来还得重新设置

image.png

第三步创建子卷:

在系统分区上创建一个子卷命令是 sudo btrfs subvolume create /************后边的 /*******是系统盘所在具体目录比如我这里通过文件管理看到的左侧的分区点击进去就能进到系统盘所在了,然后注意坐上方哪里的@deepin这个目录,每个人的都不一样,我这里是叫这个名字,用鼠标右键点击它然后选择复制路径,然后替换掉 /*******

image.png

如我这里的是 sudo btrfs subvolume create /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell(这里可以先打开文本编辑器复制到里边好编辑)然后在这串命令的最后加上你想要的子卷名字如我这里想要一个@123,我这里最终的命令就是 sudo btrfs subvolume create /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/@123将这段代码复制到终端点击回车即可

image.png

这样子卷就创建好了,下边就需要把系统复制到里边。

第四步将整个系统搬运一份到子卷中:

打开文件管理器点击右上角的三个横线,再选择设置,

image.png

再在文件与目录这里给我圈起来的这个勾选上。然后关闭这个页面即可
image.png

这样就能看到隐藏起来的一些目录了。然后按住左下角的Ctrl按键选择除了刚刚创建的子卷外的其它文件目录,再将这些拖拽到终端里它回自动带出路径
image.png

复制下来这些目录路径注意前后的单引号不要,然后先粘贴到文本里好编辑
image.png

现在我们需要用到一个代码 sudo rsync -avr来复制一份这些数据,如我这里将文本里的那些目录复制到这串代码后边,

sudo rsync -avr /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/.cache /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/.config /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/dev /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/etc /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/.dbus /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/home 

因为刚刚将拖动目录到终端的时候已经占领了终端的命令行所以另开一个即可,现在的终端界面关闭即可,然后将这串命令复制到终端上,回车等他跑完即可,

第五步修改配置信息:

进入到子卷中,右键选择管理员模式,这样我们才好操作,要不然有些文件进不去也无法修改文件配置。

第一个是/boot/grub/grub.cfg就是boot目录下的grub目录中的grnb.cfg配置文件

由于我这个本身就是在子卷中之前是为了演示,我这个子卷名字就是@deepin,所以将这里的@deepin换成你们自己的子卷名字即可
image.png

image.png

image.png

然后将linux与initrd这两个开头的给修改了在路径前边也加上子卷的名字下边所示还要在Linux这个地方再加上rootflags=subvol=@deepin-Dell,这里的@deepin换成你们自己的子卷名字,注意这里的linux与initrd有好几个都要换了不止这一组。换好后保存退出

linux	/@deepin-Dell/boot/vmlinuz-6.6.47-amd64-desktop-hwe root=UUID=3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f ro rootflags=subvol=@deepin-Dell  splash quiet   DEEPIN_GFXMODE=$DEEPIN_GFXMODE
echo	'Loading initial ramdisk ...'
initrd	/@deepin-Dell/boot/initrd.img-6.6.47-amd64-desktop-hwe
第二个是/etc/default/grub就是etc目录下的default目录中的grnb配置文件

这个只需添加一串 rootflags=subvol=子卷名字即可,添加完后保存退出

image.png

第三个是/etc/fstab就是etc目录中的fstab配置文件如我这里的是

将其中的subvolid=5,subvol=/换成subvol=@deepin-Dell即可

更换前

# /dev/sdb3
UUID=3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f	/         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/	0 0

更换后

# /dev/sdb3
UUID=3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f	/         	btrfs     	rw,relatime,ssd,discard=async,space_cache=v2,subvol=@deepin-Dell	0 0

第四个更换efi引导的配置

由于efi分区默认是不挂载的需要我们自行挂载或者重启进入安装好的系统中,在到/boot/efi中修改相应的文件,这里们就不重启系统了就直接在live环境下配置,先打开磁盘管理器,

image.png

我这里efi分区所在的名字是/dev/sdb1所以将它挂在即可,选中这个分区后点击上方中间的挂载图标,记住这个挂载的目录

image.png

打开文件管理器有点选择编辑地址,改成刚才挂载的目录/mnt

image.png

点击回车

image.png

然后修改/EFI/BOOT/grub.cfg与/EFI/deepin/grub.cfg这两个文件

都是将第二行的路径前边添加上子卷的目录路径改好保存即可

search.fs_uuid 3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f root hd1,gpt3 
set prefix=($root)'/@deepin-Dell/boot/grub'
configfile $prefix/grub.cfg
第六步删除原本的系统文件:

到这一步差不多都配置好了,可以直接删除原本的系统文件,但是为了确保修改的有没有问题可以先重启系统看看是否能进入如果能进入且看不到之前创建的子卷那就地代表成功了,然后再重启进入或者将系统盘挂载到/mnt目录上,为了减少代码动用量我这里选择是进入live进行操作

然后进行第一步、第二步。再第通过第四步获得那些之前目录的路径后用 sudo rm -rf来代替之前的 sudo rsync -avr后边的目录内容都一样就行。如:

sudo rm -rf /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/.cache /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/.config /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/dev /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/etc /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/.dbus /media/deepin/3073ef78-38e3-4e3b-abb0-4fb52c8c4d7f/@deepin-Dell/home
第七步创建与删除快照

现在基础配置已经完成了,就差创建快照与删除快照这两个操作了,这里我门用几个命令

创建快照命令:

普通快照:sudo btrfs subvolume snapshot /mnt/@ /mnt/@a

这个例子是挂载在/mnt下的子卷@在/mnt下创建一个名为@a的快照

只读快照:sudo btrfs subvolume snapshot -r /mnt/@a /mnt/@snaps/@deepin

这个例子是挂载在/mnt下的子卷@在/mnt下的@snaps目录中创建一个名为@deepin的只读快照(@snapa这个目录需要自己提前创建,只读快照创建好后无法修改它的任何东西)

恢复快照命令:

其实恢复快照就是将之前备份好的快照改成我门现在正在用的就行,如上边的@deepin这个只读快照,我们现在正在用一个名叫@a的来当系统,那么再创建一个它的快照后,修改成@a就算是恢复快照了,再将它就改正@a之前先把之前的修改成别的名字或者删除后再修改

创建要恢复的快照:sudo btrfs subvolume snapshot /mnt/@snaps/@deepin /mnt/@a1

删除快照名令:

删除快照:sudo btrfs subvolume delete /mnt/@snaps/@deepin

将/mnt下的@snaps目录中的一个名为@deepin的快照删除

结语

到这里算是彻底完成了关于btrfs的内容了,再折腾之前建议诸位先在虚拟机上折腾一两遍在到实体机上开造,这个看着挺复杂其实也就说把系统拷贝到子卷中然后修改几个文件,然后再将原本的系统删除,再创建一个快照备用而已还是蛮简单的

本篇教程参考[btrfs正当时] 如何将系统正确安装到btrfs子卷并捏一个恢复环境将uos/deepin运行在btrfs文件系统,并启用快照功能

如果想要使用工具来创建与恢复、删除快照的话建议观看将uos/deepin运行在btrfs文件系统,并启用快照功能

Reply Favorite View the author
All Replies
neko
deepin
Ecological co-builder
2024-08-27 18:35
#1

其实你可以直接用

btrfs sub snap / /@deepinos

快照的方式直接创建系统子卷,而不必自己手动复制emmm,虽然我以前也是这么干的XD.

Reply View the author
璀璨星空
deepin
2024-08-27 18:44
#2
neko

其实你可以直接用

btrfs sub snap / /@deepinos

快照的方式直接创建系统子卷,而不必自己手动复制emmm,虽然我以前也是这么干的XD.

shocked

原来还有省事的方法啊

Reply View the author
感恩的心
deepin
2024-08-27 18:47
#3

欢迎投入btrfs怀抱

Reply View the author
璀璨星空
deepin
2024-08-27 18:55
#4
感恩的心

欢迎投入btrfs怀抱

没办法谁让deepin不稳定呢

proud

Reply View the author
hanzn-zzx
deepin
2024-08-27 18:57
#5

like

Reply View the author