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 '

( +메이저 번호와 마이너 번호 뒤의 쉼표 사이에는 알 수 없는 수의 공백이 있지만 적어도 하나 이상 있기 때문입니다)

문자 장치와 블록 장치 모두와 일치하는 주/부 장치 번호를 검색하는 경우 두 줄의 출력이 표시됩니다. 블록 장치에만 관심이 있다는 것을 알고 있으므로(디스크 파티션이라는 것을 알고 있으므로) 정규식을 다음과 같이 수정할 수 있습니다.

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

관련 정보