![dev253-10을 Linux의 실제 파티션으로 변환](https://linux55.com/image/86198/dev253-10%EC%9D%84%20Linux%EC%9D%98%20%EC%8B%A4%EC%A0%9C%20%ED%8C%8C%ED%8B%B0%EC%85%98%EC%9C%BC%EB%A1%9C%20%EB%B3%80%ED%99%98.png)
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가 stat
10진수가 아닌 16진수로만 전공 및 학위 숫자를 출력할 수 있다는 것입니다. 따라서 10진수 합계를 16진수 합계 로 253
변환 해야 합니다 .10
fd
a
대부분의 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에서는 그렇지 않은 것 같습니다. 이 능력을 가지고 있습니다.find
man find