zpool 忘记了池中的所有数据设备:如何使它们重新上线?

zpool 忘记了池中的所有数据设备:如何使它们重新上线?

我的 Debian 服务器在 Linux 上运行 ZFS。今天由于软件升级,我不得不重启两次。第一次重启是因为 ZFS 从 0.6.4-1.2-1-wheezy 更新到 0.6.5.2-2-wheezy,之后我访问了池中的主目录,一切顺利。最后一次重启后,zpool 无法导入池:

# zpool import
   pool: storage
     id: 4490463110120864267
  state: FAULTED
 status: The pool metadata is corrupted.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-72
 config:

        storage      FAULTED  corrupted data
        logs
          sda3       ONLINE
# zpool import storage
cannot import 'storage': I/O error
        Destroy and re-create the pool from
        a backup source.
# zpool import -F storage
cannot import 'storage': one or more devices is currently unavailable

我缺少我的完整池,它应该是这样的:

    storage
      mirror
        scsi-SATA_WDC_WD30EFRX-68_WD-WMC1T2132687-part1
        scsi-SATA_WDC_WD30EFRX-68_WD-WMC1T2194187-part1

我如何告诉 zpool 使用数据分区?我不敢尝试将磁盘连接到此池或新池,因为我担心磁盘及其元数据将被清除。

编辑/更新:

  • 也许很重要:在重新阅读了 apt 的 history.log 和 wtmp 之后,我没有把握如果我在第一次 ZFS 更新相关重启后访问我的主目录。同时,我尝试返回到以前的版本,但除了最新版本之外,我找不到任何 ZFS 软件包。
  • 我有两个用于存储数据的 HDD(sdb、sdc),采用 GPT 分区,并且两个主分区都已设置为 ZFS 上的镜像池,使用 /dev/disk/by-id。设备 sda 是一个安装了 Debian 的 SSD,还有一些 VM 空间,在单独的分区 /dev/sda3 中,还有 SLOG/ZIL。所有磁盘都直接连接到主板。
  • 上面的 zfsonlinx-URL 还建议使用“zpool clear -F storage”,其回复“没有可用的池”。

答案1

鉴于 zpool 丢失是在常规重启期间发生的,我希望至少 zpool 导出已发生。即使它被不彻底关闭,我也更愿意对副本进行救援工作。因此,我向系统添加了一个大硬盘(作为设备 sdb 添加 - 感谢 udev),并使用两个与故障驱动器上的 zfs 分区大小相同的分区对其进行了格式化。因为这是一个镜像池,所以我将两个旧分区复制到了新分区:

dd if=/dev/disk/by-id/scsi-SATA_WDC_WD30EFRX-68_WD-WMC1T2132687-part1 /dev/sdb1 bs=104800
dd if=/dev/disk/by-id/scsi-SATA_WDC_WD30EFRX-68_WD-WMC1T2194187-part1 /dev/sdb2 bs=104800

现在我有一个具有两个相同镜像的系统。

# zpool import 
   pool: storage
     id: 4490463110120864267
  state: ONLINE
 status: Some supported features are not enabled on the pool.
 action: The pool can be imported using its name or numeric identifier, though
       some features will not be available without an explicit zpool upgrade'.
 config:

        storage                                             ONLINE
          mirror-0                                          ONLINE
            sdb1                                            ONLINE
            ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T2194187-part1  ONLINE
        logs
          sda3                                              ONLINE
# zpool import storage
#

万岁!

同时,我备份了数据两次,并且正在恢复到全新的 zpool。

答案2

由于您在最初创建池时指定了 /dev/disk/by-id,因此池可能无法找到您的磁盘。请注意您的 slog 设备认出…

有一个池导入标志,-d它允许您将导入过程指向特定目录以查询设备。好建议这里

尝试:

zpool import -F -d /dev/disk/by-id storage

相关内容