感谢分享
这个要支持下
V23系统只要创建单独的boot分区,是可以把'/"安装在btrfs分区上的。这样是不是更简便一些呢?
V23系统只要创建单独的boot分区,是可以把'/"安装在btrfs分区上的。这样是不是更简便一些呢?
/安装到btrfs后,btrfs只是一个和ext4无异的普通文件系统,只有安装到子卷里才可以进行快照操作。至于boot如果是使用子卷的话就很不建议单独挂载了,不跟随系统一起的话,升级内核容易爆炸,我上回就翻车了
/安装到btrfs后,btrfs只是一个和ext4无异的普通文件系统,只有安装到子卷里才可以进行快照操作。至于boot如果是使用子卷的话就很不建议单独挂载了,不跟随系统一起的话,升级内核容易爆炸,我上回就翻车了
I see
条理清楚,逻辑清晰
参照贵帖,成功把系统迁移到了btrfs子卷中
技术活,当赏
这个图可以换一下吗?我滚轮了都要滚坏了。
或者,换成横式的?
这个图可以换一下吗?我滚轮了都要滚坏了。
或者,换成横式的?
已经换成更直白可视的text
已经换成更直白可视的text
👍
另外是不是可以参考下已有的全盘安装的方案,把“系统关键文件”(Roota含boot使用btrfs)和“个人数据、系统日志、已安装软件、临时文件”(_dde_data使用ext4)分开存放。
这样应该有3个好处吧:
1、节省系统盘的磁盘空间:系统盘只放系统关键文件和一部分安装到/usr下的软件文件。并且这样相当于只对这些文件做快照;
2、方便异常情况下恢复数据:系统盘可以整个格式化掉重装,因为不含个人数据。并且ext4的数据比btrfs好恢复;
3、文件系统性能方面:ext4总体上优于btrfs,所以还是让ext4来当主力。
我现在的分区方式是这样的:
# /dev/nvme0n1p2 LABEL=Roota
UUID=XXXXXXXXXXXXXX / btrfs rw,relatime,ssd,space_cache,subvolid=5,subvol=/ 0 0
# /dev/nvme0n1p1 LABEL=EFI
UUID=XXXX-XXXX /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme0n1p3 数据盘
UUID="XXXXXXXXXXXXX" /data ext4 rw,relatime 0 2
/data/home /home none defaults,bind 0 0
/data/opt /opt none defaults,bind 0 0
/data/var /var none defaults,bind 0 0
/data/root /root none defaults,bind 0 0
# tmpfs,放临时文件
tmpfs /tmp tmpfs size=8g,mode=1777 0 0
然后如果仅还原根分区快照的话,会有一个dpkg已安装软件信息不匹配的情况,现在我是通过手工备份/var/lib/dpkg/info/和/var/lib/dpkg/status这两个来解决的,这么做是否可行,或者是否有更优的方案?
另外是不是可以参考下已有的全盘安装的方案,把“系统关键文件”(Roota含boot使用btrfs)和“个人数据、系统日志、已安装软件、临时文件”(_dde_data使用ext4)分开存放。
这样应该有3个好处吧:
1、节省系统盘的磁盘空间:系统盘只放系统关键文件和一部分安装到/usr下的软件文件。并且这样相当于只对这些文件做快照;
2、方便异常情况下恢复数据:系统盘可以整个格式化掉重装,因为不含个人数据。并且ext4的数据比btrfs好恢复;
3、文件系统性能方面:ext4总体上优于btrfs,所以还是让ext4来当主力。
我现在的分区方式是这样的:
# /dev/nvme0n1p2 LABEL=Roota
UUID=XXXXXXXXXXXXXX / btrfs rw,relatime,ssd,space_cache,subvolid=5,subvol=/ 0 0
# /dev/nvme0n1p1 LABEL=EFI
UUID=XXXX-XXXX /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme0n1p3 数据盘
UUID="XXXXXXXXXXXXX" /data ext4 rw,relatime 0 2
/data/home /home none defaults,bind 0 0
/data/opt /opt none defaults,bind 0 0
/data/var /var none defaults,bind 0 0
/data/root /root none defaults,bind 0 0
# tmpfs,放临时文件
tmpfs /tmp tmpfs size=8g,mode=1777 0 0
然后如果仅还原根分区快照的话,会有一个dpkg已安装软件信息不匹配的情况,现在我是通过手工备份/var/lib/dpkg/info/和/var/lib/dpkg/status这两个来解决的,这么做是否可行,或者是否有更优的方案?
当然是支持自定义部署策略的,我这个只是一个example~如果是个人观点来看,var这种最好是跟着系统来滚动,就不需要担心数据匹配问题,而且假设这么一个场景:系统出问题之后回退到历史快照,但是log还是最新的并没有跟随系统回退,如果是想要分析debug信息还是会有点影响的。
当然是支持自定义部署策略的,我这个只是一个example~如果是个人观点来看,var这种最好是跟着系统来滚动,就不需要担心数据匹配问题,而且假设这么一个场景:系统出问题之后回退到历史快照,但是log还是最新的并没有跟随系统回退,如果是想要分析debug信息还是会有点影响的。
日志这个确实容易混乱,那这种把日志单独拿出来的方案,就还是自己用吧。要是给别人用还是要严谨些😂。
哈哈借楼在安利一下效率为上的鼠标主题
https://bbs.deepin.org/post/270008
目前也就这样用用,完整方案的btrfs应当体验一下suse你会得到更多启发,子卷方案 支持子卷的安装器 快照管理工具 apt钩子 grub钩子 update-grub脚本 等等的全套工具配合
nice, 手贱, 成功按照楼主的方法把系统搞挂了。
nice, 手贱, 成功按照楼主的方法把系统搞挂了。
为什么要用brtfs ,比ext4和xfs好么?
收藏起来,认真学习。。。
Popular Events
More
前期准备
安装准备
btrfs分区划分子卷
根据lsblk得出btrfs分区为/dev/sdb3,挂载
系统部署
初始系统安装
乾坤大挪移
处于总所周知的两个原因,在安装完初始系统后,如果我们想要让系统正常在btrfs卷上运行并使能快照功能,就需要手动将已经安装好的系统迁移到btrfs子卷中
文件配置
数据迁移完成后,由于btrfs卷与系统原安装路径不一致以及系统安装到btrfs子卷后的引导顺序,需要对数个配置文件进行重新配置
"Firmware固件==>efi引导文件==>Grub==>Btrfs母卷==>Btrfs子卷Grub==>Btrfs子卷rootfs"
/boot目录
/boot目录中需要对grub.cfg引导文件进行修改,这里可以分为几步
通过搜索将初始系统的UUID批量替换为btrfs母卷的UUID
观察grub.cfg文件中对系统绝对路径的引用,在"/"前加上"/@main",表明该路径修改后为子卷中的路径
在linux行内核启动参数中添加"rootflags=subvol=@main"指示grub引导btrfs母卷中的@main子卷
/etc目录
EFI目录(如果是UEFI引导的话)
快照部署
由于前文提及@main子卷用于根卷不打算作为常用系统子卷使用,因此在该基础上创建一个@sys快照子卷来作为日用环境
快照创建完成后,由于子卷发生改变,因此需要重复"### 文件配置"步骤来调整新子卷的内容,但通用文件不需要改动
/boot目录
/etc目录
初始化部署
由于"初始化"环境本质上还是以快照子卷的形式存在,因此仅需要参考前面快照部署内容即可完成部署。即对@sys子卷做只读快照操作为同btrfs母卷下的"@snaps/@restore子卷"(支持个人习惯的自定义)以及修改/etc对应文件即可完成.snapshots的"-r" 参数为只读快照
由于通过安装器安装的系统一般还会附属"高级菜单",个人建议直接利用高级菜单,将其描述修改为Restore,initrd和linux路径修改为自己的初始化环境子卷。这样就可以在选Restore菜单引导时进入初始化环境了。
但值得注意的是,建议恢复时是以快照的形式先将"@restore子卷"恢复到一个新子卷中再进行用户配置环节操作,这样就可以极大程度避免初始化环境被破坏了.
参考文献: @AMZ 将uos/deepin运行在btrfs文件系统,并启用快照功能