未使用のlsblkデバイスを取得する方法

未使用のlsblkデバイスを取得する方法
root@pve-virt-01:~# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                  8:0    0   250G  0 disk
├─sda1               8:1    0  1007K  0 part
├─sda2               8:2    0   512M  0 part /boot/efi
└─sda3               8:3    0 249.5G  0 part
  ├─pve-swap       253:0    0     8G  0 lvm  [SWAP]
  ├─pve-root       253:1    0  62.3G  0 lvm  /
  ├─pve-data_tmeta 253:2    0   1.6G  0 lvm
  │ └─pve-data     253:4    0   160G  0 lvm
  └─pve-data_tdata 253:3    0   160G  0 lvm
    └─pve-data     253:4    0   160G  0 lvm
sdb                  8:16   0    32G  0 disk
sdc                  8:32   0    32G  0 disk
sdd                  8:48   0    32G  0 disk
sde                  8:64   0    32G  0 disk


lvm/zfs/ext4で使用されていないすべてのデバイスを見たいです。これを達成する方法を知っていますか?未使用のすべてのディスクを使用できるようにスクリプトに使用したいのですがsgdisk、これは使用済みのディスクを選択しないようにする必要があることを意味します。

未使用のすべてのblkデバイスを一覧表示したいと思います。

編集する:

出力は次のようになります。

/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde

ベストアンサー1

それ自体とそのサブデバイスにマウントポイントがないデバイスを印刷したいようです。

lsblkそして以下を使用してJSONを出力しますjq

lsblk --tree -o PATH,MOUNTPOINT -J | jq -r '.blockdevices[]
    | del(select(.mountpoint!=null or .children[]?.mountpoint!=null))
    | .path // empty'

おすすめ記事