我刚刚升级了 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
Run Code Online (Sandbox Code Playgroud)
那些的符号链接/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
Run Code Online (Sandbox Code Playgroud)
检查/dev/sd*
列出的各种设备,它们似乎是正确的(raidz 阵列中的 3 个 1TB 驱动器)。
我已经zdb -l
在每个驱动器上运行,将其转储到文件中,然后运行差异。3 的唯一区别是 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:
Run Code Online (Sandbox Code Playgroud)
愚蠢的是,我最近没有这个池的备份。但是,在重新启动之前池很好,Linux 认为磁盘很好(我现在运行 smartctl 来仔细检查)
所以,总结一下:
/dev/disk/by-id/
。/dev/disk/by-id
各种/dev/sd
设备的符号链接似乎是正确的zdb
可以从驱动器读取标签。我可以通过 zpool/zfs 调用某种黑魔法将这些磁盘带回合理的阵列吗?我可以在zpool create zraid ...
不丢失数据的情况下运行吗?反正我的数据没了?
在对这个特定错误消息进行了大量谷歌搜索之后,我得到了:
root@kyou:/home/matt# zpool import -f storage
cannot import 'storage': one or more devices are already in use
Run Code Online (Sandbox Code Playgroud)
(包括在这里供后代和搜索索引)我发现了这个:
https://groups.google.com/a/zfsonlinux.org/forum/#!topic/zfs-discuss/VVEwd1VFDmc
它使用相同的分区,并在加载 ZFS 之前的任何引导期间将它们添加到 mdraid。
我记得在里面看到了一些 mdadm 行dmesg
,果然:
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]
Run Code Online (Sandbox Code Playgroud)
这些驱动器曾是软件 raid5 阵列的一部分。出于某种原因,在升级过程中,它决定重新扫描驱动器,发现驱动器曾经是 md 阵列的一部分,并决定重新创建它。这是通过以下方式验证的:
root@kyou:/storage# mdadm --examine /dev/sd[a-z]
Run Code Online (Sandbox Code Playgroud)
这三个驱动器显示了一堆信息。现在,停止阵列:
root@kyou:/home/matt# mdadm --stop /dev/md126
mdadm: stopped /dev/md126
Run Code Online (Sandbox Code Playgroud)
并重新运行导入:
root@kyou:/home/matt# zpool import -f storage
Run Code Online (Sandbox Code Playgroud)
已使阵列重新联机。
现在我制作该池的快照以进行备份,并mdadm --zero-superblock
在它们上运行。
Ubuntu 似乎有一些令人讨厌的 udev 问题,而我们在 Red Hat/CentOS 方面没有看到这些问题。如果可以的话,我建议使用基于 WWN 的设备名称,因为它们似乎不太容易受到此影响。
您是否看到过:为什么重新启动会导致我的 ZFS 镜像的一侧变得 UNAVAIL?
归档时间: |
|
查看次数: |
2443 次 |
最近记录: |