从命令行列出所有磁盘的分区类型 GUID?

从命令行列出所有磁盘的分区类型 GUID?

我需要列出分区类型 GUID来自命令行。

注意:这与分区 UUID 不同。

基本上我需要搜索具有 Ceph OSD 类型 GUID 的所有磁盘:

4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D

目的是在 CoreOS 上的 bash 脚本中模拟使用 ceph-disk (python) 完成的一些操作。为什么?这样我就可以使用 ceph-docker 自动将它们安装到适当的位置。

答案1

lsblk - list block devices是你的朋友。

# lsblk -p -o NAME,PARTTYPE
NAME         PARTTYPE
/dev/vda     
├─/dev/vda1  c12a7328-f81f-11d2-ba4b-00a0c93ec93b
├─/dev/vda2  ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
...

答案2

这是我使用的最终解决方案blkid -p

function find_osds()
{
    local osds
    declare -a dev_list
    mapfile dev_list < <(lsblk -l -n -o NAME --exclude 1,7,11) # note -I not available in all versions of lsblk, use exclude instead
    for dev in "${dev_list[@]}"; do
        dev=/dev/$(trim "$dev")
        if blkid -p "$dev" | fgrep -q '4fbd7e29-9d25-41b8-afd0-062c0ceff05d'; then
            osds+=($dev)
        fi
    done
    echo "${osds[@]}"
}

相关内容