4

Linux では、ディスク パーティションに関するほとんどの情報を取得するために blkid API を使用しています。パーティション名とそのドライブの間のマッピングを見つけることができる API が見つかりません。

たとえば、ディスク /dev/sda は /dev/sda1 と /dev/sda2 に分割されます。2 つのパーティション名が与えられた場合、それが同じドライブに由来するかどうかをどのように知ることができますか? 共通のプレフィックス (sda) を探すことで、それらが同じドライブに属しているかどうかを確認できます。しかし、これはばかげた証拠ですか?これはすべての場合に機能しますか? これがボリュームの一部である場合はどうなりますか? また、ドライブ名/ボリューム名 (「sda」) に数字を含めることはできますか?

このマッピングを決定する簡単な方法があるはずだと思います。

4

2 に答える 2

2

パーティションの親ディスクのカーネル名を取得する 2 つの方法を見つけました。

  1. 簡単な方法で、lsblkコマンドを使用して取得できます

    sudo lsblk /dev/sda1 -o SIZE,KNAME,PKNAME,MOUNTPOINT,FSTYPE

    オプション リストで PKNAME を指定すると、親デバイスのカーネル名が表示されます。

  2. 2 番目の方法は少しトリッキーです。udevadmnツールを使用して、親ディスク/デバイスの MINOR:MAJOR ペアを見つけ、接続されているデバイスの中から MAJOR:MINOR ペアを検索できます。

sudo udevadm info --query=property --name=/dev/sda1 | grep ID_PART_ENTRY_DISK

このリストは、Linux デバイス リストであり、Linux オペレーティング システムに割り当てられたデバイス番号と /dev ディレクトリ ノードの公式レジストリです。

于 2014-07-22T15:22:29.827 に答える