我有一个 ZFS 池连接到一个崩溃的系统。我正在寻找将该池带到新系统的方法,但是看起来我需要zfs export
先使用它,因为我不再有权访问原始系统,所以我无法执行zfs export
等等。
最主要的问题是,我有 4 个外部驱动器连接到该系统,但其中只有两个是 ZFS 池的一部分。我实际上不记得我是如何设置它们的,也不记得这 4 个 USB 驱动器中哪个是 ZFS 池的一部分,但我记得这 4 个驱动器中只有两个是 ZFS 池的一部分。
如果我不再具备初始条件,如何在新系统上安装池?
我在用6.1.0-9-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.27-1 (2023-05-08) x86_64 GNU/Linux
谢谢
答案1
zpool import
确实是导入 ZFS 池的唯一命令,包括zpool export
之前已正确编辑的池和未正确编辑的池。
zpool list
如果池尚未导入,则应首先检查。如果池尚未导入,zpool import
则将列出所有可导入的池。如果池未先导出,则可能需要标志-f
。您可以使用查看特定设备zpool import -d
。
综合起来,它可能看起来像这样:
# zpool import -d /home/daniel/zpool-test-1.img
pool: test123
id: 12638011090530745002
state: DEGRADED
status: One or more devices are missing from the system.
action: The pool can be imported despite missing or damaged devices. The
fault tolerance of the pool may be compromised if imported.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-2Q
config:
test123 DEGRADED
mirror-0 DEGRADED
/home/daniel/zpool-test-1.img ONLINE
/home/daniel/zpool-test-b.img UNAVAIL cannot open
(我通过重命名文件来强制解决这个问题。)
然后您只需导入池即可:
zpool import -d /home/daniel/zpool-test-1.img test123
我建议您不要使用zpool import -a
,只是为了确保您只处理您想要的 ZFS 池。
然后您可以使用它zfs list
来找出东西挂载在哪里。ZFS 会自动处理该问题(除非特别告知不要这么做)。
您可以使用以下命令检查池设备而无需导入它们zdb
:
# zdb -l zpool-test-1.img
------------------------------------
LABEL 0
------------------------------------
version: 5000
name: 'test123'
state: 1
txg: 19
pool_guid: 12638011090530745002
errata: 0
hostname: 'server'
top_guid: 6892256335198247059
guid: 11629412553399697108
vdev_children: 1
vdev_tree:
type: 'mirror'
id: 0
guid: 6892256335198247059
metaslab_array: 64
metaslab_shift: 29
ashift: 9
asize: 5363990528
is_log: 0
create_txg: 4
children[0]:
type: 'file'
id: 0
guid: 11629412553399697108
path: '/home/daniel/zpool-test-a.img'
create_txg: 4
children[1]:
type: 'file'
id: 1
guid: 1859957653576985949
path: '/home/daniel/zpool-test-b.img'
create_txg: 4
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
com.klarasystems:vdev_zaps_v2
labels = 0 1 2 3
尝试所有分区,直到找到正确的分区。
除非您选择了“不正确”(非描述性)的分区类型 ID,否则您应该能够识别包含 ZFS 的设备/分区。fdisk -l
对于“全盘”vdev,ZFS 现在创建了两个 GPT 分区,一个类型为“Solaris /usr & Apple ZFS”,另一个类型为“Solaris reserved 1”。
但理想情况下,只需连接所有驱动器并让 ZFS 弄清楚,它确实应该在常规块设备上自动找到池,无论是否是 USB。