dev253-10をLinuxの物理パーティションに変換する

dev253-10をLinuxの物理パーティションに変換する

sar -d -f /var/log/sa/sa22私のrhel7.2仮想マシンの出力は次のとおりです。

09:30:01 PM dev253-10      0.03      0.00      1.25     39.37      0.09   2915.21    766.00      2.43

その後、dmsetupを使用してdev253-10のパーティションを見つけようとしましたが、253:10はありません。

docker-253:0-1159-1beb12cb313b06d439cc35e2cf4010133a24579dc90b6132239ea3d26c3c2bd9 (253:7)
 └─docker-253:0-1159-pool (253:4)
    ├─ (7:0)
    └─ (7:1)
rhel-swap (253:1)
 └─ (8:2)
rhel-root (253:0)
 └─ (8:2)
docker-253:0-1159-2bb8f2440697cb95e63a9633dc6ceffb0e8b553f8143b8f98332886f43767cb1 (253:6)
 └─docker-253:0-1159-pool (253:4)
    ├─ (7:0)
    └─ (7:1)
docker-253:0-1159-504a9bdece15050bcb895d0f6f2a9816f2105ca5bdc6324f95e755f85f8c5a2f (253:5)
 └─docker-253:0-1159-pool (253:4)
    ├─ (7:0)
    └─ (7:1)
rhel-lv_data1 (253:3)
 └─ (8:33)
rhel-lv_data0 (253:2)
 └─ (8:17)
docker-253:0-1159-84166572e8b53991f1d928db949a677d5cd3a8553d8e19d1845a1ef7056c18f8 (253:8)
 └─docker-253:0-1159-pool (253:4)
    ├─ (7:0)
    └─ (7:1)

また試みcat /proc/partitions

major minor  #blocks  name

   2        0          4 fd0
   8       16   52428800 sdb
   8       17   52427776 sdb1
   8       32  104857600 sdc
   8       33  104856576 sdc1
   8        0   25165824 sda
   8        1     512000 sda1
   8        2   24652800 sda2
  11        0    1048575 sr0
 253        0   16457728 dm-0
 253        1    8192000 dm-1
 253        2   52424704 dm-2
 253        3  104853504 dm-3
   7        0  104857600 loop0
   7        1    2097152 loop1
 253        4  104857600 dm-4
 253        5   10485760 dm-5
 253        6   10485760 dm-6
 253        7   10485760 dm-7
 253        8   10485760 dm-8

しかし、253:10はどこにもありません。

なぜですか?どうやって見つけることができますか?

ベストアンサー1

253-10 は、そのデバイスのメジャーデバイス番号とマイナーデバイス番号を示します。

最も簡単ですが、信頼性が最も低いです。lsを決して解析しないでください)それが何であるかを調べるには:

ls -l /dev/ | grep -E ' 253, +10 '

+メジャー番号とマイナー番号の後のカンマの間には不明な数のスペースがありますが、少なくとも1つ以上あるためです)

文字デバイスとブロックデバイスの両方に一致するメジャー/マイナーデバイス番号を検索すると、2行の出力が表示されます。ブロックデバイスにのみ興味があることを知っているので(ディスクパーティションであることを知っているので)、正規表現を次のように変更できます。

ls -l /dev/ | grep -E '^b.* 253, +10 '

私のシステムにはデバイスマッパーパーティションがないので、ラウンドロビンデバイス(7メジャー、マイナー0、16、32、48など)を例として使用します。

# ls -l /dev/ | grep -E '^b.* 7, +16 '
brw-rw----  1 root disk      7,  16 Mar 17 10:37 loop1

find別のオプションはGNU、、、およびstatを使用することですgrep。これとは異なり、lsこれはユーザーが完全な権限を持っているため、安全で信頼性の高い解析を可能にしますstat。問題は、GNUがstat10進数ではなく16進数でのみ専攻と度数を出力できることです。したがって、10進数の合計を16進数の合計に253変換する必要があります。10fda

ほとんどのLinux電卓アプリケーションはこの変換を実行でき、コマンドラインでも実行できますbash。たとえば、次のようになります。printf '%x\n' 253

find /dev -type b -exec stat -c '%t %T %n' {} + | grep -i '^fd a '

私のループデバイスの例では、10進数7も16進数7ですが、10進数16は16進数10です。

# find /dev -type b -exec stat -c '%t %T %n' {} + | grep -i '^7 10 '
7 10 /dev/loop1

デバイスのメジャー番号とマイナー番号(サイズ、権限、mtimeなどと同じ)で検索を細分化できる場合ははるかに簡単ですが(10進数を16進数にstat変換する必要はありませんgrep)、AFAICTではそうではありません。この能力を持っています。findman find

おすすめ記事