ファイルシステムがないすべてのディスク(mkfs
ファイルシステムで実行されていないすべてのディスク)をキャプチャしたいと思います。
以下を試しましたが、まだオペレーティングシステム(sda)が提供されています。
lsblk
ファイルシステムや他のコマンドを使用せずにすべてのディスクをキャプチャする最善の方法は何ですか?
lsblk -f | egrep -v "xfs|ext3|ext4"
NAME FSTYPE LABEL UUID
MOUNTPOINT
fd0
sda
└─sda2 LVM2_member v0593a-KiKU-9emb-STbx-ByMz-S95k-jChr0m
├─vg00-lv_swap swap 1beb675f-0b4c-4225-8455-e876cafc5756
[SWAP]
sdg
sdh
sdi
sdj
sdk
sr0
答え1
lsblk -o NAME,FSTYPE -dsn
これにより、パーティションパーティションホルダではなく(パーティションテーブルを持たない)ブロックデバイスのリストが印刷されます。検出されたファイルシステムの種類は2番目の列にあります。空の場合、認識されたファイルシステムがないことを意味します。
したがって、1つのコマンドで目的の出力を取得するには
lsblk -o NAME,FSTYPE -dsn | awk '$2 == "" {print $1}'
答え2
私の考えでは、最良のオプションはFDISKです。通事論:
fdisk -l | grep -i ^disk
答え3
答え4
次の文が効果があるようです。 TYPE、PTTYPE、LABEL、またはPARTLABELを含むブロックデバイス名を除くすべてのブロックデバイス名を印刷します。最後の2つは、ラベル付きアイテムがすでに使用されている可能性が高いためです。
grep -v
現在知られているファイルシステムタイプを除外するリストを使用するよりも、これはより良いアプローチであるようです。
blkid | awk -F': ' '!/ ((PT)?TYPE|(PART)?LABEL)="[^"]+"/ {print $1}'
注:結果ブロックデバイスのリストは次のとおりです。いいえ使用中のブロックデバイスに一般的なフラグがないことを除いて、いかなる方法でも使用は保証されません。彼らおそらく使用されていませんが、問題を調査するのに時間を費やすことなく、何らかの保証されたリストであると提案することはありません。
私のZFS On Linuxシステムの1つでは、次の出力が生成されます。
# blkid | awk -F': ' '!/ ((PT)?TYPE|(PART)?LABEL)="[^"]*"/ {print $1}'
/dev/sdb9
これはこのシステムにも当てはまります。 /dev/sdb9はいフォーマットされておらず、未使用のパーティションです。単一ディスクZFSプール用のディスクの末尾にある8MBのパーティション。 (これはテスト用のホームマシンです。他の作業にはミラー化されたドライブが必要ですが、まだ交換する時間がありませんでした。)
ところで、blkid
ランニングタイムはに比べて短いですlsblk
。たくさん表示しているブロックデバイスの種類を識別して識別するには、より多くの作業が必要です。
これは、数百のドライブ/ lvmメンバー/ zvolおよび他のブロックデバイスを持つサーバーでのみ目立つように見えることがあります。
たとえば、私が運営する中規模のサーバー(362のさまざまなブロックデバイスを含む)のうち、blkid
実行時間は約2分でlsblk
約0.09秒かかります。ブロックデバイスが39台しかない別の小規模システム(上記のホームテストボックス)では、0.01秒かかり、blkid
0.16秒かかりましたlsblk
。
このコマンドを繰り返し実行する必要があり、時間がかかりすぎる場合は、いつでもblkdid
一時的に出力をtmpfileにキャッシュできます。たとえば、キャッシュが存在しない場合、または30分より古い場合は、キャッシュファイル()を生成して入力などblkid > /path/to/blkid.cache
として使用します。awk