如何获取 ZFS 池中在线磁盘的 ID?

如何获取 ZFS 池中在线磁盘的 ID?

我将物理磁盘旋转进出我的镜像 ZFS zpool(使用 ZoL)以用于异地备份;为了帮助简化流程,我一直使用 udev 规则来响应正在交换的驱动器。

目前,插入驱动器时我使用zfs attach,它需要池中现有驱动器的名称。目前,它被硬编码为永远不会移出现场的磁盘之一。

那么,除了硬编码 ID,我如何才能获取目标池的在线磁盘 ID?目前,我正在尝试从中获取它,zpool status但希望可能有更好的选择。

答案1

现在我整理了一个小脚本,zfs-online-disks.sh可以将在线磁盘从以下位置拉出zpool status

#!/bin/bash

# Return a list of online disks for a storage pool

ONLINE=$(zpool status $1 | grep -Po "\S*(?=\s*ONLINE)")

while read -r line; do
  if ! [ -b "/dev/disk/by-id/$line" ]; then
    continue
  fi
  echo $line
done <<< "$ONLINE"

相关内容