我有一个压缩加密的zfs数据集,似乎已经完全丢失了。对于“zfs缺失数据集”或类似内容,有相当多的google点击,而且它们几乎总是类似于数据集没有被自动化,但它实际上仍然存在。这似乎不是我的问题所在。我看不到数据集的任何迹象,但历史上没有任何迹象显示数据集被销毁。
root@ryzen:~# zpool history epool
History for 'epool':
2020-06-05.18:15:43 zpool create -f -m /extra epool /dev/disk/by-id/ata-WDC_WD80EFAX-68KNBN0_VDJ8GVBD
2020-06-05.18:17:02 zfs create epool/USERDATA
2020-06-05.18:18:14 zfs set mountpoint=none epool
2020-06-05.18:20:20 zfs create -o mountpoint=/extra/ian epool/USERDATA/ian_i01gxn
2020-06-06.00:32:47 zpool import -c /etc/zfs/zpool.cache -aN
2020-06-06.00:44:55 zpool attach epool /dev/disk/by-id/ata-WDC_WD80EFAX-68KNBN0_VDJ8GVBD /dev/disk/by-id/ata-WDC_WD80EFAX-68KNBN0_VDJ63U4K
2020-06-07.23:24:31 zfs set compression=on epool
2020-06-07.23:29:21 zfs rename epool/USERDATA/ian_i01gxn epool/USERDATA/ian_i01gxn_old
2020-06-07.23:35:23 zfs create -o compression=on -o encryption=on -o keyformat=passphrase epool/USERDATA/ian_i01gxn
2020-06-07.23:35:45 zfs set mountpoint=/extra/ian2 epool/USERDATA/ian_i01gxn
2020-06-08.12:32:30 zfs set mountpoint=/extra/ian epool/USERDATA/ian_i01gxn
2020-06-08.12:34:18 zfs destroy epool/USERDATA/ian_i01gxn_old
2020-06-14.00:24:11 zpool scrub epool
2020-06-18.17:37:32 zpool import -c /etc/zfs/zpool.cache -aN
2020-06-18.17:40:31 zfs load-key epool/USERDATA/ian_i01gxn
2020-06-18.18:47:25 zpool import -c /etc/zfs/zpool.cache -aN
2020-06-18.18:50:09 zfs load-key epool/USERDATA/ian_i01gxn
2020-06-18.19:26:06 zpool set autoexpand=on epool
2020-06-27.01:18:08 zpool import -c /etc/zfs/zpool.cache -aN
2020-06-27.02:31:48 zpool import -c /etc/zfs/zpool.cache -aN
2020-06-27.02:49:49 zpool import -c /etc/zfs/zpool.cache -aN这显示了在镜像池上创建dataset epool/USERDATA/ian_i01gxn。然后我给它装了些东西。在那之后,我想我应该对它进行加密和压缩,所以我重新命名了它,制作了另一个加密的压缩数据集,复制了文件,并销毁了原来的文件。此后,一切正常,您可以看到系统重新启动的几次,而我重新加载了密钥。昨晚,我进行了另一次内核升级,并对BIOS配置做了一些小调整,需要重新启动几次。现在,dateset epool/USERDATA/ian_i01gxn已经消失:
root@ryzen:~# zfs load-key epool/USERDATA/ian_i01gxn
cannot open 'epool/USERDATA/ian_i01gxn': dataset does not exist
root@ryzen:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
bpool 750M 1.02G 96K none
bpool/BOOT 746M 1.02G 96K none
bpool/BOOT/ubuntu_xqma33 746M 1.02G 196M /boot
bpool/BOOT/ubuntu_xqma33/grub 16.6M 1.02G 7.46M /boot/grub
epool 29.1M 7.04T 104K none
epool/USERDATA 96K 7.04T 96K none
rpool 569G 1.19T 192K none
rpool/ROOT 254G 1.19T 192K none
rpool/ROOT/ubuntu_xqma33 254G 1.19T 25.0G /
....
root@ryzen:~# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
bpool 1.88G 750M 1.14G - - 5% 39% 1.00x ONLINE -
epool 7.27T 29.8M 7.27T - - 0% 0% 1.00x ONLINE -
rpool 1.80T 569G 1.25T - - 13% 30% 1.00x ONLINE -zpool列表显示,池中只分配了几个MB,而应该有几个TB。我可以拿回大部分的东西,因为这是最近的一次硬盘升级,我还有旧的硬盘,但是我使用了带有镜像磁盘的ZFS,这样我就再也不用担心数据丢失了(对于“从不”的合理定义)。所以,这是非常可怕的,我似乎失去了我的数据。有人知道发生了什么事吗?
发布于 2020-06-27 21:19:10
我刚刚在Ubuntu20.04上遇到了同样的问题。不过,在我的示例中,由于系统锁定,加密数据集在强制关闭后消失。
我发现,当我运行一个“zpool历史-i池名”来获得更多细节时,其中的“池名”是包含加密数据集的池--加密的数据集在某个时候被显式销毁了!
所以也看看你的吧。考虑到这是一个明显的破坏,我不认为这是一个ZFS错误,而是一个Ubuntu20.04错误。我仍在调查,但我认为某些引导时间服务正在清理数据集,这在这种情况下是不适当的。
编辑:最近几个月,似乎其他人也遇到了这个问题。Ubuntu的Zsys被怀疑。有关更多信息,请参见以下答案和注释:为什么ZFS上的Ubuntu20.04在zpool.cache的启动时导入时销毁自定义数据集?
再次编辑:以防万一,也许可以节省一些时间-我们肯定遇到了这个错误https://github.com/ubuntu/zsys/issues/103,它有意义地关闭了原因。在这两种情况下,并不是数据集被加密,而是显然它在用户数据集中。我得多读点书,但这对我来说似乎不明智。
https://askubuntu.com/questions/1254238
复制相似问题