我有一个 zpool,在断电重启服务器后,现在显示为故障状态,设备名称也乱了。我知道我通过设备名称添加 vdev 搞砸了,但我不知道在创建和填充池后可以更改它。目前,池正在寻找“/dev/sde”(而不是“/dev/sdc”),而“/dev/sde”是根文件系统所在的设备,我不确定如何在不使情况变得更糟的情况下进行任何恢复。
希望有一种方法可以简单地重新配置 zpool 以使用“sdc”,从而能够以“by-id”命名导出和重新导入,以避免将来出现这种情况。
root@boxey:~# zpool status
pool: data
state: FAULTED
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://zfsonlinux.org/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
data UNAVAIL 0 0 0 insufficient replicas
raidz1-0 UNAVAIL 0 0 0 insufficient replicas
sda ONLINE 0 0 0
sde UNAVAIL 0 0 0
sdd FAULTED 0 0 0 corrupted data
sdb FAULTED 0 0 0 corrupted data
root@boxey:~# lsblk --output=NAME,FSTYPE,LABEL,SIZE,UUID
NAME FSTYPE LABEL SIZE UUID
sda 2.7T
├─sda1 zfs_member data 2.7T 166412156792699288
└─sda9 8M
sdb 2.7T
├─sdb1 zfs_member data 2.7T 166412156792699288
└─sdb9 8M
sdc 2.7T
├─sdc1 zfs_member data 2.7T 166412156792699288
└─sdc9 8M
sdd 2.7T
├─sdd1 zfs_member data 2.7T 166412156792699288
└─sdd9 8M
sde 55.9G
├─sde1 ext4 53.6G f2d9733a-846d-48c2-bb63-c7f4e0345ad5
├─sde2 1K
└─sde5 swap 2.3G 6c34cadd-db42-4e14-a647-733e021c018e
root@boxey:~# zpool export -f data
cannot export 'data': one or more devices is currently unavailable
root@boxey:~# zdb
data:
version: 5000
name: 'data'
state: 0
txg: 23300202
pool_guid: 166412156792699288
errata: 0
hostid: 8323329
hostname: 'boxey'
com.delphix:has_per_vdev_zaps
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: 166412156792699288
children[0]:
type: 'raidz'
id: 0
guid: 1294813595973345307
nparity: 1
metaslab_array: 34
metaslab_shift: 36
ashift: 12
asize: 12002313371648
is_log: 0
create_txg: 4
com.delphix:vdev_zap_top: 39
children[0]:
type: 'disk'
id: 0
guid: 4873892069497714664
path: '/dev/sda1'
whole_disk: 1
DTL: 101
create_txg: 4
com.delphix:vdev_zap_leaf: 40
children[1]:
type: 'disk'
id: 1
guid: 16241503886070383904
path: '/dev/sde1'
whole_disk: 1
DTL: 100
create_txg: 4
com.delphix:vdev_zap_leaf: 41
children[2]:
type: 'disk'
id: 2
guid: 1910545688695459106
path: '/dev/sdd1'
whole_disk: 1
DTL: 99
create_txg: 4
com.delphix:vdev_zap_leaf: 42
children[3]:
type: 'disk'
id: 3
guid: 2766829802450425996
path: '/dev/sdb1'
whole_disk: 1
DTL: 98
create_txg: 4
com.delphix:vdev_zap_leaf: 43
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
答案1
如果问题仅与设备名称有关,您可以通过以下命令重新导入具有稳定名称的池:
zpool import data -d /dev/disk/by-id/
然而,你有二磁盘FAULTED/corrupted data
,这让我认为你有点弄乱了数据本身,而不是“仅仅”弄乱了真实的设备名称。
请尝试上面建议的命令并分享任何其他输出。
编辑:OP 评论如下:
zpool import data -d /dev/disks/by-id/ 无法导入“data”:具有该名称的池已存在,请使用“zpool import <pool | id> ”格式为其指定新名称
root@boxey:~# zpool import data data2 -t 无法导入‘data’:没有可用的池
这意味着FAULTED
在正常池操作期间,系统会发现 vdev。请执行以下操作:
- 删除缓存文件
/etc/zfs/zpool.cache
- 重启系统
- 显示输出
zpool status
前尝试任何导入 - 如果
zpool status
显示没有导入池,请尝试发出zpool import data -d /dev/disk/by-id/