V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kokerkov
V2EX  ›  Linux

Btrfs 的“快照”功能能实现和 Win 上的“系统还原点”一样的功能吗?

  •  
  •   kokerkov · 17 天前 · 1177 次点击

    我不在乎他们实现的方式和更高级的应用( Btrfs 应该是可以备份其他数据的),我只想知道 openSUSE 默认开启的 snapper 能否真的避免某一次升级就把系统搞崩了( typical linux experenice )

    6 条回复    2024-11-05 09:32:29 +08:00
    yanqiyu
        1
    yanqiyu  
       17 天前 via Android   ❤️ 1
    除非是把 bootloader 搞炸了是可以实现一键回滚的(我记得 suse 可以在 grub 里面选择启动到某个快照)

    不过想要避免更新导致爆炸真正的银弹是 Transactional Update ,比如 Fedora 的 silverblue 之类的 ostree 变种和 suse 的 micro os 版本。
    march1993
        2
    march1993  
       17 天前
    @yanqiyu overlayfs 我觉得更合理
    bczhc
        3
    bczhc  
       17 天前
    最简单的把 btrfs 里快照挂载到`/`上就可以实现了。还能做到 grub 里按 e 键随意决定进哪个子卷。不过 efi 分区不知能不能是 btrfs ,一般还是多留几个内核镜像,只要有一个能进系统就能修……
    chundi
        4
    chundi  
       17 天前
    snapper 自动打的快照一般情况没什么问题,比如下边的 792 这个就是直接回的 786 这个快照,

    # │ 已激活 │ 类型 │ 描述 │ 用户数据
    ......
    782 │ 否 │ post │ │ important=yes
    792* │ 是 │ single │ writable copy of #786 │
    ......

    我回滚过很多次,常见的回滚情况比如系统更新了但网卡驱动还没更,上不了网,或者某些库被移除了部分软件打不开之类的,启动时 grub 菜单选一个只读的快照进去,打开终端 snapper rollback 之前的快照就可以了,很方便。
    但也不是绝对的可以无痛回滚,比如 KDE5 升级到 KDE6 这样的大版本升级,在我电脑上就升挂了,回滚也不好使,不过就遇到过这一次。
    yanqiyu
        5
    yanqiyu  
       16 天前
    @chundi #4
    > 我回滚过很多次,常见的回滚情况比如系统更新了但网卡驱动还没更,上不了网,或者某些库被移除了部分软件打不开之类的,启动时 grub 菜单选一个只读的快照进去,打开终端 snapper rollback 之前的快照就可以了,很方便。

    我猜原因就是回滚之后 `/usr/lib/modules/` 里面的内核版本和启动的时候用的对不上了?不过我不太清楚 snapper 会不会连着 /boot 里面的内核镜像一起快照了,没有的话就几乎肯定会有这个问题。

    这时候就要推销 silverblue 这种 ostree 模式了,保证内核在内的一起回滚。

    > 但也不是绝对的可以无痛回滚,比如 KDE5 升级到 KDE6 这样的大版本升级,在我电脑上就升挂了,回滚也不好使,不过就遇到过这一次。

    有一种情况是升级的时候,第一次登陆 KDE 的组件对于什么数据库做了升级,然后回滚之后旧的 KDE 不认识了,然后就炸了。
    chundi
        6
    chundi  
       16 天前
    @yanqiyu #5
    > 我猜原因就是回滚之后 `/usr/lib/modules/` 里面的内核版本和启动的时候用的对不上了?不过我不太清楚 snapper 会不会连着 /boot 里面的内核镜像一起快照了,没有的话就几乎肯定会有这个问题。

    我的系统安装时默认只给分了两个分区,一个根分区是 btrfs ,一个 /home 是 xfs ,/boot 放在根分区,snapper 默认是会打上快照的。不过 /boot 里都是软链,指向的 /usr/lib/modules 。回滚主要是网卡驱动我用的第三方驱动,不支持 dkms ,升级内核后需要重新编译,但有的时候系统升级后部分库也升级了,如果网卡驱动还没跟着更新编译会通不过,就上不了网了,只能先回退,等网卡驱动更新。

    > 有一种情况是升级的时候,第一次登陆 KDE 的组件对于什么数据库做了升级,然后回滚之后旧的 KDE 不认识了,然后就炸了。

    可能确实是这个原因。当时系统升级后可以进入桌面环境,但只有一个提示正在处理个人数据什么的,等了很久没有任何反应,强制重启后就进不去桌面了。手动回滚到了上一个版本然后就炸了。当时也没折腾,命令行备份了数据直接重装了。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3050 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 13:11 · PVG 21:11 · LAX 05:11 · JFK 08:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.