[Share Experiences] 【Btrfs】多系统建立数据中转区,不管用哪个系统都能同效工作
Tofloor
poster avatar
AMZ
deepin
2024-04-11 21:27
Author

我的现状:

  1. 硬件方面我的电脑有两块ssd,其中一块我安装了windows,不可避免的要时常切过来处理一些事务,不可替代的存在,且作为可靠性的存在,这个块盘我不会去动;
  2. 另一块我安装了deepin、uospro、archlinux 并且全部使用同结构的Btrfs子卷方案,使用timeshift管理快照和切换系统。uospro承载着稳定性,代表着商用的进步我要持续看到,deepin代表着社区前沿的更新和变化我要拥抱,如果你想开20个网页还不发热我还得使用xfce+archlinux这样轻量化的系统为我保底。

我的需求:

  1. 虽然我拥有多个系统,可是我也不想过多的切换,我希望可以在任何一个系统下完成工作,我不希望因为某些事情不断的切换,或者到快照里去翻找别的系统的文件,这很没有效率,所以我希望文件是多系统可用的;
  2. 由于目前使用timeshift作为主要的快照管理器,我发现我并不能确定多个系统下的home目录都代表了什么时间段的文件,新的还是旧的,我该如何定期删除哪些快照,如果有的系统多时间不切换过去,那里的文件将被遗忘,而且由于文件来回的倒腾不可避免的存了多份副本,对于磁盘空间占用影响也是极大的。而且我要保证timeshift要求的@&@home两个子卷的结构。

于是在这样的背景下我构建设计了以下方案:

1、我要重新构建多系统的数据结构:

磁盘分区视角:

│──btrfs分区
│      ├── @         #根目录数据子卷
│      └── @home     #家目录数据子卷

@home目录视角:

│──@home
│      ├──amz              #每个系统都使用amz用户名,保留一致的习惯
│      ├──data
│      │  ├── Desktop      #系统可能产生数据的目录没来得及归档,单独列出是为了后边fstab好理解一些,将分别链接到amz中对应目录
│      │  ├── Documents
│      │  ├── Downloads
│      │  ├── Music
│      │  ├── Videos
│      │  ├── Pictures
│      │  ├── Userdata     #用户数据
│      ├──└── Workdata     #工作数据
│      ├── deepin          #deepin用户目录,将通过fstab链接为amz
│      ├── uos             #uos用户目录,将通过fstab链接为amz
│      └── arch            #arch用户目录,将通过fstab链接为amz

按以上结构迁移数据

  1. 重写fstab
#deepin的fstab如下

UUID=D5DC-E94B                                              /boot/efi        vfat    umask=0077 0 2
UUID=d3b3c95e-46e3-4500-ae9e-489f6be1f4bc	 none	   swap   defaults,pri=-200
tmpfs                                                                /tmp           tmpfs   defaults,noatime,mode=1777 0 0
UUID=0a79ef53-4ea9-4cdb-9b5e-5b7fb8ff0c64    /                   btrfs    subvol=/@,defaults,discard=async,ssd,rw 0 0
UUID=0a79ef53-4ea9-4cdb-9b5e-5b7fb8ff0c64    /home           btrfs    subvol=/@home,defaults,discard=async,ssd,rw 0 0
/home/deepin              /home/amz    none    defaults,bind,rw 0 0
/home/data/Userdata       /home/amz/个人      none    defaults,bind,rw 0 0
/home/data/Workdata       /home/amz/工作      none    defaults,bind,rw 0 0
/home/data/Desktop        /home/amz/Desktop      none    defaults,bind,rw 0 0
/home/data/Documents      /home/amz/Documents      none    defaults,bind,rw 0 0
/home/data/Downloads      /home/amz/Downloads      none    defaults,bind,rw 0 0
/home/data/Music          /home/amz/Music      none    defaults,bind,rw 0 0
/home/data/Videos         /home/amz/Videos      none    defaults,bind,rw 0 0
/home/data/Pictures       /home/amz/Pictures      none    defaults,bind,rw 0 0
#uos的fstab如下

UUID=D5DC-E94B                                              /boot/efi        vfat    umask=0077 0 2
UUID=d3b3c95e-46e3-4500-ae9e-489f6be1f4bc	 none	   swap   defaults,pri=-200
tmpfs                                                                /tmp           tmpfs   defaults,noatime,mode=1777 0 0
UUID=0a79ef53-4ea9-4cdb-9b5e-5b7fb8ff0c64    /                   btrfs    subvol=/@,defaults,discard=async,ssd,rw 0 0
UUID=0a79ef53-4ea9-4cdb-9b5e-5b7fb8ff0c64    /home           btrfs    subvol=/@home,defaults,discard=async,ssd,rw 0 0
/home/uos              /home/amz    none    defaults,bind,rw 0 0
/home/data/Userdata       /home/amz/个人      none    defaults,bind,rw 0 0
/home/data/Workdata       /home/amz/工作      none    defaults,bind,rw 0 0
/home/data/Desktop        /home/amz/Desktop      none    defaults,bind,rw 0 0
/home/data/Documents      /home/amz/Documents      none    defaults,bind,rw 0 0
/home/data/Downloads      /home/amz/Downloads      none    defaults,bind,rw 0 0
/home/data/Music          /home/amz/Music      none    defaults,bind,rw 0 0
/home/data/Videos         /home/amz/Videos      none    defaults,bind,rw 0 0
/home/data/Pictures       /home/amz/Pictures      none    defaults,bind,rw 0 0
#arch的fstab如下

UUID=D5DC-E94B                                              /boot/efi        vfat    umask=0077 0 2
UUID=d3b3c95e-46e3-4500-ae9e-489f6be1f4bc	 none	   swap   defaults,pri=-200
tmpfs                                                        /tmp           tmpfs   defaults,noatime,mode=1777 0 0
UUID=0a79ef53-4ea9-4cdb-9b5e-5b7fb8ff0c64        /           btrfs    subvol=/@,defaults,discard=async,ssd,rw 0 0
UUID=0a79ef53-4ea9-4cdb-9b5e-5b7fb8ff0c64        /home       btrfs    subvol=/@home,defaults,discard=async,ssd,rw 0 0
/home/arch                /home/amz    none    defaults,bind,rw 0 0
/home/data/Userdata       /home/amz/个人      none    defaults,bind,rw 0 0
/home/data/Workdata       /home/amz/工作      none    defaults,bind,rw 0 0
/home/data/Desktop        /home/amz/桌面      none    defaults,bind,rw 0 0
/home/data/Documents      /home/amz/文档      none    defaults,bind,rw 0 0
/home/data/Downloads      /home/amz/下载      none    defaults,bind,rw 0 0
/home/data/Music          /home/amz/音乐      none    defaults,bind,rw 0 0
/home/data/Videos         /home/amz/视频      none    defaults,bind,rw 0 0
/home/data/Pictures       /home/amz/图片      none    defaults,bind,rw 0 0

windows那边安装btrfs驱动即可访问! 不出意外deepin\uos这边微信数据都互通了,arch那边用到了容器技术,数据结构可能不一致,不知道deepin和uos个别应用存在文档里的数据会不会冲突,拭目以待吧

先写方案后施工,你们先看看,我去干活了!

后续来了!!!

经过测试得出以下结论和心得:

1.方案可行可用,只是用下来重要文件是否放到timeshift一起快照存在争议,更恰当的可能是snapper这类全能软件,或者自己写个脚本时不时执行以下独立起来比较好;

2.这个方案会触发deepin系两个关于文件管理的特性,第一个是如果你在fstab中使用了--bind这样的挂在参数,那么文件管理就会将系统盘链接为你的家用户目录,第二个是这种多重bind会造成文件管理无法删除文件,实际上是移动到回收站,你如果用快捷键直接删除那是可以的,rm也可以,其它文官也可以,非权限和属性问题;,这个其实非常影响体验;

3、为了桌面两个系统不会混乱,建议不要桌面放启动图标;

4、在打快照时候默认@、@home都打,在切换系统时只恢复@就能实现继承当前数据data的当前状态,保持换系统不中断文件的处理。

Reply Favorite View the author
All Replies
f@deepin
deepin
2024-04-11 21:44
#1

Btrfs子卷挂载 + mount --bind

这些技术算是被你玩明白了joy

Reply View the author
Amz
deepin
2024-04-11 21:49
#2
It has been deleted!
AMZ
deepin
2024-04-11 21:54
#3

现在有点蒙,我要想想如何优雅的把三个系统倒腾到目标

Reply View the author
sshnuke
deepin
2024-04-11 22:11
#4

楼主的方案非常具有创新性,通过Btrfs文件系统和timeshift快照管理器实现了多系统间的数据共享和高效管理。这样的设计不仅能够减少系统间切换的频率,提高工作效率,还能有效利用磁盘空间,避免不必要的数据冗余。

对于楼主提到的关于不同操作系统间数据可能存在的冲突问题,我认为这是一个值得关注的细节。可能需要进一步测试和观察,以确保不同系统间的文件和数据能够和谐共存,不会产生冲突。同时,建议楼主在实施过程中记录下遇到的问题和解决方案,这样不仅能够帮助自己优化系统配置,也能为社区成员提供宝贵的经验分享。

此外,对于使用容器技术的arch系统,可能需要额外考虑数据隔离和安全性的问题。容器技术虽然能够提供一定程度的隔离,但在共享数据时还是需要谨慎处理,以防潜在的安全风险。

总的来说,楼主的方案对于多系统用户来说是一个很大的启发,期待楼主分享更多实施后的经验。同时,也希望社区中的其他成员能够提供自己的见解和建议,共同探讨和完善这一方案。期待楼主的后续更新,祝施工顺利!

Reply View the author
f@deepin
deepin
2024-04-11 22:40
#5
sshnuke

楼主的方案非常具有创新性,通过Btrfs文件系统和timeshift快照管理器实现了多系统间的数据共享和高效管理。这样的设计不仅能够减少系统间切换的频率,提高工作效率,还能有效利用磁盘空间,避免不必要的数据冗余。

对于楼主提到的关于不同操作系统间数据可能存在的冲突问题,我认为这是一个值得关注的细节。可能需要进一步测试和观察,以确保不同系统间的文件和数据能够和谐共存,不会产生冲突。同时,建议楼主在实施过程中记录下遇到的问题和解决方案,这样不仅能够帮助自己优化系统配置,也能为社区成员提供宝贵的经验分享。

此外,对于使用容器技术的arch系统,可能需要额外考虑数据隔离和安全性的问题。容器技术虽然能够提供一定程度的隔离,但在共享数据时还是需要谨慎处理,以防潜在的安全风险。

总的来说,楼主的方案对于多系统用户来说是一个很大的启发,期待楼主分享更多实施后的经验。同时,也希望社区中的其他成员能够提供自己的见解和建议,共同探讨和完善这一方案。期待楼主的后续更新,祝施工顺利!

怎么一股子AI味儿呢joy

Reply View the author
Lwh2008-Equinox
deepin
2024-04-12 17:01
#6
sshnuke

楼主的方案非常具有创新性,通过Btrfs文件系统和timeshift快照管理器实现了多系统间的数据共享和高效管理。这样的设计不仅能够减少系统间切换的频率,提高工作效率,还能有效利用磁盘空间,避免不必要的数据冗余。

对于楼主提到的关于不同操作系统间数据可能存在的冲突问题,我认为这是一个值得关注的细节。可能需要进一步测试和观察,以确保不同系统间的文件和数据能够和谐共存,不会产生冲突。同时,建议楼主在实施过程中记录下遇到的问题和解决方案,这样不仅能够帮助自己优化系统配置,也能为社区成员提供宝贵的经验分享。

此外,对于使用容器技术的arch系统,可能需要额外考虑数据隔离和安全性的问题。容器技术虽然能够提供一定程度的隔离,但在共享数据时还是需要谨慎处理,以防潜在的安全风险。

总的来说,楼主的方案对于多系统用户来说是一个很大的启发,期待楼主分享更多实施后的经验。同时,也希望社区中的其他成员能够提供自己的见解和建议,共同探讨和完善这一方案。期待楼主的后续更新,祝施工顺利!

希望不要用AIjoy

大部分时候简洁明了的回复更使人能分泌更多的多巴胺:-)

Reply View the author