我刚刚升级了Ubuntu 14.04,并且在服务器上有两个ZFS池。我在使用ZFS驱动程序和内核版本时遇到了一些小问题,但是现在已经解决了。一个游泳池上线了,并且安装得很好。另一个没有。该工具之间的主要区别是,一个只是磁盘池(视频/音乐存储),另一个是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*
列出的各种设备,它们似乎是正确的设备(raidz阵列中的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,但无法访问我的两个zpool之一。
- 池之间的区别是出现的一个是JBOD,另一个是zraid。
- 不可卸载的zpool中的所有驱动器都标记为UNAVAIL,没有损坏数据的注释
- 这两个池都是使用从引用的磁盘创建的
/dev/disk/by-id/
。 - 从符号链接
/dev/disk/by-id
到各种/dev/sd
设备似乎是正确的 zdb
可以从驱动器中读取标签。- 池已被尝试导出/导入,并且无法再次导入。
我可以通过zpool / zfs调用某种黑魔法来将这些磁盘恢复为合理的阵列吗?我可以在zpool create zraid ...
不丢失数据的情况下运行吗?我的数据丢失了吗?
/dev/disk/by-id
用于这些驱动器的符号链接,并且一个设备的所有符号链接都指向同一/dev/sd*
驱动器。我能找到的最接近解决方案的东西(使用zpool replace),因为我无法重新导入池,所以我无法做到。