tune2fs를 사용하고 있지만 데이터를 블록 단위로 제공하므로 파티션의 총 크기에 대한 정확한 값을 얻을 수 없습니다.
나는 또한 사용 fdisk -l /dev/mmcblk0p1
했지만 여기에서 오는 크기는 다른 값입니다.
정확한 파티션 크기를 어떻게 찾을 수 있습니까?
tune2fs를 사용하고 있지만 데이터를 블록 단위로 제공하므로 파티션의 총 크기에 대한 정확한 값을 얻을 수 없습니다.
나는 또한 사용 fdisk -l /dev/mmcblk0p1
했지만 여기에서 오는 크기는 다른 값입니다.
정확한 파티션 크기를 어떻게 찾을 수 있습니까?
답변:
명령은 다음과 같습니다.
blockdev --getsize64 /dev/mmcblk0p1
64 비트 정수로 결과를 바이트 단위로 제공합니다. 커널이 크기를 볼 때 블록 장치 의 바이트 크기 를 쿼리합니다 .
fdisk -l /dev/mmcblk0p1
작동하지 않는 이유 는 fdisk
완전히 다른 것을 수행 했기 때문입니다. 블록 장치의 파티션 테이블 (= 첫 번째 섹터)을 읽고 찾은 것을 인쇄합니다 . 아무것도 점검하지 않고 파티션 테이블에있는 내용 만 표시합니다.
파티션 테이블이 손상되거나 블록 장치에없는 경우에도 신경 쓰지 않습니다. 체크섬이 양호하지 않다는 경고를 인쇄하지만 값이 명확하지 않은 경우에도 찾은 내용을 인쇄합니다 -감각.
이것은 당신의 경우에 일어난 일입니다 : 파티션 테이블 /dev/mmcblk0p1
이 없습니다 . 장치 이름에서 알 수 있듯이 장치는 이미 물리 디스크의 첫 번째 파티션입니다 /dev/mmcblk0
. 이 디스크에는 파티션 테이블이 포함되어 있습니다.이 디스크를 쿼리 한 경우 fdisk -l /dev/mmcblk0
작동했습니다 (msdos 파티션 테이블이 있다고 가정).
fdisk -l /dev/mmcblk0
않습니까? 한 블록의 크기, 장치의 총 블록 수, 파티션 크기 및 각 파티션의 시작 및 끝 블록을 알려줍니다. 해당 정보에서 파티션에 할당되지 않은 블록 범위를 알아낼 수도 있습니다.
파티션 실행의 전체 크기에 대한 정확한 값을 얻으려면 :
awk '{print $1*512}' /sys/class/block/mmcblk0p1/size
내 해결책 :
part_dev='/dev/hda2'
total_block=`tune2fs -l $part_dev | awk '/Block count/ {print $3}'`
block_size=`tune2fs -l $part_dev | awk '/Block size/ {print $3}'`
total_size=$(($total_block* $block_size))
echo $total_size
/dev/hda2
반드시 마운트되지 않은 파티션은 어디에 있습니까 ? tune2fs
버전 1.42.4 로 테스트되었습니다.