파티션/LV가 마운트되지 않은 디스크 찾기

파티션/LV가 마운트되지 않은 디스크 찾기

반대쪽으로이것질문, 현재 어떤 파티션이나 LV가 마운트되어 있지 않은 (물리적) 디스크를 알고 싶습니다. 이는 현재 시스템에 마운트된 파티션이나 LV가 없는 디스크를 반환해야 하는 스크립트입니다.

명령줄 도구(bash 내장, grep, lsblk 및 sed의 혼합이 바람직하지만 awk가능하면 "와드" 프로그래밍이나 고도로 전문화된 타사 프로그램은 피함)를 사용하여 이를 수행할 수 있는 (상당히) 쉬운 방법이 있습니까? 알아보세요.

편집(명확화를 위해):

단일 파티션(예: /dev/sdc{1,2,3,4}이 없음)이나 LV가 아닌 경우 "/dev/sdc" 및/또는 "/dev/sdd"를 가져오는 방법을 찾고 있습니다. (예: /dev/mapper/some_VG_name-LV_name)이 현재 시스템에 설치되어 있습니다. 단일 파티션이나 LV를 마운트하더라도 디스크는 반환되지 않습니다.

답변1

나에게 맞는 솔루션을 찾았습니다.

aAllDisks=($(/usr/bin/lsblk --nodeps --noheadings --output NAME --paths))
aFreeDisks=()
for sDisk in "${aAllDisks[@]}"; do
    sMounts="$(/usr/bin/lsblk --noheadings --output MOUNTPOINT "${sDisk}" | grep -vE "^$")"
    if [ "${sMounts}" == "" ]; then
        aFreeDisks+=("${sDisk}")
    fi
done
echo "${aFreeDisks[@]}"

그러면 먼저 마운트된 모든 물리적 디스크를 가져온 다음 이를 반복합니다. 디스크에 마운트가 없으면 나중에 사용하기 위해 수집됩니다. 위의 예에서는 단순히 에코를 하고 있습니다.

관련 정보