![在线重新挂载具有不同子卷的根文件系统的 btrfs(快照)](https://linux22.com/image/27612/%E5%9C%A8%E7%BA%BF%E9%87%8D%E6%96%B0%E6%8C%82%E8%BD%BD%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%E5%AD%90%E5%8D%B7%E7%9A%84%E6%A0%B9%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9A%84%20btrfs%EF%BC%88%E5%BF%AB%E7%85%A7%EF%BC%89.png)
假设您的在线系统上有一个 btrfs 根文件系统。您想要将文件系统恢复到较早的状态,您有该状态的快照:
remount /dev/sdaX / -o remount,subvol=snapshots/Y
作为记录,我已经在测试系统中完成了此操作,并且确实如此不是工作。该命令没有错误地返回,但安装的子卷是相同的。
如果这做过工作,会有什么后果?我的猜测是,打开的文件描述符仍然会指向旧的子卷,因此如果不小心,可能会导致新子卷上的“数据丢失”。假设您不厌其烦地关闭并重新打开所有打开的文件描述符,这听起来可行吗?或者还有其他类型的问题吗?
答案1
不,这是不可能的。即使您可以设法将所有 IO 重定向到新的子卷,在访问应用程序的过程中从应用程序下更改文件也将不可避免地损坏文件并使应用程序感到困惑。如果有问题的文件是一个程序,那么它会导致程序失控,只有运气好才会崩溃。