tune2fs를 사용하고 있지만 데이터를 청크로 제공하므로 파티션의 전체 크기에 대한 정확한 값을 얻을 수 없습니다.
나도 사용했지만 fdisk -l /dev/mmcblk0p1
여기에서 얻은 치수도 다른 값입니다.
정확한 파티션 크기를 찾는 방법은 무엇입니까?
답변1
명령은 다음과 같습니다:
blockdev --getsize64 /dev/mmcblk0p1
결과는 64비트 정수로 바이트 단위로 제공됩니다. 그것은 쿼리한다바이트 크기중 하나블록 장치, 커널이 크기를 확인하는 것처럼.
fdisk -l /dev/mmcblk0p1
작동하지 않는 이유 는 fdisk
완전히 다른 작업을 수행하기 때문입니다.블록 장치의 파티션 테이블(= 첫 번째 섹터)을 읽고 찾은 내용을 인쇄합니다.. 아무것도 확인하지 않고 파티션 테이블에 있는 내용만 확인합니다.
파티션 테이블이 손상되었거나 블록 장치에 파티션 테이블이 없으면 전혀 신경 쓰지 않습니다. 체크섬이 잘못되었다는 경고를 인쇄하지만 값이 다르더라도 찾은 내용을 계속 인쇄합니다. 분명히 잘못된 것 같습니다. 그런 느낌이 듭니다.
귀하의 경우에는 다음과 같은 일이 발생합니다./dev/mmcblk0p1
포함하지 않는다파티션 테이블. 장치 이름에서 알 수 있듯이 이는 이미 물리적 디스크의 첫 번째 파티션입니다 /dev/mmcblk0
. 디스크에는 파티션 테이블이 포함되어 있으며 쿼리하면 fdisk -l /dev/mmcblk0
이미 작동합니다(msdos 파티션 테이블이 있다고 가정).
답변2
시도해 보세요 lsblk
. 루트가 필요하지도 않습니다.
$ lsblk -b
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 34359738368 0 disk
├─xvda1 202:1 0 1676673024 0 part [SWAP]
└─xvda2 202:2 0 32682016768 0 part /var/spool
이 -b
매개변수는 출력 크기(바이트)를 알려줍니다.
답변3
전체 파티션 크기에 대한 정확한 값을 얻으려면 다음을 실행하십시오.
awk '{print $1*512}' /sys/class/block/mmcblk0p1/size
답변4
내 솔루션:
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에서 테스트 되었습니다.