パーティション/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[@]}"

その後、最初にマウントされたすべての物理ディスクをインポートしてから繰り返します。ディスクにマウントがない場合は、後で使用するために収集されます。上記の例では単にエコーをしています。

関連情報