ZFS 풀에서 온라인 디스크의 ID를 어떻게 얻을 수 있습니까? 규칙을 사용하여 스왑되는 드라이브에 응답하는

오프 사이트 백업에 사용하기 위해 미러 된 ZFS zpool (ZoL 사용) 내외부에서 물리 디스크를 회전시킵니다. udev 규칙을 사용하여 스왑되는 드라이브에 응답하는 프로세스를 간소화합니다.

현재 드라이브를 삽입 할 때 zfs attach풀 내에서 기존 드라이브의 이름 이 필요한를 사용 합니다. 지금은 오프 사이트로 절대 가지 않는 디스크 중 하나에 하드 코드되어 있습니다.

따라서 ID를 하드 코딩하는 대신 대상 풀의 온라인 디스크 ID를 어떻게 얻을 수 있습니까? 현재 나는 그것을 파지하면서 놀고 zpool status있지만 더 나은 옵션이 있기를 바랐습니다.



답변

지금 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"


답변