我将物理磁盘旋转进出我的镜像 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"