我需要列出分区类型 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[@]}"
}