traduzindo dev253-10 para partição real no linux

0

Eu encontrei a seguinte saída de sar -d -f /var/log/sa/sa22 do meu rhel7.2 vm

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

Então eu tentei descobrir a partição do dev253-10 usando o dmsetup, mas não há 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)

Também tentou 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

mas não onde houver 253: 10.

Qual é o motivo e como posso encontrar isso?

    
por al mamun 24.03.2016 / 18:53

1 resposta

0

253-10 refere-se ao número maior e menor do dispositivo.

O modo mais fácil (mas menos confiável porque você deve nunca analisar ls ) descubra o que é:

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

(o + é porque haverá um número desconhecido, mas pelo menos um, de espaços entre a vírgula após o número principal e o menor)

Observe que, se o número principal / menor que você está procurando puder corresponder aos dispositivos de caracteres e de bloco, você terá duas linhas de saída. Como você sabe que está interessado apenas em dispositivos de bloco (porque você sabe que é uma partição de disco), é possível modificar o regexp para:

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

Eu não tenho nenhuma partição device-mapper no meu sistema, então eu vou usar dispositivos de loop (major 7, menores 0,16,32,48, etc) como um exemplo:

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

Outra alternativa é usar o GNU find , stat e grep . Ao contrário de ls , isso é confiável para análise porque você tem controle total sobre o formato de saída de stat . O problema é que o GNU stat só pode gerar números maiores e menores em hexadecimal, não em decimal. Portanto, você precisa converter o% decimal253 e 10 em hexadecimal fd e a .

A maioria dos aplicativos de calculadora no linux pode fazer essa conversão, e você pode até fazer isso da linha de comando bash com, por exemplo, printf '%x\n' 253

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

para o meu exemplo de dispositivo de loop, 7 decimal também é 7 hexadecimal, mas 16 decimal é 10 hex.

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

Isso seria muito mais simples (não exigiria stat ou grep ou converter decimal em hexadecimal) se você pudesse refinar a pesquisa de find por números maiores e menores do dispositivo (o mesmo que você pode por tamanho ou perms ou mtime etc), mas AFAICT de man find , não parece ter essa capacidade.

    
por 25.03.2016 / 02:12

Tags