파티션 장치 이름에서 블록 장치 이름을 얻는 방법은 무엇입니까? /dev/mmcblk0p1(추가에 유의하십시오 p)입니다. 선택

/dev/sda파티션 장치 이름 (예 :)이 주어진 부모 블록 장치 이름 (예 :)을 얻는 휴대용 방법을 찾고 /dev/sda1있습니다. 마지막 캐릭터를 버릴 수는 있지만 어떤 경우에는 작동하지 않습니다.

  • MMC 카드 리더기는 일반적으로 이름이 같은 /dev/mmcblk0반면 파티션의 이름은 /dev/mmcblk0p1(추가에 유의하십시오 p)입니다.
  • 선택 사항 : 일부 블록 장치에는 파티션 테이블이 없으며 단일 파티션으로 포맷됩니다. 이 경우 파티션 장치와 상위 블록 장치가 동일합니다.

LVM 볼륨은 완전히 다른 물고기 주전자입니다. 지금 지원할 필요는 없지만 고려할 때 약간의 추가 노력이 필요하면 괜찮습니다.



답변

리눅스를 사용한다면 lsblk(의 일부 util-linux)를 사용할 수 있습니다 :

lsblk -no pkname /dev/sda1

답변

장치가 다른 장치의 파티션 인 경우 (콘텐츠는 파티션 번호) /sys/class/block/$dev라는 파일이 포함됩니다 partition.

이 경우 다음을 사용하여 상위 장치의 이름을 얻을 수 있습니다.

basename "$(readlink -f "/sys/class/block/$dev/..")"

또는과 zsh:

echo /sys/class/block/$dev(:A:h:t)

예:

$ dev=sda1
$ basename "$(readlink -f "/sys/class/block/$dev/..")"
sda
$ dev=nbd0p1
$ basename "$(readlink -f "/sys/class/block/$dev/..")"
nbd0

LVM 볼륨은 완전히 다릅니다 . 물리적 PV의 연속적인 매핑 인 특별한 경우를 제외하고는 파티션 이 아닙니다 linear.

이 경우 PV를 사용하여 다음과 같은 이름을 얻을 수 있습니다.

ls "/sys/class/block/$dev/slaves"

어디 $dev같은 것입니다 dm-2(당신이에서 얻을 수있다 "$(basename "$(readlink -f /dev/VG/LV)")").