2017-01-13 71 views
2

有几个新盘,我在ZFS镜像模式设置destory ZFS“幻影”池(使用Ubuntu-16.04-Root-on-ZFS。可悲的是我搞砸了什么(grub的安装过程中),不得不从头再来当我重新启动(步骤6.5在DOC)我得到了一个错误:后如何重新安装ZFS池

cannot import 'rpool': more than one matching pool 
import by numeric ID instead 

,并踢我到initramfs的外壳有,确实是2个rpools但其中一个坏了...大概是一个。从原始安装中,我能够使用它的ID作为rpoolgood导入“good”rpool并重新导出它。

但是我无法导入“破损”的rpool(e按名称或ID)。我想要做的就是摧毁它。我的猜测是我应该在创建新分区之前清空非数据分区(步骤2.2)。我还没有真正的数据,所以我可以(也可能应该)再次进行安装(并且先将分区清零)。

做之前重新安装,我很好奇,如果有一种方法爆炸坏/假rpool中。

每请求,我再出口rpoolgood后附加“ZFS进口”的截图。 IIRC,当我执行我的grub安装时,我意外地指定了一个分区而不是磁盘。当我意识到我的错误时,我只在其中一个磁盘上完成了它。

enter image description here

+0

我承担的“坏”的池使用相同的物理设备?命令是否:_zpool import -D_列出所有已销毁的池? – airhuff

+0

运行zdb以查看zpool.cache文件是否有任何异常,可能(或不可能)提供有关该问题的一些信息。如果有什么似乎都不妥,应该是安全的删除/etc/zfs/zpool.cache中,然后运行_zpool集求CacheFile =的/ etc/ZFS/zpool.cache _创建一个新的。虽然我认为这是值得的,但我不认为这是最终的解决方案。 – airhuff

+0

import -D没有显示任何被破坏的数据(并且这并不令人意外,因为重新安装是在zfs工具集的范围之外完成的)。我用zdb尝试了几个查询,但它并没有给我更多的见解(但是这可能会增加我对zfs的经验)。顺便说一句,我使用zfs作为我的根文件系统,所以/ etc/zfs/...感觉就像是鸡与蛋的东西......最坏的情况是非sequitur,因为/ etc /不存在,直到导入rpool。 – Modular

回答

1

八九不离十解决:

TL/DR:我删除了所有分区,然后用dd(对于一个优雅的方式炸开一个磁盘使用的最后一节轰出每个磁盘的第一个和最后一个10MB [本交换文章] [1])。这并没有恢复“好”池但这不是当务之急我...让一个干净的安装是首要目标(此给我)

略长:

我做了一个公平的位我的外卖是,如果你想重新从一个zpool到另一个磁盘的目的,你最好擦(至少部分)的磁盘。破坏以前的池可能已经工作,但我没有这样做(并不清楚,因为我搞砸了grub安装,所以我的分区可能已被borked)

Ubuntu的指示确实谈到如果你在mdadm raid数组中使用磁盘擦除超级块...我应该推广评论。无论如何,这是一个弱的答案,因为我没有发现一种方法来干净地编辑元数据。

+0

总比没有好,至少你可以从这一切继续前进。这里(http://serverfault.com/questions/297029/zfs-on-freebsd-recovery-from-data-corruption)是关于(BSD)ZFS分区标签元数据的讨论,可能会引起人们的兴趣。他们的结论的关键是:“ZFS维护4个标签分区元信息,HPA阻止ZFS看到上面两个。”再次祝贺解决此问题。 – airhuff