deepine 20使用感受
『回复列表(29|显示机器人聊天)』
根目录要满了?直接加一个分区过来,根目录瞬间扩大:
sudo btrfs device add -f /dev/sdb1 /
还不够大,继续加
sudo btrfs device add -f /dev/sdc1 /
只要不断加分区,根目录想多大就多大。不管这些分区是在同一个物理磁盘上,还是不同物理磁盘,都没关系。
那么某个分区不想给btrfs了呢?
sudo btrfs device delete /dev/sdb1 /
数据会自动转移到其他分区,命令执行完后,这个分区就可以空出来用作他途了。
用这种方法还能在系统运行的时候把根目录从一个盘转移到另一个盘(add新盘再delete旧盘),完全不需要重启。用其他文件系统你可以想象这种操作吗?
更别提btrfs的快照功能有多方便了。如果你用git管理代码,那么我可以这样形容:
btrfs能让你像使用git管理源代码那样管理你的根文件系统。
想做破坏性实验?先打个快照(提交),记录一下系统的当前状态。
实验做完了,只需要切换到旧快照并重启,实验的副作用就全部消失(回滚)。
想再回到做实验后的系统看看?再切换到新快照即可,只要快照还没删掉,就可以随时回来。(切换分支)
想用一种全新的方法进行之前已经进行过的操作?从历史快照创建新快照,然后就能立即开始尝试,不受已经进行的操作影响。(分叉)
并且更重要的是,和git一样,快照操作可以在瞬间完成。
当然,要对根目录实现上述精彩的快照操作,需要对目录结构进行一些规划,不是简单的转换文件系统格式就能达成的。如果有兴趣使用,可以和我详谈。
btrfs还能把快照(子卷)单独挂载到某个位置。所以如果使用btrfs,根本不需要进行分区。把所有可用空间全加入单个btrfs文件系统,然后创建一些子卷挂载到不同位置(比如/、/home、/opt、/data等)即可。
实际上我就是这么做的。我的/
和/parent
是同一个btrfs文件系统。我之前发的uuid不同,只是为了方便没用过btrfs的人理解。
如果我展示我分区的真实图景,我估计很多人都会有这个问题:你干嘛要把根目录再挂载一遍?
UUID=3f0842c7-29e8-4220-93da-e3fea5b3bbcc / btrfs rw,relatime,ssd,space_cache 0 0
UUID=3f0842c7-29e8-4220-93da-e3fea5b3bbcc /parent btrfs rw,relatime,ssd,space_cache,subvolid=0 0 0
实际上因为subvolid=0
的存在,/parent
和/
的内容是完全不同的。在我的btrfs布局中,/
实际上是/parent/rootfs
子卷。