升级的Ubuntu中,一个zpool中的所有驱动器标记为不可用

我刚刚升级了Ubuntu 14.04,并且在服务器上有两个ZFS池。 我与ZFS驱动程序和内核版本争执了一些小问题,但现在已经解决了。 一个池来到网上,并安装好。 另一个没有。 这个工具之间的主要区别是只有一个磁盘池(video/音乐存储),另一个是raidz集(文档等)

我已经尝试导出并重新导入池,无济于事,试图导入让我这个:

root@kyou:/home/matt# zpool import -fFX -d /dev/disk/by-id/ pool: storage id: 15855792916570596778 state: UNAVAIL status: One or more devices contains corrupted data. action: The pool cannot be imported due to damaged devices or data. see: http://zfsonlinux.org/msg/ZFS-8000-5E config: storage UNAVAIL insufficient replicas raidz1-0 UNAVAIL insufficient replicas ata-SAMSUNG_HD103SJ_S246J90B134910 UNAVAIL ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 UNAVAIL ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 UNAVAIL 

/dev/disk/by-id的符号链接也存在:

 root@kyou:/home/matt# ls -l /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910* /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51* lrwxrwxrwx 1 root root 9 May 27 19:31 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910 -> ../../sdb lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part9 -> ../../sdb9 lrwxrwxrwx 1 root root 9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 -> ../../sdd lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1 -> ../../sdd1 lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part9 -> ../../sdd9 lrwxrwxrwx 1 root root 9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 -> ../../sde lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1 -> ../../sde1 lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part9 -> ../../sde9 

检查列出的各种/dev/sd*设备,它们似乎是正确的(Raidzarrays中的3个1TB驱动器)。

我已经在每个驱动器上运行zdb -l ,将其转储到一个文件并运行diff。 唯一的区别就是GUID字段(我认为这是预期的)。 每个标签上的3个标签基本相同,如下所示:

 version: 5000 name: 'storage' state: 0 txg: 4 pool_guid: 15855792916570596778 hostname: 'kyou' top_guid: 1683909657511667860 guid: 8815283814047599968 vdev_children: 1 vdev_tree: type: 'raidz' id: 0 guid: 1683909657511667860 nparity: 1 metaslab_array: 33 metaslab_shift: 34 ashift: 9 asize: 3000569954304 is_log: 0 create_txg: 4 children[0]: type: 'disk' id: 0 guid: 8815283814047599968 path: '/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1' whole_disk: 1 create_txg: 4 children[1]: type: 'disk' id: 1 guid: 18036424618735999728 path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1' whole_disk: 1 create_txg: 4 children[2]: type: 'disk' id: 2 guid: 10307555127976192266 path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1' whole_disk: 1 create_txg: 4 features_for_read: 

愚蠢的是,我没有这个池的最近的备份。 但是,在重启之前,池已经很好了,而且Linux看到了这些磁盘的正常运行(我现在正在运行smartctl来仔细检查)

总之:

  • 我升级了Ubuntu,并失去了我的两个zpools之一。
  • 池之间的区别是提出的是JBOD,另一个是zraid。
  • 在unmountable zpool中的所有驱动器被标记为UNAVAIL,没有损坏数据的注释
  • 这些池都是使用/dev/disk/by-id/引用的磁盘创build的。
  • /dev/disk/by-id到各个/dev/sd设备的符号链接似乎是正确的
  • zdb可以从驱动器读取标签。
  • 池已被尝试导出/导入,并且无法再次导入。

是否有某种黑魔法可以通过zpool / zfs调用将这些磁盘恢复到合理的数组中? 我可以运行zpool create zraid ...而不会丢失我的数据? 无论如何,我的数据不见了?

谷歌search这个特定的错误消息之后,我得到了很多很多:

 root@kyou:/home/matt# zpool import -f storage cannot import 'storage': one or more devices are already in use 

(这里包括后代和search索引)我发现这个:

https://groups.google.com/a/zfsonlinux.org/forum/#!topic/zfs-discuss/VVEwd1VFDmc

它正在使用相同的分区,并在加载ZFS之前的任何引导过程中将它们添加到mdraid。

我记得在dmesg看到了一些mdadm行,果然:

 root@kyou:/home/matt# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md126 : active raid5 sdd[2] sdb[0] sde[1] 1953524992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU] 

这些驱动器曾经是软件raid5arrays的一部分。 出于某种原因,在升级过程中,决定重新扫描驱动器,发现驱动器曾经是mdarrays的一部分,并决定重新创build驱动器。 这通过以下validation:

 root@kyou:/storage# mdadm --examine /dev/sd[az] 

这三个驱动器显示了一堆信息。 现在,停止数组:

 root@kyou:/home/matt# mdadm --stop /dev/md126 mdadm: stopped /dev/md126 

并重新运行导入:

 root@kyou:/home/matt# zpool import -f storage 

已经使arrays重新联机。

现在我为该备份创build一个快照,并在其上运行mdadm --zero-superblock

Ubuntu似乎有一些讨厌的udev问题 ,我们在Red Hat / CentOS方面没有看到。 如果可以的话,我build议使用基于WWN的设备名称,因为它们似乎不太容易受此影响。

你见过: 为什么重新启动导致我的ZFS镜像的一面成为UNAVAIL?

我遇到了几乎这个问题,试图升级到Debian Wheezy上的3.13系列内核。 你的意见是正确的。 这是一个udev错误。 我从来没有得到它sorting不幸的是,但值得探索其他内核,特别是3.11系列,与0.6.2版本的ZOL的兼容性。 只要使用旧的内核,直到0.6.3出来。