重启后回滚后 ZFS 数据丢失

重启后回滚后 ZFS 数据丢失

编辑1:与我创建这个问题时最初的想法不同,似乎问题不是由计划外的电源循环直接引起的,而是由我过去对 beadm 犯的一个错误引起的,并且该错误仅在此后第一次重启后才生效。

这曾经是(现在仍然是)问题的实际核心:

我认为自该快照以来的大部分更改应该仍在磁盘上的某个位置。是否有任何机会(除了为原始设备编写自己的 zfs-reader)访问自上次快照以来更改的特定文件?

评论中要求的更多信息:

清单

BE Name          Flags Mountpoint Space   Policy Created          
---------------- ----- ---------- ------- ------ ---------------- 
11.4.23.69.3     NR    /          73.93G  static 2020-07-27 12:08 
solaris          -     -          95.53G  static 2020-05-23 19:35 
solaris-backup-1 -     -          374.41M static 2020-07-22 14:37 

zfs 列表:

NAME                               USED  AVAIL  REFER  MOUNTPOINT
rpool                              382G   713G  73.5K  /rpool
rpool/ROOT                         170G   713G    31K  none
rpool/ROOT/11.4.23.69.3           75.5G   713G  63.3G  /
rpool/ROOT/11.4.23.69.3/var       3.12G   713G  1.14G  /var
rpool/ROOT/solaris                94.2G   713G   143G  /
rpool/ROOT/solaris-backup-1       98.9M   713G  48.5G  /
rpool/ROOT/solaris-backup-1/var      1K   713G  1.13G  /var
rpool/ROOT/solaris/var             503M   713G  1.29G  /var
rpool/VARSHARE                     102M   713G  24.7M  /var/share
rpool/VARSHARE/kvol               27.7M   713G    31K  /var/share/kvol
rpool/VARSHARE/kvol/dump_summary  1.22M   713G  1.02M  -
rpool/VARSHARE/kvol/ereports      10.2M   713G  10.0M  -
rpool/VARSHARE/kvol/kernel_log    16.2M   713G  16.0M  -
rpool/VARSHARE/pkg                  63K   713G    32K  /var/share/pkg
rpool/VARSHARE/pkg/repositories     31K   713G    31K  /var/share/pkg/repositories
rpool/VARSHARE/sstore             30.0M   713G  30.0M  /var/share/sstore/repo
rpool/VARSHARE/tmp                20.0M   713G  20.0M  /var/tmp
rpool/VARSHARE/zones                31K   713G    31K  /system/zones
rpool/dump                        63.1G   713G  63.1G  -
rpool/export                      20.5G   713G    32K  /export
rpool/export/home                 20.5G   713G  7.26G  /export/home
rpool/export/home/avl             9.30G   713G  9.30G  /export/home/avl

(除我的主目录外,其中大部分都是机器自带的)

只有根文件系统似乎已回滚,我的主目录仍然保留所有最近的文件。

根据df -kl根文件系统的输出,当前是这个:rpool/ROOT/11.4.23.69.3,它已经对应于最新的可用 BE。

我还希望从答案中了解真正导致回滚的原因。不,我记不清我调用了哪些 beadm。我只记得我更改了下次启动的 BE,但随后将其改回当前 BE 并且没有重新启动 - 直到那次电源故障。

也许这里的答案以后也许还能拯救其他人。

答案1

数据被丢弃。您可能会使用特殊工具恢复一些痕迹,但没有可靠的方法可以依赖。

答案2

我的所有数据都还在那里...

一些友好(且耐心)的人向我解释了启动环境和快照的概念。

本质上,对于像我这样拥有更多 Linux 背景而非 Solaris 背景的人来说,这些启动环境看起来就像“要挂载到 / 的替代设备”,具有一些共享通用文件的魔力(就像快照一样),并且还具有与系统更新工具共享的一些魔力,以使升级实际上进入不同的启动环境。

我在 7 月 27 日做了一些系统更新,并将新系统安装到新的启动环境 11.4....(参见问题文本中的“zfs 列表”),但是在所有这些月中,我们仍然运行名为“solaris”的启动环境,因为升级后我从未重新启动过。

在最近断电后重新启动后,它安装了“11.4...”根文件系统,当然它没有“solaris”BE 的任何最新更改。

与此同时,我已经重建了大部分丢失的更改,但对于那些我无法从记忆中重建的剩余更改,我现在将之前的启动环境“solaris”安装到/mnt:zfs mount -oro,mountpoint=/mnt rpool/ROOT/solaris 它们就在那里,我丢失的更改......

也许这以后会对其他人有所帮助。

寓意:zfs 毕竟看起来是一个相当安全的数据避风港——除非我陷入我最初认为的那种情况。

相关内容