鉴于设备尚未重新分配,我可以在导出后恢复 zpool 吗?

cal*_*spc 1 solaris zfs zpool

我有一个 zpool,我们称之为“testpool”。

testpool 中包含 3 个设备,以及一个名为“test”的 zfs。

我需要将“测试”移动到一个新的、较小的池中。我想将新池命名为“testpool”。

基本上做到了以下几点。

zfs send testpool@backup > /tmp/test-dump
zpool export -f testpool
zpool create -f testpool newdevice
zfs receive -F testpool < /tmp/test-dump
Run Code Online (Sandbox Code Playgroud)

不幸的是,我发现 testpool@backup 快照是错误的快照。太老。我还没有重新分配旧测试池中的三个设备。(这 3 台设备都不是“新设备”,它们是单独的 3 台。)

有什么办法可以恢复这些设备中的数据吗?我在想,自从我将新的、较小的池命名为与旧的 zpool 相同的名称以来,我几乎是 SOL。但如果没有,那会很高兴知道。

编辑:更多信息

我做了一个'zpool import'并得到了这个。

bash-3.00# zpool import
  pool: testpool
    id: 14781458723915654709
 state: ONLINE 
action: The pool can be imported using its name or numeric identifier.
config:

    testpool    ONLINE
      c5t8d0    ONLINE
      c5t9d0    ONLINE
      c5t10d0   ONLINE
Run Code Online (Sandbox Code Playgroud)

所以我猜我只需要使用它的数字标识符导入这个 zpool 的语法,同时给它一个新名称。

S。

Tim*_*edy 5

是的。您可以zpool import不带参数运行,它会为您识别可用的池。

假设旧测试池中的设备仍然存在,您将看到“旧”测试池,并在其旁边显示池的 GUID。

一旦您拥有该池 GUID,您就可以执行zpool import $id oldtestpool. 导入池后,您可以更改挂载点,这样它们就不会与新测试池的挂载点重叠。